Docs

Own your context. Carry it between agents.

Choose your own storage, connect an agent, then save one chat. The rest of this guide explains handoff, resume, retrieval, skills, sharing, and commands.

Get started

Storage, then an agent, then one saved chat.

About two minutes.

  1. 1StorageChoose GitHub or Google Drive
  2. 2AgentRun two terminal commands
  3. 3SaveType one line in the agent
1

Choose where your context lives

Pantheon does not keep any of your data. You do, in a GitHub repo or a Google Drive folder.

  • GitHub — a private repo for code and product work.
  • Google Drive — a visible Pantheon Vault folder for writing, research, and design.
2

Connect your agent

Run these in your terminal, then reload Cursor, Claude, Codex, or Windsurf.

npm install -g pantheon-cli@latest
pantheon connect <pairing-code> --host https://www.pantheonvault.space

Overview gives you the second command with your code already filled in. Needs Node.js 20 or newer.

Using Grok Bot or Replit? Open Agent setup.

3

Save a conversation

Type this in the agent chat, not the terminal. The name you pick is the space. First save creates it.

/pantheon-handoff my-project

Continue later, in any connected agent

/pantheon-resume my-project

Ask one question from the archive

No need to resume first. Paste an ID such as cursor-session#25994 into Context search to open that turn and its surrounding conversation.

/pantheon-retrieve my-project Why did we choose this approach?
Choose your storage

How Pantheon works

Every agent starts empty. Pantheon stores a conscience — the real conversation, the durable facts, and the files you made — in your selected vault. Developers can use a private GitHub repository; writers, researchers, designers, and product teams can use a Pantheon Vault folder in Google Drive. A project conscience is called a space: a short name you choose, like preorders or annotation-design.

Agent A

/pantheon-handoff

Your vault

private GitHub or visible Drive folder

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

Your provider vault 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.

Developer · GitHub

A temporary broad token creates one private repository and is immediately revoked. Ongoing GitHub App access is restricted to that vault.

Creator · Google Drive

The drive.file scope creates and accesses the visible Pantheon Vault folder and its files, not the rest of your Drive. No GitHub installation is required.

Plain, inspectable files

Both vaults contain readable files. GitHub provides Git history; Drive provides its own file activity and version behavior.

Provider refresh credentials are encrypted before server storage. Hosted operations process vault files temporarily and do not create a second conversation-content database. See the privacy page for exact scopes, processing, cache, and revocation details.

Disconnect and deletion

Disconnecting erases your Pantheon account, paired machines, tokens, and provider access. A Google Drive vault folder is retained by default; deleting it requires an explicit checkbox. GitHub keeps its existing choice to retain the repository or delete it together with the account.

Disconnecting does not pretend to recall copies another person exported. Revoked shared spaces disappear from their managed local cache on the next sync. Review all details under Settings → Account.

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. That map is synthesized orientation, not exact evidence, so project-state and decision claims still resolve to archived turns before the agent presents them as verified history.

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.

For one historical question, you do not need to resume the whole conscience first. This shortcut refreshes the space, ranks connected evidence from every session, verifies the strongest exact turns, and answers with session_id#turn_id citations:

/pantheon-retrieve my-project Why did we reject the first navigation layout?

Every historical answer includes an Evidence line. Each returnedevidenceId uses the same session_id#turn_id format; paste it into the Context search box to open that exact turn, its surrounding conversation, and the highlighted source.

Empty queries, sync status, and handoff receipts are operational results, not historical claims. They report their status without inventing an evidence citation.

Retrieval is bounded: the agent may make at most two narrower follow-up queries when evidence is incomplete. Every natural-language question starts with pantheon_retrieve, even when you are asking for an unknown name, file, command, or quote. pantheon_search is only for exact text you supplied or retrieval already discovered. If an agent sends a question to search anyway, Pantheon automatically routes it through ranked retrieval.

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.

Pantheon Notes

The web notes editor is coming soon. The Notes page is paused until it ships. Context — spaces, handoff, resume, and retrieval — is unchanged.

Sharing a space

You can give one space to another Pantheon user from Settings → Sharing. GitHub users share with their GitHub username. Google Drive users share with the Pantheon handle on their Account page — there is no Google username. Sharing looks that handle up exactly, then asks you to confirm the name and account before anything is granted. They get 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 written into their provider storage.

/pantheon-resume preorders/pantheon-resume obirikan/preorders/pantheon-retrieve obirikan/preorders What decision did we make?

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, retrieve an answer directly, 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.

Exact person, then confirm

A GitHub username or Drive Pantheon handle must match one account exactly. An email name or prefix is not enough, and nothing is granted until you confirm the name you see.

Shared spaces refresh with pantheon sync, and before any handoff, resume, retrieval, or search, 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

Every handoff starts in server-controlled auto mode. Pantheon captures highest-fidelity history only through a verified adapter for the calling client. If none is available, it asks the agent to retry automatically with every conversation turn still visible in its context.

Handoff capture

Automatic: Cursor · Claude Code · Codex · ChatGPT.app
Agent-supplied: Claude Desktop · Windsurf · Replit · Grok Bot · Web/mobile

Visible user and assistant turns
Stored word for word
Recorded tool activity
Included when available
Files made during the chat
Captured or attached
Older turns outside the context window
Marked truncated

Every handoff tries safe automatic capture first. If the calling client has no verified adapter, Pantheon asks the agent to supply its visible transcript automatically—without asking you to export or copy anything.

A model-supplied transcript can omit older turns that have already fallen outside the client's context window, and may not include hidden tool activity. Pantheon marks that boundary instead of presenting it as local capture.

Supported apps

Every listed integration supports handoff, resume, direct ranked retrieval, and exact search. Pantheon chooses the safest available source at runtime: verified local capture first, then an agent-supplied visible transcript.

Remote clients discover Pantheon's OAuth 2.1 sign-in automatically. Authorization uses browser consent, PKCE, short-lived access tokens, rotating refresh tokens, and an account-bound MCP resource. Static bearer tokens remain available for clients that support custom headers but not MCP OAuth.

Cursor

Handoff supported

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

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

Claude Code

Handoff supported

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

Restart Claude Code so the slash commands load.

Claude Desktop

Handoff supported

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

Fully quit and reopen after install. Claude supplies the conversation visible in its current context automatically.

ChatGPT.app / Codex

Handoff supported

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

Handoff supported

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

Cascade supplies the conversation visible in its current context automatically during handoff.

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

Handoff supported

Connects through an account-bound HTTPS MCP URL in Replit Desktop's synced MCP Servers settings.

Replit supplies the visible transcript automatically. After switching Pantheon accounts, replace the Pantheon URL and token in Replit Desktop so a stale connection cannot target the previous vault.

Grok Bot

Handoff supported

The native macOS and Windows app adds Pantheon as a public HTTPS MCP server through its in-chat Add MCP server flow, then signs in through standard MCP OAuth.

Grok Bot's computer and connectors run in the cloud, so pantheon mcp-install cannot write this account-wide connector locally. Use Settings → Agent setup → Grok Bot, click Authenticate, and approve the Pantheon account in your browser.

OAuth-capable remote clients

Handoff supported

Add the account-bound Pantheon HTTPS endpoint. The client discovers Pantheon's authorization server and opens browser sign-in automatically.

OAuth access tokens are short-lived, refreshable, and bound to the approved client, account, vault, and MCP resource. Static bearer-token setup remains available for clients without MCP OAuth.

The complete desktop instructions live at the top under Get started, 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, attach the files that thread produced, then persist it. Every handoff ends with HANDOFF RESULTS: complete or incomplete status, turns, tool calls captured, artifacts, potential decision and open-issue signals, destination, integrity, and ready-for-resume status. Skipped files stay visible while the conversation remains safe. Repeating the same chat adds only new turns. First handoff creates the named space.

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

Refresh the vault, then load evidence-backed Project State, the latest packet, durable memory, earlier handoffs, every archived conversation, and stored files. If you omit the name, Pantheon selects only when one owned space exists. With multiple spaces, task wording orders the real choices and asks rather than guessing. Historical claims resolve to exact archived turns before the agent presents them as verified.

Example/pantheon-resume annotation-design
/pantheon-resume-note [note]

Load one standalone Markdown note into the current chat — title, body, linked highlights, and attachments. Notes are not a space. Omit the name to list exact titles, then ask which to open. Agents must not invent a nearby document.

Example/pantheon-resume-note Interview highlights
/pantheon-retrieve <space> <question>

Answer one question from the entire space without running resume first. Pantheon refreshes storage, ranks a bounded evidence packet, opens the strongest exact turns, and always returns supporting evidence IDs in session_id#turn_id form. Paste any ID into Context search to open that exact turn and its surrounding conversation. Natural-language questions always use retrieval first—even when asking for an unknown name, file, command, or quote. Exact search is only for a literal already supplied or discovered.

Example/pantheon-retrieve annotation-design Why did we reject the first navigation layout?
/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 a separate archive of conversation content, which lives in the user's GitHub or Drive vault. GitHub uses a revoked one-time creation token and a repository-scoped App installation; Google uses encrypted refresh credentials and the drive.file scope.

  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?

The one-time vault creation authorization requests GitHub's repo scope, creates pantheon-vault, and immediately revokes that token without storing it. Ongoing access uses the GitHub App: choose Only select repositories and select only the vault. Installations that can see every repo are refused.

Can Pantheon read everything in my Google Drive?

No. Creator setup requests exactly the drive.file Drive scope. Pantheon can create and access its visible Pantheon Vault folder and files it creates or you explicitly open with Pantheon, not browse the rest of your Drive.

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

Update Pantheon and reload the MCP client. Every handoff must start in auto mode; if safe capture is unavailable, the agent retries with every real user and assistant turn still visible—not a recap. Pantheon rejects obviously thin summaries. Older turns outside the model's context are marked truncated.

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
What happens when Pantheon cannot read the host chat log?

Every handoff first asks Pantheon to use a verified capture adapter for the calling client. If there is no adapter or the matching history cannot be found, Pantheon asks the agent to retry with every real user and assistant turn still visible in its context. It never scans an unrelated app's newest chat. The retry is automatic—no export, file path, or copy/paste step for the human. Older turns outside the context window are marked truncated instead of invented.

I switched accounts. Can an old remote agent write to the previous vault?

Yes, until access is revoked from that previous account or the account is deleted. Every OAuth grant and static token stays bound to the account and vault that approved it, so an old connector can never write to your newly selected vault—but it can continue writing to the previous one. Reconnect Grok Bot from the new account's Agent setup page. For a bearer-token integration such as Replit Desktop, replace its URL and token; rotate the previous account's static token if that access should stop immediately.

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 one conceptual question directly with /pantheon-retrieve <space> <question>; no separate resume is required. Pantheon ranks bounded evidence, verifies exact turns, and cites them. Questions asking for an unknown filename, path, command, or quote also start with retrieval. Use pantheon_search only when you already have the exact literal to locate.

/pantheon-retrieve my-project Why did we choose this approach?
What is a note, if I already have spaces?

The web notes editor is coming soon. A space remains the archive of work with an agent. When Notes ships, it will be standalone Markdown in notes/, not another conversation.

/pantheon-resume-note Interview highlights
Vault sync failed

A handoff says so rather than pretending it worked, so nothing is silently lost. Check the app is reachable and retry with pantheon sync. GitHub vaults synchronize through Git; Drive vaults synchronize ordinary files through the Pantheon workspace endpoint.

pantheon sync

Ready to keep one?

Choose a private GitHub vault for development or a Pantheon Vault folder in Google Drive for knowledge work. Your context stays in readable files you control.

Choose your storage