short for logothete: your personal scribe
v0.5.4 · Apache 2.0 · local-first

short for logothete: your personal scribe

Your memory. Any agent. One vault of markdown on your own disk. Claude Code writes to it, Cursor reads from it, Codex picks up where both stopped — and none of them owns it.

$ brew install coder8124/tap/logos-mcp
$ logos setup

macOS and Linux. Setup shows what it would write to each agent and changes nothing until you say yes.
Windows: npx -y @noeton/logos setup

Works with
  • Claude Code
  • Cursor
  • Codex
  • Claude Desktop
  • VS Code
  • Zed
  • Cline
  • your own agent

Setup wires the first four and proves each one with a real store-then-recall. The rest take one block of JSON.

logos demo three agents, one vault — lines from a real run
claude code
  > "staging runs on port 8080"
  ✓ Logos · stored in logos — memory #1

cursor
  > "we moved staging to port 9090"
  ✓ Logos · stored in logos — memory #2
  ✓ Logos · 1 memory superseded — the old value is now history

codex
  > context("deploy to staging")
  - fact: Staging runs on port 9090.  (demo, 2 Sep 2026, confidence 0.90)

logos memory log
  superseded  #1  Staging runs on port 8080. → #2

Run it against a scratch vault, nothing of yours touched: npx -y @noeton/logos demo

Features

Continuity, not just retrieval. Every memory tool can find a fact. Logos makes sure the next agent gets the right one.

Consolidation

Old values are withheld, not ranked lower

When a fact changes, the stale one stops coming back, and why it was superseded goes on the record.

logos memory log
Handoff

Dead ends travel between agents

A checkpoint carries what was verified, what failed and what is next.

/handoff · resume
Cold start

Useful before you teach it anything

Reads your git history and proposes what it can defend, each with the command behind it.

logos bootstrap --dry-run
Ownership

Markdown you can grep and commit

The vault is truth; the SQLite index is a cache. Delete it and it rebuilds from the files.

~/logos/**/*.md
Receipts

You can see it working

Every change to what the agent knows says so in one line, in the host you are already looking at.

LOGOS_ANNOUNCE=quiet
Scope

One vault, one project per folder

The project comes from the directory the agent works in, so two repositories never cross.

~/code/kestrel → project "kestrel"

Handoff

What one agent wrote, and what the next one got. Both panes are real files from this project’s own vault.

written by claude code sessions/logos/…-claude.md
---
type: checkpoint
project: logos
agent: claude
branch: feat/bench-temporal
commit: a5e72a2
uncommitted: 2
checkpointed: 2026-09-01T08:57:24-07:00
---

## Didn't work

- publishing under the unscoped name
  'logos' — taken on npm at 1.0.4
- claiming the @logos scope — the org
  already exists, not ours to take
read back by cursor 1 day later
# Context for: resume work on logos

Last checkpoint by claude, 1d ago.

Repository was: feat/bench-temporal
a5e72a2 · 2 files uncommitted

Already tried, didn't work:
- publishing under the unscoped name
  'logos' — taken on npm at 1.0.4
- claiming the @logos scope — the org
  already exists, not ours to take

_Context budget: ~284 of 4000 tokens._

An agent that has never seen your project does not spend an hour rediscovering what last week’s agent already paid for.

Community

From the people testing it. Beta testers, unnamed at their own request.

Logos helped save me over 22× tokens.

Measured at the resume moment: a 717-line, ~9,000-token STATE.md against a 34-line, ~400-token checkpoint of the same project.

Anon15 years oldBeta tester
Logos helped me completely migrate from Claude to Copilot following internal switch-ups. Couldn’t be happier.
AnonSenior developerBeta tester

Benchmark

Don’t take my numbers for it. I wrote the benchmark and the system that wins it. It runs on your machine in one command, so check it yourself first.

$ go run ./cmd/logos bench continuity --logos-only

32 handoff scenarios. One passes only if the next agent gets the current fact, without the stale one beside it, in a token budget it did not choose. Here is what it printed for me:

84.4%handoff pass rate · next best 46.9%
16.7%stale facts leaked · next best 58.3%
0 MBof model required
SystemPass ratePassCarryLeakSignal
Logos84.4%89.1%16.7%88.9%
mempalace46.9%82.8%58.3%22.2%
recency-window46.9%84.4%83.3%22.2%
full-dump46.9%84.4%83.3%22.2%
letta43.8%82.8%83.3%22.2%
mem043.8%82.8%83.3%22.2%
vector-rag43.8%82.8%83.3%22.2%
static-file6.2%22.7%0.0%0.0%
no memory0.0%6.2%0.0%0.0%

Carry is required facts retrieved; Leak is superseded facts returned anyway, lower is better; Signal is telling the next agent something was already tried. It loses too, and those rows stay in: arithmetic, recency-conflict and multi-hop are all 0%.

Drop --logos-only to run every rival too; that one needs their API keys, this one needs only Ollama. Scenarios, scoring and every adapter setting.

Install

Pick how you work. Every route installs the same single binary and points every agent at the same vault.

macOS and Linux. The formula is logos-mcp, because Homebrew already has a logos; the command it installs is still logos.

  1. $ brew install coder8124/tap/logos-mcp
  2. $ logos setup

Update with brew upgrade logos-mcp, not logos update — hosts are wired to brew’s opt path, which survives the upgrade.

Windows, or anywhere without Homebrew. Needs only Node. --dry-run prints the plan and exits.

$ npx -y @noeton/logos setup

Deep links that hand the host a finished config. Nothing else to edit.

Zed, Cline, Windsurf, Continue, Gemini CLI or your own agent. npx resolves the binary on demand, so the config is portable between machines.

{
  "mcpServers": {
    "logos": {
      "command": "npx",
      "args": ["-y", "@noeton/logos", "mcp", "serve"]
    }
  }
}

Add "env": { "LOGOS_VAULT": "/path/to/vault" } to keep the vault somewhere other than ~/logos.

One static executable, pure Go with CGO_ENABLED=0, so a single Linux build covers glibc and musl alike.

PlatformArchiveSize
macOS · Apple siliconlogos_v0.5.4_darwin_arm64.tar.gz5.6 MB
macOS · Intellogos_v0.5.4_darwin_amd64.tar.gz5.9 MB
Linux · x86-64logos_v0.5.4_linux_amd64.tar.gz5.9 MB
Linux · arm64logos_v0.5.4_linux_arm64.tar.gz5.4 MB
Windows · x86-64logos_v0.5.4_windows_amd64.zip6.0 MB

Verify against SHA256SUMS · with Go: go install github.com/Coder8124/logos/cmd/logos@latest

logos setup already installs this in Claude Code, with the SessionStart hook that puts the last handoff in front of the model before it does anything. Run these yourself only if you would rather setup left Claude Code alone — after installing logos, because the plugin runs the binary rather than carrying one.

  1. / plugin marketplace add Coder8124/logos
  2. / plugin install logos@logos

Private by design

What installing does to your machine.

  • A directory of markdownAt ~/logos unless you say otherwise. Open it, grep it, commit it, delete it.
  • Nothing wired without a yesSetup lists the agents it found and what it would write to each before touching anything.
  • Agents propose, you acceptA memory written over MCP waits in a review queue — logos review accepts or rejects it.
  • No account, server or telemetryNothing leaves the machine. .logos/index.db is a cache that rebuilds from the files.
  • No AI runtime requiredCheckpoint, resume and dead ends are markdown and SQL. A 274 MB model adds semantic recall if you want it.
  • No postinstall scriptThe binary ships as real package contents, so --ignore-scripts and offline installs work.

Give your next agent a memory.

$ brew install coder8124/tap/logos-mcp
$ logos setup