Skip to content

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.

omem ingest status shows the active run (if any) plus the latest finished one:

$

Those counters (ingest / cache / recur / fail) are the four outcomes every item ends in — worth recognizing:

CounterOutcomeMeaning
ingestingestedNew or changed — fully processed, LLM called.
cachecurator_cache_hitUnchanged since last time — no LLM call, page left as-is. Why re-runs are cheap.
recurrecuratedRe-processed because the curation prompt version changed.
failfailedErrored — see omem ingest errors.

A run that’s mostly cache is OMem working efficiently, not doing nothing.

omem ingest history is a table, one row per run:

$

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.

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:

$

If a run looks frozen, find out which it is before doing anything:

  1. 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).
  2. omem log tail -f — follow the log live; add --grep <text> to filter.
  3. omem log errors --since 1h — recent errors across runs.

If a run is genuinely stuck (not just slow), stop it:

Terminal window
omem ingest cancel # cancel the active run (asks to confirm)
omem ingest cancel e8053467 # cancel a specific run by id prefix
omem ingest cancel --all # cancel every active run

Cancel 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.