Download

A second brain for AI.

Your AI forgets between chats, so you re-explain the same decisions. Edith gives it a memory it maintains itself: it reads its past sessions, distils them into linked Markdown notes, and searches them in later chats while you watch the retrieval on a live graph.

Download for macOS No account, no API key · v0.1.0 · Apple Silicon · needs Claude Code

Claudein your editor or terminal
EdithSecond Brain
◈ EDITH · · 3 matches for “port”

  ▓▓▓▓▓  dynamic-port-binding
  ▓▓▓░░  mcp-registration
Edith answers inside the chat, in your AI’s own tool calls.

Why a chat gets worse as it goes

At the start, your AI knows what you decided and why. An hour later it is working from a summary of a summary: the reasoning is gone, and it suggests the approach you already threw out. Open a new chat and even that is gone, so you explain your project from scratch, again.

Edith gives it somewhere to put all that. What you decided, what broke, what you agreed not to do: written down as you work, and read back when it matters.

  1. startwe use the next free port, never a fixed one
  2. 20 minthe config is rewritten to match
  3. an hour… something about ports?
  4. new chatso, what does this project do?
Without a brain, this is the shape of every long session.

Watch it remember

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.

  1. you the dev server says the port is already in use again
  2. claude search_brain "port already in use"
  3. edith ◈ EDITH · 5 matches for “port already in use” dynamic-port-binding mcp-registration in-process-mcp read_note <id> for the full text.
  4. claude read_note dynamic-port-binding
  5. edith ◈ EDITH · dynamic-port-binding ✦ Dynamic Port Binding
  6. claude We 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.
  7. claude save_note stale-server-cleanup
  8. edith ◈ EDITH · note saved ✦ stale-server-cleanup linked → dynamic-port-binding
A replay against the demo vault in this page. In the app, it is your own session. Watch the graph while it runs.

It connects itself, and sits beside your work

Connect in one click, as the drawing at the top shows. Open Edith and it adds itself to Claude Code, so your next chat can already reach your notes. There is nothing to paste, no key to make, and no server for you to run: Edith is the server, and it only listens on your own Mac.

Then minimise it. Edith 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.

It fills itself

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.

  1. you review my recent sessions and save anything worth keeping
  2. claude list_sessions ◈ EDITH · 12 session(s), 3 not yet captured
  3. claude read_session the 3 not yet captured ◈ EDITH · session 5f2a1c0b
  4. claude save_note transcripts-are-trees
  5. edith ◈ EDITH · note saved ✦ transcripts-are-trees linked → session-goes-quiet · 40 note(s) in the brain
  6. claude save_note most-jsonl-are-not-sessions
  7. edith ◈ EDITH · note saved ✦ most-jsonl-are-not-sessions linked → transcripts-are-trees · 41 note(s) in the brain
  8. claude save_note atomic-config-writes
  9. edith ◈ EDITH · note saved ✦ atomic-config-writes linked → mcp-registration · 42 note(s) in the brain
  10. claude Saved three notes and linked them to what was already here.
Another replay, with demo numbers. Each save puts a new note into the brain.

It turns what worked into a skill

Some things you settle once and want followed every time: how this repo is deployed, what a review has to cover, how to write a commit message here. When your AI sees that shape in the brain, it can draft a skill from it, and Edith holds it in the Skills Forge until you look.

Nothing reaches your AI’s skills folder until you say yes. You read the draft, edit it, approve or throw it out. Edith ships five to start with, so the forge is not empty on day one.

  1. you that is the third time we have done the release dance by hand
  2. claude search_brain "release build signing"
  3. edith ◈ EDITH · 3 matches for “release build signing” notarise-before-you-ship stable-asset-name
  4. claude propose_skill ship-a-release
  5. edith ◈ EDITH · skill proposed ✦ ship-a-release “Ship a signed, notarised release” · awaiting review in Edith · 1 in the queue
  6. claude Drafted it from what the brain already knew about signing and the asset name. It is waiting for you in the forge.
A replay with demo content. Approving a draft is the only way it reaches your skills folder.

Get Edith

The Edith app icon

Download for macOS v0.1.0 · Apple Silicon · macOS 13 or later

  1. Open the .dmg and drag Edith into Applications.
  2. Open it. Edith starts its brain server and connects itself to Claude.
  3. Restart any Claude Code sessions that were already running, then ask Claude to review your recent sessions.

You need a Mac with Apple Silicon on macOS 13 or later, and Claude Code, in the terminal or the VS Code extension.

edith
---
id: shows-the-retrieval
type: concept
links: [served-over-mcp, in-process-mcp, highlights-fade]
---

It shows you the retrieval

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.

edith
---
id: served-over-mcp
type: concept
links: [shows-the-retrieval, claude-fills-it, tool-noise-stripped, in-process-mcp]
---

Served over MCP

Claude both reads from and writes to the brain in the middle of a session. These are the tools it gets.

ToolWhat it does
search_brainSearch the notes
read_noteRead one note in full
list_notesSee what the brain holds
save_noteWrite an insight back
list_sessionsSee past Claude sessions, and which are already captured
read_sessionRead one transcript, tool noise stripped

The last two are what let Claude do the distilling itself, on your plan, with no key anywhere.

edith
---
id: claude-fills-it
type: concept
links: [served-over-mcp, no-api-key, transcripts-are-trees, session-goes-quiet, provenance]
---

Claude fills it for you

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.

StageWhat happens
WatchEdith watches ~/.claude/projects, waiting for a session to go quiet
ParseThe transcript becomes one canonical session, with abandoned branches skipped
StoreMarkdown with YAML frontmatter, indexed in SQLite FTS5
ServeAn MCP server inside the app, over local HTTP
Light upEvery tool call emits an event straight to the renderer
edith
---
id: no-api-key
type: concept
links: [claude-fills-it, api-key-is-not-history, add-your-own]
---

No API key. No account. No inference.

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.

edith
---
id: mini-mode
type: concept
links: [mini-opens-itself, shows-the-retrieval]
---

Mini mode

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.

edith
---
id: note-format
type: concept
links: [provenance, index-rebuilds, broken-frontmatter, dynamic-port-binding]
---

The note format

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.

~/Library/Application Support/Edith/vault/notes/dynamic-port-binding.md
---
id: dynamic-port-binding
title: Dynamic Port Binding
type: concept
created: 2026-08-25
updated: 2026-08-25
origin: distilled
sources:
  - session: 11111111-2222-3333-4444-555555555555
    project: -Users-u-myapp
    at: 2026-08-25T10:00:00Z
links: [mcp-registration]
---
Bind the next free port and rewrite the MCP config to match.

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.

edith
---
id: the-forge
type: concept
links: [claude-fills-it, no-api-key, provenance]
---

The Skills Forge

A note records what you worked out. A skill makes your AI do it the same way next time, without being asked.

Your AI drafts the skill; Edith never writes one. It has no API key and no opinions, so the drafting happens in the session you already pay for, from what it read in the brain.

Drafts wait in the forge as Markdown with frontmatter, editable in any editor. You read one, change what you want, and approve it or throw it out. Only then does it land in your AI’s skills folder, where later sessions pick it up.

The queue is capped. A pile of twenty proposals never gets read, so Edith refuses more until you have caught up. Five starter skills ship with the app.

edith
---
id: provenance
type: concept
links: [note-format, claude-fills-it]
---

Provenance

Every note records the sessions it came from: which session, which project, and when.

That provenance is written from day one, so tracing a concept back to its conversations is a view rather than a migration.

edith
---
id: add-your-own
type: concept
links: [reimport-deepens, imported-ids-survive, broken-frontmatter, no-api-key]
---

Add your own content

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.

ModeWhat it doesAPI calls
Keep as writtenStores the file or text verbatim as a notenone
Distil into conceptsRuns the same extraction used on sessionsone

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.

edith
---
id: install
type: concept
links: [what-it-touches, uninstall, quits-on-launch, restart-claude-code]
---

Install

Edith runs on Macs with Apple Silicon, on macOS 13 or later. You also need Claude Code, in the terminal or the VS Code extension.

  1. Download Edith, open the .dmg, and drag Edith into Applications.
  2. Open it from there. Edith starts its brain server and connects itself to Claude.
  3. Restart any Claude Code sessions that were already running.
  4. Ask Claude to review my recent sessions and save anything worth keeping, and it fills the brain itself.

To update, quit Edith, then drag the new build into Applications to replace the old one.

edith
---
id: what-it-touches
type: concept
links: [mcp-registration, session-start-hook, slash-edith, starter-skills, uninstall]
---

What Edith touches on your Mac

On first launch, outside its own folder, Edith adds four things. Nothing else.

WhatWhere
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
---
id: uninstall
type: concept
links: [what-it-touches, install]
---

Uninstall

Quit Edith and delete it from Applications. Then remove what it added:

Your notes stay in ~/Library/Application Support/Edith until you delete that folder too.

edith
---
id: not-in-v1
type: concept
links: [search-provider-interface, api-key-is-not-history]
---

Not in v1

Edith is at version 0.1, and it is honest about what that leaves out.

Search sits behind a single interface, so adding hybrid retrieval later touches one file.

edith
---
id: license
type: concept
links: [not-in-v1]
---

Licence

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.

© 2026 Raghav Chari and Kate Bonner.

edith
---
id: the-shape
type: concept
links: [eight-shapes, monochrome-by-intent, mini-mode]
---

Why the brain is that shape

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.

= (zb)xdy = dx + (zb)y ż = c + azz3/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.