Edith serves your notes to Claude over MCP, and hosts that server inside the app. So a tool call and the glow are the same tick. A search dimly lights every note Claude considered. Opening one brightly lights the note it actually used. Then it all fades over thirty seconds: long enough to notice, short enough to stay honest.
youthe dev server says the port is already in use again
claudesearch_brain "port already in use"5 considered
clauderead_note dynamic-port-bindingopened
claudeWe have been here before. Last time the fix was to bind the next free port and rewrite the MCP config to match. First I will check for a server left over from an earlier run.
claudesave_note stale-server-cleanupsaved
A replay against the demo vault in this page. In the app, it is your own session. Watch the graph while it runs.
Ask Claude to review my recent sessions and save anything worth keeping. It reads your transcripts, works out what was learned, and writes the notes back. Edith runs no inference of its own to fill the brain, so there is no API key and no account. Claude reads and writes your notes through its own session, on the plan you already pay for. Edith is the store and the canvas.
youreview my recent sessions and save anything worth keeping
claudelist_sessions12 sessions, 9 captured
clauderead_session the 3 not yet capturedread
claudesave_note transcripts-are-treessaved
claudesave_note most-jsonl-are-not-sessionssaved
claudesave_note atomic-config-writessaved
claudeSaved three notes and linked them to what was already here.
Another replay, with demo numbers. Each save puts a new note into the brain.
Minimise Edith and it becomes a narrow panel docked to the left edge of your screen, drawing your brain and lighting the notes Claude reaches for. It never takes focus. Fold it to a strip the width of its rail, or shrink it to a small square in the corner.
This page is doing the same thing. The graph beside this note is the live view, drawn by the app’s own renderer. Hover a link and its note lights up, along with the road it is about to travel.
Your notes are plain files on your Mac. The files are the source of truth: edit them in any editor, and if you delete the search index it rebuilds. Bring your own files too. A Markdown vault keeps its ids and links. And every note records the sessions it came from.
When Claude reaches into the brain, you see exactly where it reached.
A search dimly glows what Claude considered. Opening a note brightly glows what it actually used. Saving one sends a ripple out from the new note. Highlights fade over thirty seconds.
Edith hosts the MCP server itself rather than spawning it. Every tool call emits an event straight to the renderer, which is why the light is instant.
Ask review my recent sessions and save anything worth keeping. Claude reads your transcripts with list_sessions and read_session, then writes the notes back with save_note.
Underneath, five things happen.
Stage
What happens
Watch
Edith watches ~/.claude/projects, waiting for a session to go quiet
Parse
The transcript becomes one canonical session, with abandoned branches skipped
Store
Markdown with YAML frontmatter, indexed in SQLite FTS5
Serve
An MCP server inside the app, over local HTTP
Light up
Every tool call emits an event straight to the renderer
Claude reads and writes your notes through its own session, on the plan you already pay for. Edith is the store and the canvas. It never calls a model to fill the brain, and there is nothing to sign up for.
There is one optional exception. When you import your own files you can ask Edith to distil them into concepts. That makes one API call, on an Anthropic API key of your own that you add in Edith and that is stored locally. Keeping files as written makes no call, and nothing else in Edith ever asks for a key.
Minimise Edith and it becomes a narrow panel docked to the left edge of the screen, drawing your brain and lighting up the notes Claude reaches for. The window and the panel are never up at the same time.
It never takes focus. It folds to a strip the width of the rail, or shrinks to a small square in the corner. Both are just the live graph.
With the window closed or minimised, the panel also opens on its own when a Claude session starts, and stays closed for the rest of a session once you close it. You can turn the automatic opening off under Connection.
A note is a Markdown file with YAML frontmatter. Files on disk are the source of truth. They live in ~/Library/Application Support/Edith/vault, and you can edit them in any editor.
The frontmatter carries an id, a title, a type, when the note was created and updated, where it originated, the sessions it came from, and the notes it links to. The body is whatever was worth keeping. This page is laid out the same way.
Add content imports .md, .markdown, .txt and .mdx files, or anything you paste. Files keep their existing frontmatter, so importing a Markdown vault preserves ids and links instead of duplicating notes.
Mode
What it does
API calls
Keep as written
Stores the file or text verbatim as a note
none
Distil into concepts
Runs the same extraction used on sessions
one
Distilling is the only thing in Edith that calls a model on its own. It is optional, and it runs on an Anthropic API key of your own, stored locally. Re-importing a file deepens the existing note rather than creating a duplicate, so syncing a folder repeatedly is safe.
On first launch, outside its own folder, Edith adds four things. Nothing else.
What
Where
Its server entry, so Claude can reach the brain
~/.claude.json, plus Claude Desktop’s config if you have it
A session-start hook that tells Claude the brain exists
~/.claude/settings.json
The /edith command
~/.claude/skills/edith
A handful of starter skills
~/.claude/skills/, managed from the Skills panel
Your config is safe. Registration merges a single key into ~/.claude.json, writes atomically, and backs the file up before the first modification. Your notes are plain Markdown in ~/Library/Application Support/Edith/vault.
Edith is source-available under the Functional Source License, Version 1.1, MIT Future License (FSL-1.1-MIT).
You can read, use, modify and share it for anything except offering it, or something substantially similar, as a competing commercial product or service. Each release becomes MIT-licensed two years after it is published.
The shape is the Aizawa attractor: a swirling disc threaded onto a vertical column, with particles that occasionally ride up the polar axis and dive back down the outside. It reads three-dimensional from every angle, and it exists only as motion.
ẋ = (z − b)x − dyẏ = dx + (z − b)yż = c + az − z3/3 − (x2 + y2)(1 + ez) + fzx3
With a = 0.95, b = 0.7, c = 0.6, d = 3.5, e = 0.25 and f = 0.1. In the app, about 5,200 anonymous motes give the shape its body, and every note is a named particle riding the same flow. Drag one away and the attractor reclaims it.