A second brain for AI.
edithapp.ai · the macOS version
The Windows build of Edith Second Brain. Every change is installed, tested and packaged on Windows by CI. Found something off? Open an issue.
Download the installer, built on Windows by CI. You also need Claude Code, in the terminal or the VS Code extension.
Windows will stop you the first time. You get a blue screen saying "Windows protected your PC". Click More info, then Run anyway. That happens because the installer carries no code signing certificate - it costs a few hundred dollars a year - not because anything is wrong with the file. The release notes list its SHA-256 if you want to check it.
You need Node.js 22.12 or newer. No compiler: the database module ships an ABI-stable binary for Windows, so nothing is built from source.
git clone https://github.com/Rchari1/Edith-Windows.git
cd Edith-Windows
npm install
npm run dist:winThe installer lands in release/.
- 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.
- Claude fills it for you. Ask "review my recent sessions and save anything worth keeping" and Claude reads your transcripts with
list_sessions/read_session, then writes the notes back withsave_note. - Serves Claude over MCP.
search_brain,read_note,list_notes, andsave_note. Claude both reads from and writes to the brain mid-session. - Shows you the retrieval. A search dims-glows what Claude considered; opening a note brightly glows what it actually used. Highlights fade over 30 seconds.
- Mini mode beside your session. Minimize 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. With the window closed or minimized, the panel also opens on its own when a Claude session starts. It never takes focus, folds to a strip the width of the rail or shrinks to a small square in the corner - both just the live graph - and stays closed for the rest of a session once you close it. Turn off the automatic opening under Connection.
- Takes your own content too. Add content imports
.md,.markdown,.txt, and.mdxfiles, or anything you paste. Files keep their existing frontmatter, so importing a Markdown vault preserves ids and links instead of duplicating notes. Import as written, or distil into concepts. - Plain Markdown. Files on disk are the source of truth. Edit them in any editor. Delete the index and it rebuilds.
Edith starts its brain server on 127.0.0.1:4319 and connects itself to Claude. There is no account and no API key: ask Claude to "review my recent sessions and save anything worth keeping" and it fills the brain itself.
Outside its own folder, Edith adds:
| What | Where |
|---|---|
| Its server entry, so Claude can reach the brain | %USERPROFILE%\.claude.json, plus %APPDATA%\Claude\claude_desktop_config.json if you have Claude Desktop |
| A session-start hook that tells Claude the brain exists | %USERPROFILE%\.claude\settings.json |
The /edith command |
%USERPROFILE%\.claude\skills\edith |
| A handful of starter skills | %USERPROFILE%\.claude\skills\, managed from the Skills panel |
Your notes are plain Markdown in %APPDATA%\Edith\vault.
Quit Edith, then run the newer installer over the top. Your notes and settings stay where they are.
- Edith quits the moment it opens. If you launched it from a VS Code terminal, open it from the Start menu instead - VS Code's terminal sets an environment variable that stops the app from starting.
- The window buttons look wrong. Open an issue with a screenshot and your Windows version.
- Claude never uses the brain. Restart Claude Code after Edith's first launch, then open Connection in Edith and check that the session primer says installed.
Uninstall Edith from Settings > Apps > Installed apps. Then remove what it added: the edith entry under mcpServers in %USERPROFILE%\.claude.json, the hook in %USERPROFILE%\.claude\settings.json whose command contains edith:session-context, the %USERPROFILE%\.claude\skills\edith folder, and any starter skills you no longer want. Your notes stay in %APPDATA%\Edith until you delete that folder too.
| Stage | What happens |
|---|---|
| Watch | chokidar on %USERPROFILE%\.claude\projects, waiting for a session to go quiet |
| Parse | JSONL to a canonical Session, following leafUuid to skip abandoned branches |
| Store | Markdown + YAML frontmatter, indexed in SQLite FTS5 |
| Serve | In-process MCP server over local HTTP |
| Light up | Every tool call emits an event straight to the renderer |
| Tool | What it does |
|---|---|
search_brain |
Search the notes |
read_note |
Read one note in full |
list_notes |
See what the brain holds |
save_note |
Write an insight back |
list_sessions |
See past Claude sessions, and which are already captured |
read_session |
Read one transcript, tool noise stripped |
The last two are what let Claude do the distilling itself, on your plan, with no key anywhere.
Edith hosts the MCP server itself rather than spawning it. That is what makes the highlighting instant: a tool call and the glow are the same tick.
Add content in the sidebar opens an import dialog with two modes:
| Mode | What it does | Cost |
|---|---|---|
| Keep as written | Stores the file or text verbatim as a note | free |
| Distil into concepts | Runs the same extraction used on sessions | one API call |
Re-importing a file deepens the existing note rather than creating a duplicate, so syncing a folder repeatedly is safe. A file with broken frontmatter loses its metadata, not its content.
---
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.Every note records the sessions it came from. That provenance is written from day one, so tracing a concept back to its conversations is a view rather than a migration.
Upgrading from the old name. Edith was previously called SecondBrain. On first launch it copies your existing vault and settings across from the old location, and replaces the stale secondbrain entry in ~/.claude.json with edith so Claude does not see two identical tool sets. The old directory is left untouched as a fallback.
An API key does not give access to claude.ai history. The Messages API is stateless; there is no endpoint listing past conversations. Edith reads Claude Code's local transcripts. The API key is used only to distill them.
Most .jsonl files under ~/.claude/projects are not sessions. Subagent and workflow transcripts nest under session directories and typically outnumber real sessions by roughly 9:1. Edith classifies by path shape so they never become notes.
Transcripts are trees. Interrupting Claude forks the history and leaves the abandoned branch in the file. The parser walks back from last-prompt.leafUuid so only what actually happened gets distilled.
Your config is safe. Registration merges a single key into ~/.claude.json, writes atomically, and backs the file up before first modification.
npm run dev # run the app with hot reload
npm test # 239 tests
npm run typecheck # tsc --noEmit
npm run build # bundle main, preload, renderer
npm run dist:win # build the Windows installer into release/
npm run icon # rebuild the macOS icon set; assets/icon.ico is built from assets/icon.pngTests cover path classification, fork resolution, malformed-line tolerance, vault merge semantics, config-write safety, a live MCP client over HTTP, and the full pipeline end to end with the API call mocked.
Same codebase, with the platform differences kept to as few files as possible:
| What | Why |
|---|---|
| The Claude Code hook puts its marker in the URL | cmd has no # comment and no true |
| The status line is PowerShell, not Python | Windows ships PowerShell; batch cannot parse the JSON Claude sends |
| Edith's drawn window buttons are hidden | Windows draws its own title bar, so ours would be a second set |
A win build target and an .ico |
electron-builder needs both to make an installer |
| Two test assertions skip | They check the Unix executable bit, which NTFS does not have |
Fixes from the macOS repo come in with:
git remote add upstream https://github.com/Rchari1/Edith-SecondBrain.git # once
git fetch upstream && git merge upstream/mainclaude.ai export import - session-layer graph rendering - cross-machine sync - semantic search. Search sits behind a SearchProvider interface, so adding hybrid retrieval later touches one file.
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.