
The page viewer: frontmatter as properties, a table and count computed from the pages that link here, and the linked references below.
Getting started
Connect Claude to the hosted service and create your first brain.
Self-hosting
Run it yourself, from a folder on your laptop to a multi-tenant deployment.
Architecture
How a tool call travels through the system, file by file.
Building with Claude Code
The setup that lets Claude Code write most of this codebase.
Try it in two minutes, with no accounts
claude mcp add --transport http isomorphic-local http://127.0.0.1:8788/mcp, or open
http://127.0.0.1:8788/b/local/notes in a browser for the same viewer and editor with no
MCP host at all.
Why not a folder of markdown and a coding agent?
You can point Claude Code at a folder of notes today, and for one person that is a fine place to start. Isomorphic is for what goes wrong after that:- Moving a page breaks every link to it.
move_pagerepoints each inbound link, markdown and wikilink alike, in the same commit.delete_pagetells you what still points at the page. - An agent rewrites a whole page to change one paragraph.
write_pagetakes exact find-and-replace edits and appends. An anchor that matches zero or several times aborts the whole call, so a batch is never half-applied and a page is never silently clobbered. - Reads stop scaling. A derived content index keeps search, backlinks, validation, and the graph to one or two queries on a 3,000-page brain, and checks the branch HEAD on every read so an edit made on github.com or by another agent is never served stale.
- Listings drift. A fenced
okf-viewblock is a listing, table, or count computed from backlinks or frontmatter, recomputed on every read instead of maintained by hand. - Half the team will never open a terminal or GitHub. The viewer and editor render inside the conversation and in a browser tab. Teammates sign in with an email link, nobody needs a GitHub account, and orgs, roles, invitations, and per-brain sharing are all built in.
What works where
The server never calls a model. It is an MCP server; the client brings the model, and any client that speaks the protocol works.Why this exists
Writing knowledge down is a separate job from doing the work, which is why it does not get done. LLMs are good at that separate job and bad at doing it into a database whose shape they cannot see. So the substrate is one markdown file per concept, in a normal git repository, in the Open Knowledge Format. You can read it on github.com, edit it in Obsidian, grep it, diff it, and review a change in a pull request. If you stop using Isomorphic tomorrow you still have everything.Open source under AGPL-3.0-only. Run it, fork it, deploy it for your own company,
sell services around it. If you modify it and let others use your version over a network, you
owe those users your changes. Your knowledge base is your data and the license does not reach it.