About Ontology Atlas
Ontology Atlas keeps a codebase ontology as Markdown files in the repository for developers and coding agents to read and review. Through MCP, it provides task-relevant context and presents agent changes as proposals for approval.
Key features
- 01Repository-based Markdown concept map
- 02Task-specific code context
- 03Review or reject proposed updates
- 04Recorded dependencies and unknowns
- 05Insights, checks, and automations
Use cases
- 01Give coding agents relevant context before a task
- 02Review ontology changes as Git diffs
- 03Find code relationships that need verification
MCP support
Its embedded MCP server reads and writes the Atlas folder on disk, including when the app is closed. Claude Code, Codex, Cursor, and Antigravity can use it to access task-relevant concepts, code paths, and dependencies.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project README
Understand your system as AI agents change its code.
A map of what your code does and why, kept as Markdown in your repository
and read by both you and your coding agent.
Download for macOS · Try it in the browser · Guide

Why
Coding agents now change code faster than a team can keep a picture of it in their heads. Atlas keeps that picture beside the code: what each part is for, which files implement it, what depends on what, and what nobody knows yet. Your agent reads it before a task and proposes updates after; you keep, correct or reject each change as a Markdown diff.
- Your agent starts with context. Claude Code, Codex, Cursor and Antigravity read the concepts, code paths, dependencies and open questions a task touches, over MCP.
- You own the record. One Markdown file per concept in an
atlas/folder, versioned and reviewed in Git like the code. - You decide what is true. Agent proposals stay proposals until you accept them.
- It says what it does not know. A line on the map is a declared relationship, not proof of runtime impact; missing evidence shows as unknown, never as safe. Compact task handoffs preserve whole uncertainty statements or report omissions with the document reads needed to inspect them. Initial analysis also excludes literal Markdown examples and marks truncated document evidence for review with a hash-bound original-source follow-up. Task matching and navigation use authored evidence; code examples, hidden comments and blockquotes cannot supply capability claims or work coordinates.
See it
![]() Projects — every project and how much of it has code evidence. | ![]() Library — documents in, cited wiki pages out. |
![]() Git — the exact Markdown diff before you save. | ![]() Insights — what to fix next, by measurement, not a score. |
![]() Harness — what your repository tells, blocks and watches for agents. | ![]() Automations — scheduled checks that keep the folder current. |
Flat maps show domain labels with spaced outward capability branches and thin directed dependencies. Mark sizes and detail fade with the available row spacing as you zoom. Implementation elements form compact groups beside their capability, with readable names and membership stems. The overview limits crossing lines; inspecting an endpoint reveals its recorded connections and explicitly labelled bundle counts. Gentle local curves and screen-sized arrows keep direction legible. Individual relationship explanations and declaring documents remain available in relation review. A persistent bright outline distinguishes the selection, while amber exclamation marks mean evidence needs rechecking; the map key explains both marks and direction. Larger maps keep the same branch grammar with shorter previews and stable column groups. More/collapse controls disclose actual capabilities; focused areas keep that grammar and a labelled return to the full map. The Concepts panel separates searching, selecting and expanding the tree. Below 1280 px it temporarily folds beside an inspector and returns when that inspector closes; it can still be reopened explicitly. Project details keep dated source checks under Check record.
Empty folders and concepts without relationships reveal their start actions when returning to Map from another screen. Starter creation keeps a persistent retry action after a write failure, including partial creation. Retrying preserves existing files and writes the missing starter files; completion produces one success notification. Popup tours are retired. Folder opening guidance, contextual help and keyboard help remain. Returning from a concept's full reading view keeps that concept selected on the map. Returning through primary navigation restores the selected map concept and Concepts search for the same opened folder, in memory for this session. Ordinary unsent chat text survives screen changes in memory for the same opened folder; restoring it never sends a request.
Library service setup is app-only: Atlas confirms folder and keychain saves before activation. A browser offers the app or Add files without collecting service tokens. Local setup does not verify service access. Library check history lists executed checks first; recorded sleep gaps are available through an explicit display control.
Quick start
- Install the app from the download page, or open the browser version.
- Open a folder. Atlas reads its Markdown in place, or starts an
atlas/folder in your repository, and shows the path before it writes anything. - Connect your agent. In Agents › MCP, press Connect for your tool, restart the agent, and ask about your next task.
macOS (Apple Silicon) is signed and notarized and carries the MCP server inside the app. Windows x64 is an unsigned beta. On Linux, use the browser version or run the CLI and MCP server from a source checkout. Releases list each version's files and checksums.
How it works
your-repo/
├── src/
└── atlas/ ← cloned, branched and reviewed with the code
├── project.md
├── domains/ capabilities/ elements/
├── sources/ documents kept exactly as they arrived
└── wiki/ pages written from those sources, every fact cited
A Markdown file whose frontmatter has kind: is one concept. Its uid never
changes, its slug is its current address, and its path names the code it
describes. The map, documents, Library, Insights and Git screens all read these
files.
Your agent reaches the folder two ways:
- MCP: the agent starts the Atlas MCP server, which reads and writes the folder on disk, even with the app closed. Connect an agent · MCP reference
- ACP: Claude Agent and Codex also run in the app's own chat; each write waits until you allow it. Agents
A project's source-path repair opens the affected concept and recorded relative path; stale or missing targets require remeasurement.
Project checks distinguish a document changed since its last meaning review from malformed input. They ask for review and explicit re-finalization; supported code paths and saved changes do not accept the meaning. Analysis filters capabilities by changed, missing or unchecked source evidence while keeping the selected claim open.
Analysis compares recorded dependencies between responsibilities, then opens the exact concepts and declaring document beside the selected claim. Implementation records, unchecked source and missing explanations stay distinct. In the macOS app, documents and cited files can be dated in their respective bound Git repositories; missing access or history stays unknown, and a folder chosen for reading must match the existing connection. Analysis
Local-first
The installed app's Changes prototype reads a chosen Git repository without requiring an ontology. Public GitHub PR reading is the recommended first step; commit-only explanations remain an explicitly limited alternative. Failed PR refreshes keep previously read versions and explanations with a freshness warning. Explicitly read public PR originals have bounded local copies that can reopen after restart, labelled with their original read time and unchecked current GitHub state. Saved copies can be cleared in Changes even without a source folder. Known GitHub rate limits show a retry time and pause PR reads while local sources remain usable. Select daily, weekly, monthly, yearly or custom local dates; inspect full commit messages, touched files and bounded code comparisons inside Atlas. A disclosed sequence reads every fitting collected complete record, preserves completed parts for session Stop/Continue, and builds a short overview from selected original passages; source, processing and overview gaps remain explicit. It reads current-branch first-parent history; author descriptions and optional ontology grouping do not establish verified behavior changes. Change briefing
- No backend, account or telemetry. The folder stays plain Markdown on your disk.
- Model calls with your API key or a local model are opt-in, and each records its destination in
.ontology-atlas/llm-audit.jsonl. - A connected coding agent may send your prompt and what it reads to its own provider; Atlas's log does not cover those transfers.
Status
Atlas is early. Our benchmark has not yet shown better answers with Atlas, and Atlas was slower (the correction). Construction trials, their failures and limits are in the construction measurements.
Documentation
What is Atlas? · First five minutes · What becomes a node? · Relations · Specification · Features · CLI · Architecture
Contributing
Read CONTRIBUTING.md; external pull requests come from forks. AGENTS.md is the contract for people and agents alike.
pnpm install
pnpm dev
pnpm checks:changed -- --run
pnpm pr:land <number> merges a reviewed pull request and keeps its original
commits. Development checks is the full gate reference.
Pre-push checks the commit being pushed and runs affected lint, unit and Node tests in parallel with the relevant cheap checks. CI owns browser, full contract and dependency-graph verification. Test-only edits to CI tooling run their regressions without starting unrelated product suites; changes to the planner implementation still require exhaustive CI.
Repository commands
| Command | What it answers |
|---|---|
node scripts/ci/run-playwright-ci.mjs --help | Browser shard options, without discovering or running tests; unknown options fail before execution |
pnpm agents:check | Each harness's instruction files are valid; Codex and Claude files need not match |
pnpm brief:new -- --slug=<slug> --owns=<path,...> | A delegation brief with the port, scratch, checks and merge lines filled in |
pnpm build:static | The static export in out/, rebuilt only when a build input changed since the last build |
pnpm bundle:plan · pnpm bundle:prune | Plan merging several branches as one, then prune the branches main contains (/merge) |
pnpm checks:changed | Which gates this change needs |
pnpm conflicts:scan | Which open pull requests change the same files as this branch, and whether a trial merge conflicts |
pnpm decisions:find <terms> · pnpm decisions:check | The decision to cite or overturn, and whether this change owes one |
pnpm design:tokens -- [--prefix=<name>] | The current token ramps, resolved from app/styles |
pnpm doc:new -- --type=<kind> --area=<area> --slug=<slug> | A new living document from its template in docs/.templates/ |
pnpm docs:check | Docs gates, including pnpm docs:language, pnpm source:language, pnpm changelog:check, pnpm dev-checks:check, pnpm docs:meta |
pnpm docs:meta · pnpm doc:history -- <path> | Every living document's kind, status and area; one document's commits across moves |
pnpm docs:move | Moves the documents in docs/.moved.json and rewrites references (-- --check only reports) |
pnpm e2e:durations -- <timings dir> | Rebalances the browser shards from downloaded playwright-timings-* reports |
pnpm e2e:sleeps:check | Refuses a new fixed waitForTimeout without a // measurement window: note |
pnpm gates:yield -- --runs=200 | Which CI checks ever failed, per run, from the lane reports CI uploads |
pnpm gateway:capture -- --base-url=<static export> | Re-shoots the six app screens on the download page, in Korean and English |
pnpm harness:tokens -- --since=<date> | Where Claude Code tokens went per agent type, from local transcripts, and which runs broke the compaction window or turn caps (budget) |
pnpm knip | Dead files, exports and types |
pnpm licenses:check · pnpm notice:build · pnpm notice:check | Shipped packages are on the license allow-list, and NOTICE.md is current (rules) |
pnpm messages:build · pnpm messages:check · pnpm messages:adopt | Compose messages/<locale>.json from one file per namespace, prove it current, and carry an old branch's edits |
pnpm messages:coverage -- --locale <code> | Checks one locale's strings against en: arguments, plurals, script, keep-terms and typography |
pnpm perf:mcp:memory · pnpm perf:mcp:memory:check | Whether the MCP server releases memory across repeated calls; about a minute |
pnpm pr:ci <n> | Fire CI on a draft now |
pnpm pr:land --plan <n...> · pnpm pr:land --conduct | Dry-run a merge, or merge queued pull requests until the queue is empty |
pnpm pr:land <n> · pnpm pr:queue | Queue a pull request to merge (green ones merge together behind one CI run), and show the queue |
pnpm review:facts -- --base=<ref> | The mechanical facts a reviewer would otherwise count by hand: line growth, 800-line files, export and dependency changes, untouched sibling tests, security paths |
pnpm seo:check | After pnpm build: every sitemap URL in out/ canonicalizes to itself, / and each locale root point at /{locale}/download/, and titles and descriptions are unique per locale |
pnpm typecheck | Types across every file, with Next's generated route and page types |
pnpm ui:audit -- --url=<base> --route=<path> | Rendered facts per width: horizontal overflow, occluded or unreachable controls, small touch targets, off-ramp type/radius/shadow values, low contrast, unequal repeated sets, scroll-end reserve |
Use --scope=<selector> to audit one visible modal or region. The selector must match exactly one visible element; the report includes its measured element count.
License
MIT. Third-party notices are in NOTICE.md, and the full license texts in public/third-party-licenses.txt. The pixel mascot and its sources are described in Brand.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.





