A planning surface for coding agents.

Atlas is a native macOS editor built for the work around the code — research, planning, knowledge, and the agent threads that turn them into commits. Built so teams of humans and agents can move fast together.

v0.1.4 · alpha · macOS Apple Silicon only · local-first · no telemetry
atlas-core
Chat
Terminal
Spaces
Log
Browser
main 60.41M $153.39

Plan: ship Go SDK at TypeScript parity

  • installation.mdx — add Go install section and env-var note
  • quickstart.mdx — Go tab across all 5 example blocks
  • api-reference.mdxClient constructor + ChatCompletionsCreate
  • errors.mdxerrors.Is / AsCompressError across 4 blocks
  • shared-context.mdxPut / Get(full) / Stats / lifecycle

Test plan

  • cd sdk/golang && go test ./... (unit, no proxy)
  • headroom proxy --port 8788 --no-rate-limit then full e2e
  • GEMINI_API_KEY=... go run ./examples/e2e (real round-trip)
Message Atlas… (@ to mention, / for commands)
Claude Code Default @
sdk/golang
60.41M tokens · 310 calls · $153.3935 · claude-opus-4-7
The workspace

Everything in one window.
No more tab-switching.

Chat with agents, run terminals, read code, browse docs, and capture plans — without leaving the room. Atlas keeps the loop tight.

Refactor memory.ts to use streams.
read src/memory.ts
edit src/memory.ts +47 -12
run pnpm test ✓ 142
All 142 tests pass.
Chat

Coding agents, native.

Claude Code, Codex, and your custom agents — all first-class. Stream responses, watch tool calls, and intervene mid-flight.

Merge #412 from chopratejas/fix-pypi f94a9d2
fix(ci): publish skip-existing 6a191b4
Merge #410 hotfix WS responses 1050e00
fix(proxy): inline WebSocket 4a50313
style(ci): ruff format 4f65421
fix(codex): drop env_key from blocks 32f499c
Deployed a7e1f93 with MkDocs 948b712
Deployed 0c46c7e with MkDocs 392e66f
Git Graph

Read the whole history.

Branches, merges, deploys — rendered inline. Click any commit to walk diffs without leaving your chat.

Atlas Proxy
2m ago
Wrap LLM calls with atlas_wrap() for memory + traces.
API Design
1m ago
Design from the ground up. Three primitives: Client, Session, Tool.
Open Q
5m
Cache policy?
Spaces

Plans, on a canvas.

Capture ideas as notes on an infinite canvas. Drag them into chat to give agents fresh context.

Built for serious work

Engineered for the long session.

Atlas is a desktop application. Compact, AMOLED, fast. Every detail is tuned for ten-hour days at the keyboard.

Blast radius analysis

See exactly which files, symbols, and tests an edit will touch — before the agent commits a single line.

/analysis · realtime

Integrated terminal

Split panes, tabs, search across history. Agents share the same shell — no context smuggling.

zsh · bash · fish

Complexity heatmap

Rank every file by symbol density. Find the hot spots, refactor with intent, and watch the heat fade.

tree-sitter

Activity log

Every agent action, every tool call, every commit — timestamped, searchable, replayable.

JSONL · grep-friendly

Built-in browser

Read docs, copy snippets, save to Knowledge — without losing your place. Atlas indexes what you save.

WebKit · indexed

Token transparency

Per-thread token, call, and dollar counters live in the status bar. No surprise bills, ever.

live · BYO key
Git Graph

The real shape of your repo.

A custom lane-assignment graph renders every branch, merge, and deploy as you actually committed it — not as a flat list. Click any node to see the diff inline, without leaving your thread.

  • Lane-aware rendering — reads merges the way git log --graph can't.
  • Stage, unstage, commit — full git client. No terminal context-switch.
  • Branch picker@branch in any thread to give the agent that branch's context.
atlas-core · git graph 128 commits · 6 branches
mainHEADWire ACP driver into chat panel pacifio f94a9d2
feat(acp): register codex + opencode adapters pacifio 6a191b4
Merge #410 from knowledge/sync-stream pacifio 1050e00
knowledge/sync-streamfix(knowledge): JSONL append race pacifio 4a50313
refactor(chat): lift session sidebar state pacifio c0baaf0
Merge #406 from canvas/note-inspector pacifio 1a3098a
canvas/note-inspectorfeat(canvas): tag panel contributor 32f499c
feat(canvas): note-node drag handles contributor bf1e31b
style: prettier on all features/ pacifio d54c5b6
feat(knowledge): markdown frontmatter contributor 1c6ae45
chore: bump tauri to 2.4 pacifio 09b8510
feat: branch-popover with checkout/create/delete pacifio a7e1f93
knowledge · auth-flow.md .atlas/knowledge/

Auth flow

architecture/auth-flow.md · updated 2h ago · 4 references
@architecture @auth @security

Token-refresh is opportunistic, not scheduled. The frontend never sees the refresh token; it lives only in the keychain proxy.

Boundaries

  • Access tokens live in memory for the duration of the session.
  • Refresh tokens are written to the OS keychain via tauri-plugin-stronghold.
  • Renewal happens on the backend; failures surface as a single auth.refresh.failed event.

Open questions

  • Do we eagerly refresh on app focus or wait for a 401?
  • How long should the keychain entry persist after logout?
Knowledge

Markdown for humans. System prompt for agents.

Atlas treats your project's knowledge base as a first-class surface. Notes live as plain markdown in .atlas/knowledge/ next to your code — one source of truth, read by you and by every agent thread in the project.

  • Files, not a database. Subdirectories, frontmatter, real markdown. Versioned with your repo.
  • Save threads as knowledge. Pick any agent thread, export it as a note. The agent learns from your last conversation, not your repo's hot air.
  • Plays nicely with CLAUDE.md & AGENTS.md — no migration. Atlas reads what's already there.
Reference system

@ anything in your project.

Pull files, folders, branches, knowledge notes, commits, and entire threads into your prompts. Atlas resolves the references locally and hands the agent exactly the context it asked for — nothing more.

  • File and line refs. @src/auth.ts#L40-80 sends a slice, not the whole file.
  • Branches, commits, knowledge. @branch, @commit, @knowledge/auth-flow. Same syntax.
  • Cross-thread references. @thread:plan-acp-driver gives the agent a teammate's prior reasoning.
chat · plan-acp-driver @-mention active
References · 6 results
main branch · HEAD
knowledge/sync-stream branch
src/features/chat/lib/acp-api.ts file
knowledge/architecture/auth-flow.md knowledge
thread:plan-acp-driver 2h ago
↑↓ navigate select esc close
Apply the same lane-assignment from @src/features/git/components/commit-node.tsx to the new @knowledge/sync-stream
Default @
editor · app.rs CodeMirror 6 · rust-analyzer
chat
axiosInstance.ts
queryClient.ts
app.rs
cratesabstract-clisrcapp.rs
1//! Application state, agent construction, and lifecycle management.
2
3use crate::config::AppConfig;
4use crate::permissions::CliPermissionPolicy;
5use crate::sessions;
6use cersei_agent::effort::EffortLevel;
7use cersei_mcp::McpServerConfig;
8use cersei_memory::manager::MemoryManager;
9use tokio_util::sync::CancellationToken;
10
11/// Run the application (REPL or single-shot).
12pub async fn run(cli: Cli, mut config: AppConfig) -> anyhow::Result<()> {
13 let theme = Theme::from_name(&config.theme);
14
15 // Resolve or create session ID
16 let session_id = if let Some(resume) = cli.resume {
17 sessions::last_session_id(&config)
18 .ok_or_else(|| anyhow::anyhow!("No previous session found"))?
19 } else {
20 uuid::Uuid::new_v4().to_string()
21 };
22
23 let memory_manager = build_memory_manager(&config)?;
24 let cancel_token = CancellationToken::new();
Editor

A real editor, not a textbox.

CodeMirror 6 with first-class support for JS, TS, Python, Rust, Go, Java, C++, JSON, YAML, Markdown, SQL, CSS, HTML, XML. Files are real files — ⌘S writes to disk.

  • Multi-tab. Open as many files as your project needs. Tab dedupe means no duplicates.
  • Save = event. Every save emits to the activity log; agent threads see your edits without polling.
  • No fork. Files on disk are the source of truth — you can close Atlas and pick up in vim.
Spaces · Canvas

An infinite canvas for thinking out loud.

Drop notes onto a spatial board. Link them with edges. Pin the ones the agent should treat as context. Everything persists as plain JSON in .atlas/canvas.json — so your thinking versions with your code.

  • Spatial notes. ReactFlow under the hood. Pan, zoom, group, connect.
  • Drag into chat. Pull any note into the composer to give the agent fresh context.
  • One canvas per project. Open Atlas, your map of the codebase is right where you left it.
spaces · canvas 4 notes · 3 edges
ACP driver plan just now

Three things to land before we can register Codex.

  • Adapter trait in atlas-agents
  • PID registry per stream
  • Permission policy mux
Adapter shape 2m ago

What every ACP adapter must implement:

fn spawn(&self) -> Result<Stream>
Open Q 5m

How do we surface streaming bytes from a long-running adapter to the chat panel without coupling to Claude's JSONL shape?

Refs 12m

Cersei's REPL session lifecycle; Claude Code subprocess hand-off.

inbox · 8 unread ⌘⇧I
Unread All Mentions filtering: all sources
permission claude-code · session 8c4f
Agent wants to run cargo test --workspace — approve?
12s ago
stream-done claude-code · session a2b9
Refactored acp-driver.rs — 3 files changed, +47 -12, all tests pass.
1m ago
tool-use claude-code · session a2b9
Read src/features/chat/lib/acp-api.ts (148 lines).
2m ago
knowledge canvas
Saved thread "plan-acp-driver" to knowledge/threads/acp.md.
4m ago
branch git
Created branch acp/codex-adapter from main.
12m ago
stream-error claude-code · session 5e2d
Anthropic API returned 529 — overloaded. Retried 3 times, backed off.
28m ago
Inbox

Never miss what your agents did.

Every meaningful agent event — permission prompts, completed streams, tool calls, knowledge saves, branch operations — surfaces in a unified inbox. Approve, dismiss, jump back to the thread.

  • Permission prompts up front. Agents don't run destructive commands without your eyes on them.
  • Per-session filtering. Many threads running? Filter to one. Mute noisy sources.
  • One-key jump. ⌘⇧I from anywhere. Click a row to land in the source thread.
Activity Log

Replay any session. Replay any week.

Every meaningful event — chat sends, tool calls, file edits, git ops, terminal commands, knowledge writes — flows through a 500-event ring buffer in memory plus an append-only pinned log on disk. Searchable, filterable, JSON-expandable per row.

  • Survives restart. Pinned rows persist to ~/.atlas/log/pinned.jsonl.
  • Source & project filters. Drill into one agent, one project, one kind of event.
  • Grep-friendly. Plain JSONL on disk. Pipe it to jq from your terminal.
log · 500 events buffered 12 pinned · 2 projects
Search activity… All Pinned Chat Git Editor 5 / 500
Time Source Kind Summary
37s ago agent stream-done Refactored acp-driver — 3 files changed, +47 -12, all tests pass.
{
  "source": "agent",
  "kind": "stream-done",
  "sessionId": "a2b9727-634b-4129",
  "exitCode": 0,
  "durationMs": 18404
}
1m ago canvas note-add New note: "ACP driver plan"
2m ago editor file-save app.rs · 24 lines changed
2m ago chat send-agent "Wire the codex adapter into the chat panel."
4m ago git branch Created branch acp/codex-adapter from main.
Any agent · ACP-native

One workspace.
Every coding agent.

Atlas speaks the Agent Client Protocol (ACP). Today it ships with Claude Code; Codex, OpenCode, and Kilo Code follow on the same shell. Swap mid-thread. Bring your own keys. No lock-in.

Read the ACP docs
CC
Claude Code
claude-opus-4-7 · shipping today
Available
CX
Codex
via ACP · landing soon
Coming
OC
OpenCode
via ACP · open-source agent
Coming
KC
Kilo Code
via ACP · open-source agent
Coming
+
Your agent
implements ACP · drop a binary, register it
Configure
0
Telemetry. No account. No server. Your code never leaves your machine.
.atlas/
All state is files. Knowledge, canvas, logs — markdown and JSON next to your code.
3+
Concurrent agent threads per project. Switch tabs — streams keep running.
ACP
Standard protocol. Any compliant agent slots into the same shell.
On the roadmap

Built for one. Designed for teams.

A real problem: companies and teams don't have shared knowledge bases that humans and agents can both consume. Atlas is heading there. The single-player tools shipping today are the substrate for the multiplayer ones below.

"The knowledge base and logging system is designed for teams. The next thing we ship is the network around it."
01

Atlas accounts & team workspaces

Sign in to sync across machines. Invite teammates. Local-first stays local; only what you publish reaches the network.

Planning
02

Shared knowledge bases

The same markdown files, mirrored across the team. Humans read them in Atlas; agents consume them as system prompt. One source of truth, both audiences.

Planning
03

Thread sync across teams

Save any agent thread to the team knowledge base. Teammates pick up exactly where the agent left off, with full reasoning history attached.

Planning
04

Version control for agent knowledge

Incremental versioning for CLAUDE.md, AGENTS.md, and every knowledge note. Diff agent context the same way you diff code. Roll back when an instruction regresses behaviour.

Exploring
05

Cloud integrations

Import knowledge from Jira and Confluence. Map tickets to threads, sync designs to notes. Stop copy-pasting context into prompts.

Exploring
06

Prompt polling & tickets in one surface

Open a ticket, post the prompt, gather team votes on the agent's plan, then approve the run. Plan and execution, no Notion ↔ Linear ↔ Slack pinball.

Exploring
07

Team-level agent reference systems

Aggregate knowledge and system traces across the team into shared reference indices. Every agent inherits the team's best context automatically.

Exploring

Make agents part of the team.

Free during the alpha. Bring your own keys. Apple Silicon binary, no Electron, no telemetry, no account.

v0.1.4 · macOS 13+ on Apple Silicon · alpha