ingest
SkillDocs & knowledgeBootstraps the memory store from existing material (repos, PDFs, transcripts). Use to seed memory from a project or document.
Available today. Use it from your connected AI after setup.
No other account needed.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the ingest skill
What this skill tells your AI
The instructions your AI receives, as published by fjwood69/mori in skills/ingest/SKILL.md and read by ahel’s review.
Filesystem mode (server-local paths)
- If the user passes
--status, callmori-ingest_statusand present the table. - If the user passes
--previewor--dry-runwith no source provided, remind them to provide--source <path>. - For
--preview: callmori-ingest_previewwith the--sourcepath(s) and any--typeor--sincearguments. Present the chunk breakdown and cost estimate. Remind the user this is zero-cost — no LLM was called. - For
--dry-run: callmori-ingestwithdry_run=trueand all provided arguments. Report what would be written and the actual cost incurred (the LLM was called, just nothing committed). - For a real ingestion run: call
mori-ingestwith all provided arguments. Report: sources processed, chunks sent, memories written, cost estimate, errors. - If errors occurred for specific files, report them individually.
- After successful ingestion, suggest running
/briefto reload shared memories so the new entries are visible. - For large or expensive-looking sources, suggest
/ingest --previewfirst to check before committing.
Content mode (remote clients — HTTP upload)
When the user passes --content <path>, upload the file directly to the mori-ingestion pod.
Do NOT use the mori-ingest_content MCP tool — it has been removed. Use HTTP multipart upload only.
Requires:
MORI_INGEST_URLenv var (set by installer — NOT derived fromMORI_URL)MORI_API_KEYenv var (same key as MCP auth)
Linux/macOS
JOB=$(curl -sf -X POST "${MORI_INGEST_URL}/api/ingest/upload" \
-H "X-Api-Key: ${MORI_API_KEY}" \
-F "files=@${path}" \
-F "focus=${focus}" \
-F "tier=${tier}" \
-F "tags=${tags}" \
-F "dry_run=${dry_run}")
JOB_ID=$(echo "$JOB" | python3 -c "import sys,json; print(json.load(sys.stdin)['job_id'])")
Windows (PowerShell)
$r = Invoke-RestMethod -Uri "$env:MORI_INGEST_URL/api/ingest/upload" `
-Method POST `
-Headers @{"X-Api-Key" = $env:MORI_API_KEY} `
-Form @{
files = Get-Item $path
focus = $focus
tier = $tier
tags = $tags
dry_run = $dry_run
}
$JOB_ID = $r.job_id
Polling (both platforms)
Poll every 5 seconds until status is complete or failed:
# Linux/macOS
while true; do
STATUS=$(curl -sf "${MORI_INGEST_URL}/api/ingest/job/${JOB_ID}" \
-H "X-Api-Key: ${MORI_API_KEY}")
STATE=$(echo "$STATUS" | python3 -c "import sys,json; print(json.load(sys.stdin)['status'])")
[ "$STATE" = "complete" ] || [ "$STATE" = "failed" ] && break
sleep 5
done
echo "$STATUS"
# Windows
do {
$status = Invoke-RestMethod -Uri "$env:MORI_INGEST_URL/api/ingest/job/$JOB_ID" `
-Headers @{"X-Api-Key" = $env:MORI_API_KEY}
if ($status.status -notin "queued","running") { break }
Start-Sleep 5
} while ($true)
$status
Report: memories written, estimated cost, errors. After success, suggest /brief to reload shared memories.
Error handling
MORI_INGEST_URLnot set → tell user to set it (e.g.http://localhost:8969) and re-run- HTTP 413 → file too large (50MB/file, 200MB total)
- HTTP 401 → API key mismatch — check
MORI_API_KEY - status
failed→ reporterrorsfield from job response
Argument mapping
| User flag | Action |
|---|---|
--source <path> (repeatable) | mori-ingest MCP tool → source list |
--content <path> | HTTP multipart upload to MORI_INGEST_URL |
--type <type> | type (auto, transcripts, git, docs, image) |
--focus <area> | focus (all, decisions, architecture, conventions, gotchas) |
--tier <tier> | tier (working, canonical, ephemeral) |
--tags <tags> | tags (comma-separated string) |
--since <duration> | since (e.g. "30d", "90d") — filesystem mode only |
--dry-run | dry_run=true |
--force | force=true |
--max-cost <amount> | max_cost (float, USD) — filesystem mode only |
--preview | call mori-ingest_preview instead of mori-ingest |
--status | call mori-ingest_status |
Signals
- GitHub stars
- 28
- Forks
- 5
- Last commit
- Sep 2026
Advanced
- Item type
- skill
- Key
ingest-fjwood69- Source
- github.com/fjwood69/mori