DEV Community

Everest An
Everest An

Posted on

A local-first memory daemon for AI agents: SQLite + ONNX, zero API calls

Cloud memory tiers have a fundamental problem: your agent context - the most sensitive data you have - leaves your machine. I wanted memory that never does.

So Awareness runs a local-first daemon:

npx @awareness.market/local start
Enter fullscreen mode Exit fullscreen mode

No account. No API key. No cloud. SQLite + ONNX embeddings on your machine, served to Claude Code, Cursor, or any MCP client on localhost.

What the daemon gives you

Storage SQLite, human-readable, yours forever
Embeddings all-MiniLM-L6-v2 as ONNX (23MB) - zero API calls
Retrieval hybrid BM25 + vector RRF - 1.7s per query on an M1 8GB
Memory types knowledge cards, bi-temporal facts, conflict detection
Upgrade path optional cloud sync to pgvector when you want team sharing

Why local matters more than you think

Three things a cloud memory tier can never give you:

  1. No vendor risk. The provider cannot deprecate your workflow, raise your price, or read your context.
  2. No token billing surprises. Retrieval is deterministic compute - the same query costs the same every time, forever.
  3. Cross-tool continuity. One local daemon serves Claude Code, Cursor, Windsurf and anything that speaks MCP - the memory is shared, not siloed per vendor.

The honest numbers

95.6% recall@5 on LongMemEval_S, on an M1 with 8GB RAM and zero LLM calls at retrieval. Two competitors edge us by ~1 point on recall, running hosted stacks. Full methodology with the tables we do not win:

https://awareness.market/benchmarks

When cloud is still right

Local-first does not mean local-only. Burst inference, team-shared memories, and cross-device sync are real needs - the daemon upgrades to cloud (pgvector) with one command when you need it. The point is that local is the default, not the fallback.

Repo and SDK: https://github.com/everest-an/Awareness

What would make you switch your agent memory to local-first?

Top comments (1)

Collapse
 
triumph1701 profile image
Triumph

Local-first is compelling, but the memory boundary matters as much as storage. I’d make promotion from raw traces to durable policy explicit and reviewable, with provenance and expiry on each promoted item. Otherwise one mistaken correction can become shared context that every agent treats as ground truth.