Observe ingest
Read this if ingest is running and you want to know what’s happening — what succeeded, what failed, whether a long run is making progress or actually stuck. OMem records every run in an events table; these commands read it.
See the current state
Section titled “See the current state”omem ingest status shows the active run (if any) plus the latest finished one:
The four outcomes
Section titled “The four outcomes”Those counters (ingest / cache / recur / fail) are the four outcomes every item ends in — worth recognizing:
| Counter | Outcome | Meaning |
|---|---|---|
ingest | ingested | New or changed — fully processed, LLM called. |
cache | curator_cache_hit | Unchanged since last time — no LLM call, page left as-is. Why re-runs are cheap. |
recur | recurated | Re-processed because the curation prompt version changed. |
fail | failed | Errored — see omem ingest errors. |
A run that’s mostly cache is OMem working efficiently, not doing nothing.
See past runs
Section titled “See past runs”omem ingest history is a table, one row per run:
Watch a run live
Section titled “Watch a run live”omem ingest watch tail-follows the events table — every phase of every item prints as a line the moment it happens, newest at the bottom (like tail -f). Press Ctrl+C to stop:
Each line is [timestamp] kind/source <phase> <status> <item> <elapsed>. You can filter to specific phases (--phase parse,curate) or one kind (--kind mail), and tune the poll interval (--poll 2). It’s the best way to see where a slow item is spending its time — watch which phase’s line is slow to arrive.
Investigate failures
Section titled “Investigate failures”omem ingest errors lists what failed, with the error message:
Failed items are retried automatically on the next run — so a transient blip (a rate-limit, a momentary read failure) resolves itself without you doing anything.
Drill into one item — without re-ingesting
Section titled “Drill into one item — without re-ingesting”omem ingest item <uri> traces one item’s history:
Stuck, or just slow?
Section titled “Stuck, or just slow?”If a run looks frozen, find out which it is before doing anything:
omem ingest watch— are new events still arriving? Then it’s working, just slow (a big PDF, a cold qmd model loading, a slow Loop fetch).omem log tail -f— follow the log live; add--grep <text>to filter.omem log errors --since 1h— recent errors across runs.
Cancel a wedged run
Section titled “Cancel a wedged run”If a run is genuinely stuck (not just slow), stop it:
omem ingest cancel # cancel the active run (asks to confirm)omem ingest cancel e8053467 # cancel a specific run by id prefixomem ingest cancel --all # cancel every active runCancel sends a graceful stop (SIGTERM) and falls back to a hard kill if needed (--force skips the grace period; --yes skips the confirmation). It’s safe: a cancelled run doesn’t advance its cursor for unfinished work, so the next scheduled run picks up exactly where it left off — nothing is lost or double-processed. This is the command to reach for when an ingest is blocking you and you’d rather restart it.
What’s next
Section titled “What’s next”- The ingest lifecycle — what the phases mean.
- Schedule ingest — automate it, then watch it here.