Open source|MIT|v0.21.7

Keep project context portable across coding tools.

Move between supported coding agents without starting over. xtctx indexes the transcript files your tools already write and serves them over MCP, so the next agent can pick up recent context. Install the plugin and retrieval works — no project setup required.

No project setup requiredRaw transcripts stay localFive MCP tools
claude plugin marketplace add fstubner/xtctx && claude plugin install xtctx@xtctx
bash
$ claude plugin install xtctx@xtctx
[ok] mcp server registered
[ok] handoff skill installed
No project files written.
$ cd ~/projects/my-app && claude
> what was I working on?
calling xtctx_recent_sessions()
cursor:sess_714 42m ago · 18 turns
calling xtctx_session_detail()
Picking up the auth refactor you left in Cursor.
Raw transcripts stay the source of truth.
Process

How a handoff travels

xtctx is not a dashboard or memory layer. It is MCP retrieval against transcript files your tools already write, with optional project wiring that delivers the handoff without the agent asking.

  1. 01

    Install xtctx

    The plugin registers the MCP server and the handoff skill and writes nothing into your project. Run setup instead, or as well, to add managed instruction blocks and per-tool MCP config. Copilot CLI still requires --global-mcp.

  2. 02

    Open another tool

    The tool starts xtctx over stdio as an MCP server. With setup run, it also reads the managed instructions and receives the handoff without asking for it.

  3. 03

    Read recent sessions

    MCP calls list sessions, open raw transcript messages, and search chronological transcript windows.

  4. 04

    Check status

    Status reports configured tools, selected skills, transcript freshness, and unsupported targets.

Features

What setup writes

The plugin writes nothing into your project. Running setup adds config, managed instructions, selected skill targets, and a rebuildable SQLite cache. Raw transcript files remain the source of truth.

Five MCP tools

Agents can list recent sessions, open session detail, search transcript windows, check continuity status, and fetch a handoff manifest.

xtctx - Visual Studio Code / Cursor
AGENTS.md
index.ts
<!-- xtctx:begin -->
# xtctx Handoff

Tool: cursor
Project root: ~/projects/my-app
Integration mode: instruction-only

## Session Retrieval
- Call xtctx_recent_sessions to list sessions.
- Call xtctx_session_detail for raw messages.
- Call xtctx_search_sessions for transcript windows.
<!-- xtctx:end -->
AI ASSISTANT / CHAT
You
Continue from the last Claude Code session.
AI Agent
I found the AGENTS.md xtctx block. I will list recent local sessions.
Calling: xtctx_recent_sessions()
- Ref: claude-code:sess_714 (today 13:42)- Messages: 18 turns | Tool: Claude Code
I found the matching session. I will open the raw messages.
Calling: xtctx_session_detail(session_ref: "claude-code:sess_714")
user: add the status smoke after the indexer testsassistant: SqliteHandoffIndex tests passeduser: keep Node 24 as the release runtime
I have the recent messages. I will start with the status smoke and keep Node 24.

Managed setup files

Setup owns generated instruction blocks, MCP config, and selected skill targets so the repo wiring is repeatable.

$ npx -y xtctx setup
updated .xtctx/config.yaml
updated .xtctx/skills/xtctx-handoff/SKILL.md
updated AGENTS.md
updated .codex/config.toml
verified MCP config

Status output

Status reports configured tools, transcript freshness, selected skills, managed blocks, and unsupported targets.

$ npx -y xtctx status
configured
mcp command npx -y xtctx
cache 12 sessions
codex instruction only
claude-code executable hook

Search stays local

Raw transcript files remain the source of truth. SQLite is a rebuildable local index for ordered lookup and fallback keyword search.

cache .xtctx/state/xtctx.db
├── sessions
├── messages
├── retrieval_windows
├── vectors
└── fts_index
Install

Install, then check

The plugin gets you the MCP tools in every project. Add setup where you want the handoff delivered automatically, and use status to check what is wired.

Install the plugin
claude plugin marketplace add fstubner/xtctx && claude plugin install xtctx@xtctx
Registers the MCP server and the handoff skill, and writes nothing into your project. Retrieval works straight away — the tools resolve the project from the working directory. Codex, Copilot, Cursor and Antigravity install from the same marketplace; see the README for their commands.
Add project wiring
npx -y xtctx setup
Optional upgrade. Writes managed instruction blocks so the next agent receives the handoff without calling a tool, plus the SessionStart hook, per-tool MCP config, and skill sync. The only route for opencode.
Check what is wired
npx -y xtctx status
Reports configured tools, cached transcript freshness, skill drift, managed blocks, and repair hints.
Start MCP over stdio
npx -y xtctx
Starts the MCP server for clients. In a normal terminal it prints setup and status help.

Read the README for supported tools and local transcript notes.

Try it

$ npx -y xtctx setup $ npx -y xtctx status $ npx -y xtctx --help
Review

Questions before using it in a repo

Short answers about setup, local storage, transcript limits, and what xtctx does not do.

What problem does xtctx solve?
It lets an AI coding tool read recent local transcript sessions from the current repo through MCP, including sessions from a different tool, so you can switch without re-explaining the work.
Do I need to run setup in every project?
No. With the plugin installed, the MCP tools resolve the project from the working directory, so retrieval works in any project with no setup at all. What setup adds is delivery: managed instruction blocks put the handoff in front of the next agent whether it calls a tool or not. Plugin first, setup where you want it automatic.
Does xtctx run a background service?
No. xtctx has no daemon, API server, dashboard, watcher, or web service. MCP retrieval calls update the local cache on demand.
Does xtctx sync skills?
The plugin ships the built-in xtctx-handoff skill. Setup additionally inventories compatible skills from connected tools and syncs selected project skills to each supported target in that tool’s native format.
Does it summarize sessions?
No. xtctx points agents to recent raw transcript messages. Those messages stay the source of truth.
What are the limits?
xtctx is local-only. Transcript formats can change upstream, semantic vectors are created lazily, and keyword fallback is expected when local vector generation is unavailable.
Can I test it without private transcripts?
Yes. The public demo smoke creates synthetic Claude Code and Codex transcript stores in a temporary project, then calls the built MCP server over stdio.
Which tools are supported?
Claude Code, Cursor, Codex, GitHub Copilot, Google Antigravity, opencode, and GitHub Copilot CLI.
Where does data live?
Project config lives in .xtctx/config.yaml. The rebuildable SQLite cache lives in .xtctx/state/xtctx.db. Source transcripts stay in each tool storage location.
Is it open source?
Yes. xtctx is MIT licensed and published at github.com/fstubner/xtctx.