Docs

Own your context. Carry it between agents.

Pantheon stores your saved context in one private GitHub repository you control. Start with the guided setup, then learn handoff, resume, skills, sharing, and every command.

Installation and setup

Vault → agent → first handoff. Follow these in order.

About two minutes.

  1. 1VaultCreate your private repo
  2. 2AgentConfigure a desktop app
  3. 3First handoffSave one conversation
1

Create and connect your private vault

Create one dedicated private repository in your GitHub account, then install Pantheon with access only to that vault. 100% of your saved context stays there as readable files; the web app stores only account and connection metadata.

Create private vault
2

Connect a desktop agent

Desktop agents · Full transcript

Cursor, Claude Desktop, Claude Code, Codex, and Windsurf. Running Pantheon locally is what preserves the real conversation, recorded tool activity, and files instead of a model-written summary.

Why the npm command is recommended

It gives this machine the current pantheon command and lets one setup configure every detected agent. It is not a desktop app or background daemon. It runs only when you invoke it or an agent starts Pantheon MCP. Node.js 20 or newer is required.

1

Install the Pantheon command

npm install -g pantheon-cli@latest

Keep @latest so a new setup does not inherit stale connection behavior.

2

Pair this machine

pantheon connect <pairing-code> --host https://www.pantheonvault.space

Overview gives you this command with the short-lived code already filled in. Pairing saves the vault connection locally; it does not copy conversations into the web app.

3

Configure detected agent apps

pantheon mcp-install

Then reload MCP or restart each agent app. Pantheon writes the supported configuration files and preserves unrelated MCP servers.

Prefer to configure only one desktop app without a global command? Use the manual, token-based setup under Manual desktop setup; its config launches npx -y pantheon-cli@latest mcp when that app starts.

3

Save your first conversation

/pantheon-handoff my-project

Type this in the chat, not a shell. The name you pick is the space; the first handoff creates it and archives the current conversation.

4

Resume that conscience

/pantheon-resume my-project

Type this in another connected desktop agent—or in a later chat—to load the space packet, durable memory, session map, stored files, and relevant skill triggers.

Create private vault

How Pantheon works

Every agent starts empty. Pantheon stores a conscience — the real conversation, the durable facts, and the files you made — in a private GitHub repo on your account. You own that repository and 100% of the context saved inside it. A project conscience is called a space: a short name you choose, like preorders or annotation-design.

Agent A

/pantheon-handoff

Your vault

your private repo · only vault connected

Agent B

/pantheon-resume

This is not a transcript copier. Handoff archives the conversation verbatim and writes a distilled packet on top of it — the packet is a layer, never a replacement. Hand the same chat off twice and only the new turns are added; hand off a different chat and it joins the space as another session. Nothing a space has ever held is overwritten.

Your context belongs to you

The private vault repository is the source of truth—not a backup or export. Pantheon's database stores account and pairing records plus the credentials needed to connect to your vault, but never your conversations, memories, decisions, or artifact contents.

One private vault

Install Pantheon with “Only select repositories” and choose pantheon-vault. Pantheon receives no access to your other private repositories.

Plain, inspectable files

Sessions, memory, artifacts, and skills remain readable in GitHub with ordinary commits and history. Pantheon is not required to inspect them.

Control stays with you

Clone, export, audit, revoke access, or delete the vault whenever you choose. Pantheon keeps no separate database copy of your saved context.

GitHub notes that public repositories remain readable because they are already public. The selected installation gives Pantheon write access only to your dedicated private vault.

Context continuity

A context window is temporary working memory. Context continuity is the system property that carries the state of the work across a fresh chat, a model switch, or a different agent application—and reconstructs only the part the next task needs.

Outside the model

The conversation, decisions, files, and reviewed lessons persist in your vault after the active context disappears.

Bounded on resume

The next agent receives a compact packet and a complete map rather than spending its window on the whole archive.

Evidence remains openable

A summary points back to addressable sessions, turns, tool calls, and artifacts instead of becoming the only surviving account.

Portable across agents

The conscience is stored independently of one model and exposed through the same MCP retrieval tools to supported desktop clients.

Long context stores more tokens inside one run. Continuity preserves the project when that run ends. The research page reviews the evidence from long-context and long-term-memory benchmarks and documents Pantheon's design boundaries.

Resume and retrieval

Resume does not pour the archive into the model — that would spend the context window it is trying to save. It hands over a complete map and lets the agent fetch what it needs.

handoff

The space packet: current and earlier summaries, stored files, and the latest fourteen spoken turns across sessions.

memory

Every durable fact ever saved to this space, appended across all handoffs.

story

Packets from earlier handoffs, oldest first, so the narrative outlives any single session.

sessions

Every archived conversation with its turn count and dates. Each id opens directly.

turns

How many turns the whole space holds — not just the session the packet describes.

artifacts

File names across every session. The actual bytes are fetched on demand with pantheon_get_artifact.

sessions and story are what stop a thin handoff hiding a long project. handoff.md is written for the space rather than the last chat — its totals, its stored files, its most recent turns wherever they happened — so ten minutes of tidying cannot overwrite the account of a month’s work. Resume also reports the total turn count across the space and names every conversation in it, so the agent knows the rest exists and can open it.

When the packet does not cover what you are asking about, the agent searches rather than guessing. pantheon_search reads tool calls as well as messages — a file is findable by name even if nobody typed that name in prose — and takes a context window so a hit comes back with the turns around it. From a hit it can widen with pantheon_get_turns or read a whole conversation with pantheon_get_session.

If a resumed agent says it has no context for something you know you discussed, ask it to search the space. Missing context is nearly always unsearched rather than unsaved.

Skills

A skill is a lesson this project already learned, written down so the next agent starts with it. Memory is fetched when an agent goes looking; resume hands over every promoted skill's name and trigger, then the agent fetches the body only when the work matches. That is the whole difference, and it is why there are never many.

When a successful handoff adds turns, the agent compares recurring signals with existing live and draft lessons, reads the cited turns, and batch-saves at most five justified drafts without interrupting you. Run this command to review again at any time:

/pantheon-skills my-project

Skills walkthrough

Review evidence, promote a draft, and watch the next agent apply it.

29 sec

What it reads: the corrections you had to repeat across conversations, the commands that recur across sessions, and any failure that hit more than once. It also checks your AGENTS.md and README, and will not write something they already say.

The strongest evidence usually is not in the vault at all. Most agents record which tools they called but not what came back — Cursor writes no tool results to disk — so what a command actually printed when it failed exists only in the live conversation. That is why the review runs during handoff, where the agent can weigh what it saw alongside what was stored.

You approve on the space page

The agent writes at most five drafts without interrupting the chat. A draft is inert and given to no agent until you promote it; discard anything that did not earn its place.

A lesson is recorded once

Review exposes existing live and draft triggers before writing. The vault also refuses repeated names, candidate keys, triggers, and bodies instead of quietly creating another copy.

Every claim cites its source

A skill records the sessions and turns it came from, and the vault refuses to save a citation that does not resolve to a real turn. You can open the moment and judge it yourself.

Twelve live skills per space

Resume carries each promoted skill's name and trigger. The agent fetches its body only when the work matches, and promoting a thirteenth is refused rather than silently dropping another.

Drafts wait on the space's own page in this app, under Skills, with the turns each one cites listed beside it. Promote one and every future resume of that space names it; retire it and it stops being served. An agent reads the guidance itself with pantheon_get_skill when it is about to work in an area a skill covers — resume only carries the names and triggers, so an unopened skill costs a line rather than a page.

Sharing a space

You can give one space to another Pantheon user, by their GitHub handle, from Settings → Sharing. They get the conscience — every packet, the durable facts, every archived conversation and the stored files — and their agents resume it by name like any other space.

It shows up in their list marked Shared by @you, and on their machine it lands beside their vault rather than inside it, so nothing of yours is ever committed to their repo.

/pantheon-resume preorders/pantheon-resume obirikan/preorders

A bare name is enough when only one space matches. If a shared space has the same name as one of your own, yours wins; if two people have shared a space of that name with you, resume asks which rather than guessing. Qualifying it with the owner's handle settles it either way.

One space, never the repo

The guest is given the folder you named and nothing else. Your other spaces are not listed, not readable, and not in what their machine downloads.

Read-only, refused at the vault

They can resume, search, open any turn and fetch any file. Handoff, park and remember stop before writing rather than being hidden — there is no path that lets a guest change your conscience.

Only your promoted skills

Drafts awaiting your review stay private. A guest sees the live skills and nothing you have not decided on yet.

Revoking reaches their machine

Access ends immediately, and their next sync deletes the local copy. What sits on their disk is a cache of a permission, not a gift.

Shared spaces refresh with pantheon sync, and before any handoff or resume, so the copy an agent reads is current. The first pull of a large space fetches every file and takes a moment; after that only what changed comes down.

Data fidelity: what gets saved

Pantheon setup focuses on desktop agents because that is where the real session record exists. A local MCP process can read the conversation the client already stored on disk, including recorded tool activity and files, without asking the model to reconstruct its own history.

Desktop connection · Full transcript

Cursor · Claude Desktop · Claude Code · Codex · ChatGPT.app · Windsurf

Every user and assistant turn
Word for word
Recorded tool activity
Included
Files made during the chat
Collected automatically
Durable facts and decisions
Distilled on top

Pantheon starts on your computer and reads the session files the agent already records there. That local access is what makes a handoff more than a summary.

Browser-only agents are not offered in the setup flow. A remote server cannot read their session files, tool results, or locally generated artifacts, so a handoff would depend on whatever summary the model chose to send. Resume remains most useful when both the leaving and receiving agents use the desktop connection.

Supported apps

Pantheon supports agent apps that can start a local MCP process. That local process is what gives the handoff enough fidelity to be a conscience rather than another summary.

Cursor

Works

pantheon mcp-install writes ~/.cursor/mcp.json (Windows: %USERPROFILE%\.cursor\mcp.json)

Reload MCP, then type /pantheon-handoff <space> in a new chat.

Claude Code

Works

Writes ~/.claude.json and ~/.claude/commands/pantheon-*.md (same paths under %USERPROFILE% on Windows)

Restart Claude Code so the slash commands load.

Claude Desktop

Works

Writes Claude Desktop mcpServers (macOS Application Support or Windows %APPDATA%\Claude). Launches Node directly — no bash.

Fully quit and reopen Claude Desktop after install.

ChatGPT.app / Codex

Works

Writes ~/.codex/config.toml (Windows: %USERPROFILE%\.codex\config.toml). On macOS also writes ChatGPT.app's shared MCP file when that app exists.

Use the new ChatGPT.app (Chat or Codex), not Classic. Settings → MCP servers, then /mcp in a new chat.

Windsurf

Works

Writes ~/.codeium/windsurf/mcp_config.json when that folder exists

Reload the window after install.

ChatGPT Classic

Not local MCP

No local MCP config. OpenAI left this as the legacy chat app.

Local stdio MCP lives in ChatGPT.app / Codex. Classic cannot start pantheon-mcp, so /pantheon-spaces will guess.

Replit Desktop

Not local MCP

Replit Desktop cannot start the local MCP process Pantheon needs for transcript capture.

The reduced-fidelity HTTPS setup is no longer offered; use a desktop agent that records a local session file.

The complete desktop instructions live at the top under Installation and setup, so there is one setup sequence to follow. After changing any MCP configuration, reload MCP or restart the app before the first handoff.

ChatGPT.app and Codex share ~/.codex/config.toml. ChatGPT Classic is the legacy app and cannot start a local MCP server.

Command reference

Type these to a connected agent. Behind each one is a pantheon_* tool the model calls; if those tools are missing it should say so rather than invent spaces.

/pantheon-handoff <space>

Archive the real back-and-forth — read off disk, every turn and tool call, not a recap the model retypes — attach the files that thread produced, then commit and push. Repeating it on the same chat adds only the new turns. The name you type is the space. First handoff creates it, so the agent must not refuse because the name is new.

Example/pantheon-handoff annotation-design
/pantheon-resume [space]

Pull the vault, then load that conscience: the latest packet, every durable fact, the packets from earlier handoffs, every archived conversation with its turn count, and the stored file names. The packet describes only the last session, so the agent can search and open the rest. If you omit the name it lists live spaces and asks which one; the space must already exist.

Example/pantheon-resume annotation-design
/pantheon-park <space>

Archive turns or files into that conscience without rewriting the latest packet, then push. A new name is allowed — park can create the space.

Example/pantheon-park annotation-design
/pantheon-remember <space> <fact>

Save one durable fact on that conscience, then push. Does not dump the chat. A new name is allowed.

Example/pantheon-remember annotation-design Safari is 40% of prod
/pantheon-spaces

List consciences from the vault. The agent must call pantheon_list_spaces and show only that result. It must not invent names from memory.

Example/pantheon-spaces
/pantheon-skills <space>

Re-run the post-handoff skill review for a space. The agent checks recurring corrections, procedures, and failures against existing lessons, then batch-saves up to five justified drafts. Approve or reject them on the space page.

Example/pantheon-skills annotation-design
/pantheon-help

Show the Pantheon guide inside the agent.

Example/pantheon-help

Naming spaces

A space is the short name you give a conscience. Letters, numbers, dots, underscores, hyphens — one token, not a sentence.

  • Handoff, park, remember — if you typed the name, the agent calls the tool. First write creates the space. It must not say the space “still needs to be created.”
  • Resume — existing spaces only. If you omit the name the agent lists live spaces and asks which one; if the name is not in the vault it should say so rather than pick a neighbour.
  • /pantheon-spaces — the live vault list and nothing else. Never memory, this chat, or another app.

Files

If the chat produced a PDF, letter, CV, or spreadsheet, handoff attaches it as an artifact. Naming a .pdf without attaching it is rejected, so a space never promises a file it does not hold. Desktop agents pass an existing local path, agents without a shared filesystem can pass a downloadable HTTPS URL, and inline base64 remains a fallback. Pantheon never needs the agent to regenerate or convert a file for handoff. Named code fences are stored automatically.

Resume lists file names without loading their bytes into the context window. When one is needed, pantheon_get_artifact returns the actual file as an MCP resource. A local desktop agent can instead restore it into the current workspace with save_to; Pantheon confines the destination to that workspace and will not overwrite an existing file.

Host it yourself

The control plane is a Next.js app backed by Postgres. It stores accounts, tokens, and paired machines — never conversation content, which lives only in your own GitHub repo. The App installation is restricted to that dedicated vault and receives no access to your other private repositories. Nothing depends on a persistent disk, so it runs happily on Vercel or any container host.

  1. Create a Supabase project and copy the Transaction pooler URI — port 6543, not the direct connection, which resolves to IPv6 only.
  2. Put it in DATABASE_URL, then create the schema. Tables live in a dedicated pantheon schema so Supabase never exposes them through PostgREST.
cd apps/webpnpm db:migrate
  1. Set NEXT_PUBLIC_APP_URL to your HTTPS origin before building — it is compiled into the client bundle, not read at runtime.
  2. Point the GitHub App callback to https://your-domain/api/github/callback and the setup URL to https://your-domain/api/github/setup.
  3. On Vercel, set the root directory to apps/web and leave “include files outside the root directory” on — the app depends on workspace packages, so the install has to run at the repo root.

Confirm it came up. A green check here means Postgres is reachable, not merely that HTML is being served.

curl https://your-domain/api/health

Free Supabase projects pause after about a week of inactivity, so point an uptime check at that endpoint — it runs a real query, which keeps the project awake.

Troubleshooting

Open the one that matches what you are seeing.

Does Pantheon access all my GitHub repositories?

No. Choose Only select repositories and select pantheon-vault. Pantheon refuses installations that can access all or multiple private repositories. GitHub may still mention read-only access to public repositories because those repositories are already public. You can revoke the vault installation at any time.

The agent lists spaces that do not exist

It is answering from memory because the Pantheon tools are not attached — either MCP is not connected, or you are in ChatGPT Classic, which cannot start one. Ask the agent what it actually has before trusting the list.

/mcp
A handoff saved a summary instead of the real thread

A browser-only connection cannot read the agent's session files. Pantheon no longer offers that reduced-fidelity setup in onboarding; connect the desktop app through Settings → Manual desktop setup. Nothing is lost — the next desktop handoff fills in the full history.

It refuses a space name I just made up

First handoff creates the space; there is no separate create step. Tell the agent to call the tool rather than check a list first.

pantheon_handoff
Handoff mentions a PDF and then errors

Naming a file without attaching it is rejected on purpose, so a space never promises something it does not hold. Attach the existing file by local path or downloadable HTTPS URL and retry; inline base64 is only the fallback. Do not regenerate a new file for the handoff.

command not found: pantheon

Apps launched from the dock often start without your shell's PATH. Use the npx config, which needs nothing installed, or point the config at the absolute path.

which pantheon
Handoff captured the wrong conversation

Pantheon normally selects the session whose latest human message contains the handoff command, then falls back to the most recently recorded session. Every receipt reports the last message it read. If that is ever wrong, list the sessions on this machine, retry with the correct sessionKey, then delete the wrong archive because an unrelated transcript misleads every later resume.

pantheon_local_sessionspantheon_forget_session
Handoff says it cannot read my chat

Capture reads the host app's own log, and only Cursor, Codex and Claude Code keep one Pantheon can parse. Claude Desktop, Windsurf and web chats run locally or remotely but store conversations elsewhere, so there is nothing on disk to read. Rather than archive whichever unrelated chat happens to be newest — which is what it used to do — Pantheon refuses and asks the agent to send the thread itself. The handoff still works; it just costs the agent tokens to retype the conversation.

A resumed agent says it has no context for something we discussed

The packet covers the whole space, but it is a summary — the detail of an older conversation is in the archive rather than in it. Ask the agent to search the space: it reads tool calls as well as messages, and resume already told it every session id it can open.

pantheon_search
The push failed

A handoff says so rather than pretending it worked, so nothing is silently lost. Check the app is reachable and retry; this is the escape hatch that commits, pulls, and pushes the vault by hand.

pantheon sync

Ready to keep one?

Create one private vault in your GitHub account and connect Pantheon only to it. Your context stays in readable files you own and control.

Create private vault