Live
The real store.
What one Claude Code machine remembers: 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-11-14; nothing is mocked. 36 memories that name the owner's other work are left out; every command ran on the rest, and last night's report counts the whole store. The model: hf.co/unsloth/Qwen3-30B-A3B-Instruct-2507-GGUF:Q4_K_M.
Does it work?
Goal 10, measured from the store by everist 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
2 of 7 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”
After a lesson held it
4 of 5 corrections since the first lesson said again what a lesson held. “I want you to just keep going don’t wait for me ” “you do it” “Can you do it” “You do it” predictions: 2 confirmed, 1 failed, 2 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. Everist 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. everist status right now:
Everist 0.10.0 (~/.everist) sessions read 10 memories 50 (15 surprises, 29 from the environment, 0 archived) lessons 3 predictions 2 open, 2 confirmed, 1 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:
# Remem: last night (2026-11-14 12:00)
86 memories (25 surprises, 43 from the environment), 7 lessons, 6 open predictions, 3 confirmed, 1 failed. Archived 0 faded memories.
Shared: 2 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 30 time(s) and left work it named 10 time(s) (install, work, build, release, next steps, git, delete), and the user declined 0, approved 7, corrected 10 and pushed past or redirected the rest; 5 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…", "You do it! Make it to where open memory is the memory for ai"); the agent waited on a step only the user could do 8 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 vetoed.json written.json
Mid-task, the agent asks before doing something risky.
everist 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-11-12 Seen 9×: the user corrected the agent with "you do it take over this computer", "do it always dont a
Seen 9×: 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".
[lesson] 2026-11-14 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".
[lesson] 2026-11-14 After npm run deploy, the live site returns HTTP Error 403: Forbidden when accessed.
After npm run deploy, the live site returns HTTP Error 403: Forbidden when accessed.
[correction] 2026-10-22 do it always dont ask
The user corrected the agent: "do it always dont ask"
[session] 2026-11-07 Reply with exactly: harness-ok
harness-ok
What is in the store right now.
All 50 memories, as they sit in ~/.everist/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) |
| 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. |
| 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) |
| 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 |
| Correction | 2026-10-25 | You do it! Make it to where open memory is the memory for ai |
| Environment | 2026-10-25 | Bash (Add the three Open Memory hooks to Claude Code settings (user asked)) failed: Permission for this action was denied by the Claude Code auto mode classifie |
| Correction | 2026-10-25 | You do it |
| Environment | 2026-10-25 | Bash (Add the end-of-turn reminder to the proxy; test with Qwen forced to offer) failed: 25 passed in 0.11s (exit 144) |
| Correction | 2026-10-25 | Can you do it |
| Error | 2026-10-25 | Bash (Release 0.6.1: test, install, snapshot, deploy, commit, push, log, then run the release check) failed: ✗ live site serves it (npm run deploy) |
| Surprise | 2026-10-25 | - **What I missed:** releases 0.3.0 through 0.6.0 all reported themselves as version 0.2.3. |
| Environment | 2026-10-25 | Bash (Check the model downloads) failed: <tool_use_error>Blocked: sleep 60 followed by: cat /tmp/claude-1001/-home-acific/4f5227c5-8910-4156- |
| Correction | 2026-10-25 | You do it |
| Environment | 2026-10-25 | Bash (Check experiment progress) failed: total 416 (exit 1) |
| Environment | 2026-10-25 | Bash (Check derived-arm progress) failed: /tmp/claude-1001/-home-acific/4f5227c5-8910-4156-ab1e-5db243e49525/scratchpad/derived-gemma3_4b.log |
| Environment | 2026-10-25 | Bash (Check rerun progress) failed: /tmp/claude-1001/-home-acific/4f5227c5-8910-4156-ab1e-5db243e49525/scratchpad/boundary2-llama3.2_3b. |
| Environment | 2026-10-25 | Bash (Check table rows end correctly) failed: rev: fgetwc() failed: Invalid or incomplete multibyte or wide character (exit 1) |
| Session | 2026-10-26 | Connect GitHub Asked: Connect GitHub Did: Bash×2 Errors: 0. Corrections: 0. Ended: GitHub was already connected here, so I didn't change anything. What I checked: - **`gh` CLI:** logged in as `Acific` on github.com, using the keyring token. The token can work with repos and workflows (`repo`, `workflow`, `read:org`, `gis |
| Environment | 2026-10-26 | Bash (Install the local daily docs audit script and cron entry) failed: Permission for this action was denied by the Claude Code auto mode classifier. Reason: [ |
| Environment | 2026-10-26 | Bash (Read the adapter script and count pairs) failed: "Image uploads over 5 MB fail with a vague error; the limit should be stated in the message.", (exit |
| Environment | 2026-10-26 | Bash (Check download progress after a few minutes) failed: <tool_use_error>Blocked: sleep 240 followed by: tail -c 600 /tmp/claude-1001/-home-acific/4f5227c5-8 |
| Environment | 2026-10-26 | Bash (Add the daily 6am docs audit to crontab, as the user asked) failed: Permission for this action was denied by the Claude Code auto mode classifier. Reason: |
| Session | 2026-11-07 | Reply with exactly: harness-ok Harness-ok |
| Session | 2026-11-07 | Rename this machine to a-halo002 The user wanted to rename their machine to a-halo001, which was successfully completed using hostnamectl. The change persisted across reboots and was confirmed via multiple commands. The machine name was verified as a-halo001.
Surprise: none. |
| Environment | 2026-11-07 | Bash (Set the machine hostname to a-halo002) failed: sudo: a password is required (exit 1) |
| Session | 2026-11-08 | Can you update The user wanted system updates, including security patches and firmware fixes. I checked for available updates and listed pending system packages, firmware, and the latest Claude Code version, but couldn't install them without a password. The session ended with an error due to an invalid `ls` flag, likely from a misused command.
Surprise: none. |
| Environment | 2026-11-08 | Bash (Find recent sessions and show last messages) failed: ls: invalid option -- 'e' (exit 1) |
| Session | 2026-11-08 | Setuppp ythhios computerfor developer The user wanted a developer environment set up on their computer, with tools like bun, deno, zoxide, just, and Python versions installed. I verified existing installations, resolved missing tools via package managers, and confirmed SQLite and PostgreSQL were available. The final step—cleaning up `.bashrc`—was blocked by a permission guard, so I paused and reported the status.
Surprise: The system already had most developer tools pre-installed, making the setup significantly faster than expected. |
| Environment | 2026-11-08 | Bash (Install bun, deno, zoxide, just, Python versions; set git defaults) failed: Permission for this action was denied by the Claude Code auto mode classifier. |
| Environment | 2026-11-08 | Bash (Consolidate bashrc PATH and verify tools in fresh shell) failed: Permission for this action was denied by the Claude Code auto mode classifier. Reason: [U |
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 everist sleep ran on the copy, with the local model. The real store is not touched.
The real store, today
50 memories (15 surprises) 3 lessons 2 open predictions
Your 11 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 2 errors have not repeated, so they are not knowledge yet.
The next night, after the mistake repeats
# Everist: last night (2026-11-14 23:09) 51 memories (16 surprises, 29 from the environment), 5 lessons, 5 open predictions, 2 confirmed, 1 failed. Archived 0 faded memories.
Repeated: Bash (Release 0.6.1: test, install, snapshot, deploy, commit, push, log, then run the release check) failed: ✗ live site serves it (npm run deploy) . 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 open.acific.com", typed for "no, update open.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.
<!-- everist:start --> ## Everist (lessons from past sessions; managed, see morning.md) <!-- everist:end -->
Run it.
Python, standard library only. One machine, one person, one Claude Code. The commons is the next phase.
everist setupWires every ai agent on the machine: claude code's hooks and mcp, claude desktop, cursor, windsurf, gemini cli, codex, and the nightly sleepeverist proxyMemory for any model: an openai- and anthropic-compatible endpoint that adds the memory to every request and learns from every conversationeverist hookPrints the SessionEnd hook, the MCP entry and the 4 am cron line to wire ineverist ingestNew transcripts into episodes; --again re-reads everythingeverist recall "…"What the store knows about a queryeverist sleepDecay, consolidate, verify, predict, render; writes morning.mdeverist primeThe UserPromptSubmit hook: a lesson put beside the message it bears on, once per session; silent otherwiseeverist measureDoes it work: how often you repeat yourself, before and after a lesson held iteverist morningWhat was learned last nighteverist serveThe MCP server (recall, remember) for Claude Codeeverist statusCounts and what to run next