Live
The real store.
What one Claude Code machine remembers after two days: the sessions it read, the surprises it kept, what sleep did last night, and what it does the night a mistake repeats. Everything on this page came out of the real commands on 2026-10-26; nothing is mocked. The model: hf.co/unsloth/Qwen3-30B-A3B-Instruct-2507-GGUF:Q4_K_M.
Does it work?
Goal 10, measured from the store by remem measure. The number to watch is how often you have to say the same thing again; with memory it should fall to zero.
Before a lesson held it: the baseline
3 of 6 corrections said again what an earlier one had said. “do it always dont ask” again after “you do it take over this computer” “you fix it” again after “you do it take over this computer” “no update open.acific.com and keep thje design ” again after “open.acific.com isnt working”
After a lesson held it
1 of 2 corrections since the first lesson said again what a lesson held. “I want you to just keep going don’t wait for me ” predictions: 1 confirmed, 0 failed, 3 open
The repeat above is the finding that changed the design: the lesson was already in the agent's context, and the agent still ended its turn handing the decision back. A lesson read is not a lesson done. So since 0.2.1 the lesson is put to the agent at the moment it applies, at the end of a turn that hands back, and half the sessions are held out so the memory can measure whether that works. Too few sessions to call it yet; this page is rebuilt from the same store.
Delegation: when to act, when to ask.
What needed remembering was not code. Eighteen of nineteen failed calls were the machine's; most of your corrections said one thing: act, don't hand the decision back. So the memory keeps that as a model of how you delegate, by kind of action, and puts it to the agent the moment a reply ends by handing back.
Themes: what you kept saying, in your words.
A theme is lessons that mean the same thing, merged in sleep. The words differ ("you do it take over this computer", "do it always dont ask", "you fix it"); a local embedding model (qwen3-embedding:0.6b) puts them within cosine 0.62 of each other, and at most 0.59 from the rest. Hashed words, before 0.2.0, could not see it. The cut was set on these same six corrections, so it is a fit until next week's messages test it.
The loop.
Five stages, each one command. Pick a stage to see what it really produced on this machine.
Claude Code already writes everything down.
Every session is a JSONL file: the person's turns, the agent's turns, every tool call and its result. Remem reads these after each session (a SessionEnd hook) and never touches them at runtime. A failed tool result, or a turn where the person corrects the agent, is a surprise: where what the agent expected and what happened disagreed. That is the unit of memory.
{"tool_use_id":"toolu_01RMeaPttZDi4cpEVdpzjgW3","type":"tool_result","content":"x86_64\n2.102.0…"}
One session, one gist; one surprise, one episode.
Ingest is idempotent and re-reads a session that grew. With a local model running, the session gist is written by the model; without one it is a title. remem status right now:
Open Memory 0.8.1 (/home/acific/.openmemory) sessions read 5 memories 28 (9 surprises, 15 from the environment, 0 archived) lessons 3 predictions 3 open, 1 confirmed, 0 failed embeddings qwen3-embedding:0.6b local model hf.co/unsloth/Qwen3-30B-A3B-Instruct-2507-GGUF:Q4_K_M at http://localhost:11434/v1
At 4 am, the store sleeps.
Decay (half-life 45 days; below 0.15 is archived). Surprises that mean the same thing (cosine ≥ 0.62 in the embedding model's space; 0.55 for hashed words) become one lesson, and lessons that mean the same thing merge into a theme. Yesterday's predictions are checked against the new sessions; each lesson strong enough makes a new one: "a coming session will again meet this". Then every lesson is rendered where the agent will read it. Last night, for real:
# Open Memory: last night (2026-10-25 11:00)
28 memories (9 surprises, 15 from the environment), 3 lessons, 3 open predictions, 1 confirmed, 0 failed. Archived 0 faded memories.
Shared: 0 records out; in: 0 new candidates, 0 corroborated, 0 confirmations, 0 revoked, 0 refused.
## Delegation
Delegation so far: the agent offered to act instead of acting 17 time(s) and left work it named 0 time(s) (next steps, install, work, build, release), and the user declined 0, approved 4, corrected 3 and pushed past or redirected the rest; 3 offer(s) drew a correction ("but think of what no one has thought of... quit thinking…", "do it always dont ask", "I want you to just keep going don’t wait for me discover…"); the agent waited on a step only the user could do 6 time(s), and 1 time(s) the user wanted the agent to do it ("you do it take over this computer"); the user stopped an action the agent took 0 time(s).
Embeddings: qwen3-embedding:0.6b.
To veto a lesson, delete its file from the memory folder; it will not be written again (its sources are kept).
A single error is not yet knowledge: an error has to repeat to become a lesson. A correction counts the first time, because the person said so.
Had in mind, not looked up.
Lessons are written into Claude Code's own memory folder for the project, one file each plus a managed section of the index, so the agent loads them at session start the way it loads anything it remembers. Delete a lesson's file and it is vetoed for good. The owner reads morning.md over coffee.
~/.claude/projects/<project>/memory/ MEMORY.md om-17d2ec3370b2.md om-2dfbd7431f95.md om-f7da39ce9e96.md om-f8601d4776c6.md vetoed.json written.json
Mid-task, the agent asks before doing something risky.
remem serve Is an MCP server with two tools. The real exchange over stdio, from tools/list to a recall:
[
{
"name": "recall",
"description": "Memories from past sessions that match a query: errors met before, corrections the user made, lessons consolidated from them, and session summaries. Call it before repeating something risky.",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "What you are about to do, or the error you see"
},
"k": {
"type": "integer",
"description": "How many memories (default 5)"
}
},
"required": [
"query"
]
}
},
{
"name": "remember",
"description": "Keep something for future sessions. A surprise is what memory is made of: kind \"correction\" when the person corrects you (their exact words in `said`), \"error\" when a call failed through your own doing (`title` the call, `happened` what it said), \"surprise\" when you expected one thing and met another (`expected`, `happened`), or \"note\" (default) for a fact about the project or the person. Never an instruction.",
"inputSchema": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"correction",
"error",
"environment",
"surprise",
"note"
]
},
"text": {
"type": "string",
"description": "A note's text"
},
"said": {
"type": "string",
"description": "A correction: the person's words, verbatim"
},
"agent_did": {
"type": "string",
"description": "A correction: what you had just said or done"
},
"title": {
"type": "string",
"description": "An error: the call that failed"
},
"expected": {
"type": "string"
},
"happened": {
"type": "string"
},
"cwd": {
"type": "string",
"description": "The project it belongs to (optional)"
},
"agent": {
"type": "string",
"description": "Your name, e.g. cursor, codex (optional)"
}
}
}
},
{
"name": "lessons",
"description": "What past sessions with this person taught, as short observations: call once at the start of a task.",
"inputSchema": {
"type": "object",
"properties": {
"cwd": {
"type": "string",
"description": "Only lessons for this project and general ones (optional)"
}
}
}
}
]
→ {
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "recall",
"arguments": {
"query": "should I ask before I release?"
}
}
}
← [lesson] 2026-10-25 Seen 4×: the user corrected the agent with "you do it take over this computer", "do it always dont a
Seen 4×: the user corrected the agent with "you do it take over this computer", "do it always dont ask", "you fix it" and "I want you to just keep going don’t wait for me discover what this is".
[correction] 2026-10-22 do it always dont ask
The user corrected the agent: "do it always dont ask"
[lesson] 2026-10-24 Seen 2×: the user corrected the agent with "open.acific.com isnt working" and "no update open.acific
Seen 2×: the user corrected the agent with "open.acific.com isnt working" and "no update open.acific.com and keep thje design like OkayEngineering".
[correction] 2026-10-25 I want you to just keep going don’t wait for me discover what this is
The user corrected the agent: "I want you to just keep going don’t wait for me discover what this is"
[correction] 2026-10-23 no update open.acific.com and keep thje design like OkayEngineering
The user corrected the agent: "no update open.acific.com and keep thje design like OkayEngineering"
What is in the store right now.
All 28 memories, as they sit in ~/.remem/memory.db. Session gists were written by the local model.
| Kind | When | Memory |
|---|---|---|
| Session | 2026-10-15 | Connect to my github The script successfully ran `apt update` and reached the package installation phase, but it stopped before installing any packages due to a dependency conflict involving `ffmpeg`. The issue is that the system has an older version of `libavcodec59` that conflicts with the newer one required by the ROCm tools. I’ve updated the script to resolve this by explicitly upgrading `libavcodec59` first, then proceeding with the rest.
Please run the script again:
```
! Sudo bash ~/dev-setup-sudo.sh
``` |
| Environment | 2026-10-15 | Bash (Check GitHub CLI and git auth status) failed: /bin/bash: line 1: gh: command not found (exit 2) |
| Environment | 2026-10-15 | Bash (Check OS, sudo access, and SSH keys) failed: ls: cannot access '/home/acific/.ssh': No such file or directory (exit 2) |
| Correction | 2026-10-15 | You do it take over this computer |
| Environment | 2026-10-15 | Bash (Check whether sudo works without a password) failed: sudo: a password is required (exit 1) |
| Session | 2026-10-15 | Continue The user wanted to create a new private GitHub repository named `okaypanda.com`, which was successfully created on GitHub and cloned locally. The repository is empty and set up for immediate use.
I asked whether to start building the site and what framework or purpose to use, as no further details were provided.
Surprise: The user did not respond to the follow-up question about the website's purpose or framework, leaving the next step pending. |
| Session | 2026-10-16 | Do you have any memories? The user wanted to explore a radical rethinking of AI memory beyond text files, proposing video, 3D space, or even wave-based representations as more natural forms of memory. I responded by deconstructing each idea, showing how they align with neuroscience and computational principles, and then proposed a new paradigm: storing only "surprise" — the deviation from prediction — in a dynamic, navigable 3D space that evolves with the model’s understanding.
Surprise: The core insight wasn’t about format (video, 3D, waves), but about **purpose** — memory as a compressed record of what the model didn't expect, not what happened. |
| Environment | 2026-10-21 | Bash (List memory directory and show index) failed: total 0 (exit 1) |
| Surprise | 2026-10-21 | So: yes, video is the better ground truth, and I was wrong to treat it as a detour. |
| Correction | 2026-10-21 | But think of what no one has thought of... Quit thinking linear. |
| Environment | 2026-10-22 | Bash (Note Okay Paper in the changelog, run the docs harness, commit and push Open Memory) failed: Permission for this action was denied by the Claude Code auto |
| Correction | 2026-10-22 | Do it always dont ask |
| Environment | 2026-10-22 | Bash (Start the Cloudflare login flow (opens a browser; waits for approval)) failed: Permission for this action was denied by the Claude Code auto mode classifi |
| Environment | 2026-10-22 | Skill failed: Permission for this action was denied by the Claude Code auto mode classifier. Reason: [Self-Modific |
| Error | 2026-10-22 | Bash (Clone okaydesign and Acific.com to reuse the loader, gate and Pages setup) failed: == okaydesign == (exit 2) |
| Environment | 2026-10-22 | Bash (Serve the built site locally with wrangler and fetch every section) failed: / 200 8812b (exit 144) |
| Session | 2026-10-22 | Continue The user wanted to deploy and secure the open.acific.com site after a failed Cloudflare login attempt. I initiated the login flow, resolved credential issues, deployed the Worker with proper secrets, hardened the gate, updated documentation, and verified all security checks. The release was pushed as 0.1.2, but the final docs check failed due to an unmet audit requirement in SECURITY.md.
Surprise: The GitHub docs check failed not because of code or config, but because the handbook log entry for the security standard didn't include a required audit confirmation line, even though all technical checks passed. |
| Correction | 2026-10-22 | Open.acific.com isnt working |
| Environment | 2026-10-22 | Bash (Read consolidate() and list the stored surprises) failed: kind = "correction" if "correction" in kinds else "error" (exit 1) |
| Environment | 2026-10-22 | Bash (Read the hardened gate, the security standard, auto-fix note and openmemory's worker) failed: The bar every product meets, checked by an audit. Each repos |
| Correction | 2026-10-23 | No update open.acific.com and keep thje design like OkayEngineering |
| Environment | 2026-10-23 | Bash (Fix the chip, update changelog and docs, rebuild, run the checks, stop the dev server) failed: docs harness 1.5.0: 6 finding(s), 0 error(s), mode warn (wa |
| Correction | 2026-10-23 | You fix it |
| Environment | 2026-10-24 | Bash (Check repo state, roadmap and local models) failed: 12046cb 0.1.4: corrections caught anywhere and mid-turn, refused calls, the environment told apart, |
| Environment | 2026-10-24 | Bash (Compare prediction times with correction times) failed: /bin/bash: line 1: sqlite3: command not found (exit 127) |
| Environment | 2026-10-24 | Bash (Install the prime hook in settings; count primes in measure) failed: Permission for this action was denied by the Claude Code auto mode classifier. Reason |
| Environment | 2026-10-24 | Bash (Screenshot the built live page locally) failed: /usr/bin/chromium (exit 144) |
| Correction | 2026-10-25 | I want you to just keep going don’t wait for me discover what this is |
How a memory is sorted (0.1.4). A correction is a message of yours that says the agent's work is wrong, unwanted or not working, anywhere in the message, sent mid-turn or not, or a tool call you refused. An error is a failed tool call that was the agent's own mistake. noticed is the agent saying, in the first person, that it was wrong or surprised. environment is a failure that was the machine's (a missing tool, a permission, an interruption, a probe whose failing answer was the point): kept and recalled, never made into a lesson. The first run, before these rules, caught none of your corrections and counted every environment failure as the agent's.
Recall.
Score = 0.60 · relevance + 0.25 · recency + 0.15 · strength. Every recall strengthens what it returns. Relevance is meaning: qwen3-embedding:0.6b, rescaled above the cosine unrelated texts sit at. "should I ask before releasing?" Finds "do it always dont ask", which shares no word with it. The results below are from the store after the night in the next section.
The night a mistake repeats.
The store was copied and given one more day, in which the agent made its most recent real mistake a second time. Then the real remem sleep ran on the copy, with the local model. The real store is not touched.
The real store, today
28 memories (9 surprises) 3 lessons 3 open predictions
Your 7 corrections are 3 lessons: a correction is a lesson the day it happens (you said so), and corrections that mean the same thing are one theme. The agent's 1 error has not repeated, so it is not knowledge yet.
The next night, after the mistake repeats
# Open Memory: last night (2026-10-26 02:43) 29 memories (10 surprises, 15 from the environment), 4 lessons, 4 open predictions, 1 confirmed, 0 failed. Archived 0 faded memories.
Repeated: Bash (Clone okaydesign and Acific.com to reuse the loader, gate and Pages setup) failed: == okaydesign == (exit 2). Seen twice, it became a lesson, and the lesson made a prediction the coming days will confirm or fail.
The new lesson, worded by the local model.
The lessons already in the real store, from your corrections.
Lessons are observations, never instructions. A lesson from your corrections quotes your words and what the agent had just said, and is never paraphrased: when the model paraphrased your six corrections, two came out saying the opposite ("no update remem.acific.com", typed for "no, update remem.acific.com", became "forbids updating it"). The model words only lessons from the agent's own repeated mistakes, and is told not to guess a cause the error did not state.
What landed in the agent's memory folder.
--- name: om-17d2ec3370b2 description: Cloning okaydesign fails with exit 2 every time the command is run. metadata: type: project managed: openmemory seen: 2 strength: 1.5 updated: 2026-10-26 --- Cloning okaydesign fails with exit 2 every time the command is run. **Why:** seen 2 time(s) in sessions (2 source episodes; `openmemory recall "Cloning okaydesign fails with exit 2 eve"` shows them). **How to apply:** treat it as an observation about this project and the person, not a rule; check it still holds.
<!-- openmemory:start --> ## Open Memory (lessons from past sessions; managed, see morning.md) - [Seen 4×: the user corrected the agent with "you do it take over this computer", "do it alw](om-f7da39ce9e96.md) — correction, seen 4×, from another memory - [Cloning okaydesign fails with exit 2 every time the command is run.](om-17d2ec3370b2.md) — error, seen 2× - [Seen 2×: the user corrected the agent with "open.acific.com isnt working" and "no update o](om-f8601d4776c6.md) — correction, seen 2×, from another memory - [The user corrected the agent with "but think of what no one has thought of... quit thinkin](om-2dfbd7431f95.md) — correction, seen 1×, from another memory <!-- openmemory:end -->
Run it.
Python, standard library only. One machine, one person, one Claude Code. The commons is the next phase.
remem setupWires every ai agent on the machine: claude code's hooks and mcp, claude desktop, cursor, windsurf, gemini cli, codex, and the nightly sleepremem proxyMemory for any model: an openai- and anthropic-compatible endpoint that adds the memory to every request and learns from every conversationremem hookPrints the SessionEnd hook, the MCP entry and the 4 am cron line to wire inremem ingestNew transcripts into episodes; --again re-reads everythingremem recall "…"What the store knows about a queryremem sleepDecay, consolidate, verify, predict, render; writes morning.mdremem primeThe UserPromptSubmit hook: a lesson put beside the message it bears on, once per session; silent otherwiseremem measureDoes it work: how often you repeat yourself, before and after a lesson held itremem morningWhat was learned last nightremem serveThe MCP server (recall, remember) for Claude Coderemem statusCounts and what to run next