open source·local-first·MIT

Your agents run
on your machine.
Their memory should too.

MemOS keeps what an agent learns in a SQLite file. UMT connects the tools. Guardian keeps the prompt small. No account, no cloud, and no API key in the critical path.

$npm install @mem-os/sdk
memory index847 cards · local
storednewest first
  • #848Prefers dark mode in editors and terminals.
    preference · trust 0.92
  • #847Deploys on Fridays at 14:00 UTC.
    fact · trust 0.88
  • #812Uses pnpm, not npm.
    fact · trust 0.81
  • #794Based in Berlin.
    fact · superseded
~/memos/memos.db
recalled for

“What does the user prefer for editing?”

dark mode in editors and terminals
[mem:#848]
0.92
package manager: pnpm
[mem:#812]
0.81
deploy window: Friday 14:00 UTC
[mem:#847]
0.77
pack: 118 tokens3 of 847
the memory index, not a mockup
Works with
Hermes AgentClaude CodeKilo CodeCodexClineCursorZedMCP
the stack

Three layers.
One machine.

Each tool works on its own. Together they close the loop between what your agent remembers, what it can do, and what it costs.

figure 1 / one request path0 cloud hops
01 / caller
Your agent

Claude Code, Cursor, a script — any harness that speaks MCP or HTTP.

› what do I know about this user?
your machineno egress
02 / context core
MemOSmemory
UMTtools
Guardianbudget
sqlite~/memos/memos.db
03 / target
Any LLM

Local or hosted. It only sees the context you chose to send.

← 2,767 tokens · not 12,408
Figure 1 — Your agent reads and writes through ContextCore. MemOS supplies memory, UMT supplies tools, Guardian trims the prompt. The model only ever sees the result.

MemOS

persistent memory

Graph-native memory on local SQLite with temporal validity, trust scoring, and a compact context format.

#848prefers dark mode0.92
#847deploys on Fridays0.88
#812package manager: pnpm0.81
99.4% LongMemEval Hit@20Explore

Universal MCP Toolkit

tool transport

Registry, transport, and routing for MCP servers across every major client — one config, no glue scripts.

ollamaconnected
githubready
postgresready
28 servers · stdio + HTTP/SSEExplore

LLM Guardian

token control

Sits between your app and the provider: folds prompts, injects a token-budgeted memory pack, and enforces limits.

raw12,408
compressed2,767
80–95% prompt compressionExplore
the guarantee

Nothing leaves
this machine.

No sync daemon, no telemetry, no account. The database is a file, the models run locally, and the source is MIT.

01

One SQLite file

Back it up with cp. Delete it with rm. No export tool, no lock-in, no hosted copy.

02

No network calls

Retrieval, reranking, and compression run on your hardware. Zero API keys required.

03

MIT, all the way down

Fork it, audit it, ship it. No paid tier hiding the good features behind a plan.

0 bytes egress · 0 accounts · 0 API keysread the architecture →
evidence

Numbers,
with receipts.

Retrieval runs use direct evidence matching; the QA row uses an independent judge. Ties are reported as ties, and every figure traces back to a committed result file.

All benchmarks & methodology
LongMemEval-S · Hit@20
99.4%
500 questions · retrieval-only · nomic 768d
LoCoMo · Hit@10
65.0%
1,986 questions · local bge-small · repeatable
ConvoMem · Hit@10
91.0%
387 questions · all-MiniLM · local
End-to-end QA · 50q
78.0%
independent GLM-5.3 judge · 95% CI 66–88%
raw artifacts in repoupdated oct 2026
get started

Read the code.
Run the demo.
Keep the file.

No account, no trial, no usage meter. One command and a SQLite file that stays on your disk.

$npx -y @mem-os/sdk init --yes
~/agent — zsh● local
$ npm install @mem-os/sdk
$ npx -y @mem-os/sdk init --yes
✓ memos memory layer ready sqlite · ready
✓ umt 28 MCP servers registered stdio + http/sse
✓ guardian budget 12,408 → 2,767 tok -77.6%
● ready — 0 cloud calls, 0 api keys
$
fig. 2 / first runlocal only