MCPcopy Index your code
hub / github.com/ctxrs/ctx

github.com/ctxrs/ctx @v0.20.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.20.0 ↗ · + Follow
4,184 symbols 13,765 edges 115 files 133 documented · 3%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

You have months of coding agent history on your machine. Search it with ctx.

ctx is an open-source CLI for fast local search across your past coding agent sessions.

Coding agents usually start from zero. They can inspect the current repo, but they often cannot recover the discussions, decisions, failed attempts, commands, and test results from earlier work.

Those sessions are full of useful context:

  • decisions, constraints, intent, and rejected approaches from you
  • bug investigations, refactors, file paths, commands, patches, and notes from previous agents

ctx indexes those logs into SQLite on your machine, then gives current and future agents a CLI for finding the prior discussion, command, or failed attempt before they repeat it.

Install and set up ctx

curl -fsSL https://ctx.rs/install | sh

The installer indexes discovered local history and installs the bundled agent-history skill. To refresh or reinstall the skill later:

ctx skill install

For marketplace/plugin installs in Codex, Claude Code, Cursor, and raw Agent Skills, see Agent Skill Install.

50x more token-efficient than raw transcript search

By structuring agent history into sessions, events, metadata, and indexed fields, then returning ranked cited matches, agents can access meaningful history with far fewer tokens than raw search. Results vary by query and corpus, but raw search is often so token-heavy that it can be effectively the same as not having usable history.

Token output per agent history search: ctx search 917 tokens, raw transcript search 45,734 tokens.

How it works

Your past agent sessions are stored in local provider history files. ctx discovers supported sources, imports the real persisted records, and stores normalized session, event, and touched-file metadata in a local SQLite database optimized for retrieval.

ctx is written in Rust and stores a local SQLite index, so searches are fast, scriptable, and do not require a background service.

The index is local and private by default. Transcript text is preserved rather than hiding local paths or secret-shaped strings, so review copied output before sharing it outside the machine.

# Index all of your existing local agent sessions
ctx setup

# Your agent can search prior work with normal language
ctx search "failed migration"

# Search sessions/events that touched a file
ctx search --file crates/foo/src/lib.rs

# Or search multiple terms
ctx search --term "failed migration" --term rollback --term "cursor rename"

# Advanced: inspect exact local index data with read-only SQL
ctx sql "SELECT provider, COUNT(*) AS sessions FROM ctx_sessions GROUP BY provider"

# Results include matching sessions, snippets, and ctx IDs
# evt_01h...  ses_01h...  codex  "migration expected the old cursor name" ...

# Print the matching part of the old transcript
ctx show event <ctx-event-id> --window 3

# Or print a compact transcript of the original session
ctx show session <ctx-session-id>

Those IDs let your current agent recover as much context from previous sessions as it needs.

ctx does not send your prompts, transcripts, or indexed history to a cloud service, call model APIs, require API keys, or write into your source repositories.

The installed binary also includes local docs and man-page generation:

ctx docs search "upgrade"
ctx docs show cli-reference
ctx docs man --print ctx

Official installer-managed binaries support signed self-upgrades:

ctx upgrade status
ctx upgrade check

Source builds and package-manager installs remain unmanaged and do not self-upgrade.

For the full pipeline, see How ctx works. For a quick first run, see Quickstart.

Supported agent histories

Support means ctx can discover or read that harness's persisted local history and import it into the local search index. Use ctx sources --json on your machine to see which sources are currently importable.

Agent harness Support
Claude Code Supported
Codex Supported
Cursor Supported
Pi Supported
GitHub Copilot CLI Supported
OpenCode Supported
Gemini CLI / Antigravity Supported
Factory AI Droid Supported
OpenClaw Supported
Hermes Agent Supported
AstrBot Supported
NanoClaw Supported
Shelley Supported
Auggie / Augment Supported
Cline / Roo Code Supported
CodeBuddy Supported
Continue Supported
Crush Supported
Deep Agents Supported
Firebender Supported
ForgeCode Supported
Goose Supported
Junie Supported
Kilo Code Supported
Kimi Code CLI Supported
Kiro CLI Supported
Lingma Supported
Mistral Vibe Supported
Mux Supported
OpenHands Supported
Qoder Supported
Qwen Code Supported
Rovo Dev Supported
Tabnine CLI Supported
Trae / Trae CN Supported
Warp Supported
Windsurf Supported
Zed Supported

How ctx compares

Agent memory tools usually save compact facts, summaries, vectors, or graph nodes. Those can help with stable preferences, but they are weak evidence when the next agent needs to know where a decision came from, what command failed, or what was rejected in the original conversation.

Graphify-style tools answer a different question. They map the current repository: files, symbols, imports, folders, and relationships. ctx searches the prior agent sessions that explain what happened while people and agents changed that repository.

ctx keeps retrieval tied to sessions and events, so another agent can inspect the source before using it. Read more about agent memory, Graphify-style codebase graphs, and grep or log search.

Explore the docs

Page What it covers
Install Install ctx, initialize local storage, and index discovered local history.
Quickstart Search local history, inspect an event, open the session, and use JSON output.
Install the ctx skill Install or refresh the bundled agent-history search skill.
Agent plugin installs Install the ctx skill through Codex, Claude Code, Cursor, or a raw skill folder.
SDKs Use ctx agent history search from TypeScript, Python, Rust, Go, JVM, Swift, or .NET code.
Custom history plugins Build an advanced local adapter for agent formats ctx does not support natively.
Cursor Import Cursor agent transcripts and ask Cursor to cite retrieved local history before editing.
How it works Understand discovery, import, SQLite storage, search refresh, and cited retrieval.
Supported agents See which agent histories ctx can discover, import, and search today.
CLI reference Review setup, status, sources, import, show, locate, search, SQL, MCP, and doctor.

Extension points exported contracts — how you extend this code

AgentHistoryTransport (Interface)
Transport for agent-history-v1 operations. [5 implementers]
sdks/jvm/src/main/java/rs/ctx/agenthistory/AgentHistoryTransport.java
Transport (Interface)
Transport executes agent-history-v1 operations and returns JSON stdout. [5 implementers]
sdks/go/client.go
ProviderCaptureAdapter (Interface)
(no doc) [40 implementers]
crates/ctx-history-capture/src/lib.rs
IAgentHistoryTransport (Interface)
Executes adapter-specific agent-history-v1 operations.
sdks/dotnet/src/Ctx.AgentHistory/IAgentHistoryTransport.cs
JsonObject (Interface)
(no doc)
sdks/typescript/src/index.d.ts
CommandRunner (Interface)
Executes a local CLI command. Tests can inject this to avoid spawning ctx. [3 implementers]
sdks/jvm/src/main/java/rs/ctx/agenthistory/CommandRunner.java
LocalCLIOption (FuncType)
LocalCLIOption configures a LocalCLIAdapter.
sdks/go/local_cli.go
RunRequest (Interface)
(no doc)
sdks/typescript/src/index.d.ts

Core symbols most depended-on inside this repo

path
called by 653
crates/ctx-history-store/src/lib.rs
args
called by 327
sdks/jvm/src/main/java/rs/ctx/agenthistory/CommandRequest.java
is_empty
called by 308
crates/ctx-history-store/src/lib.rs
execute
called by 193
sdks/jvm/src/main/java/rs/ctx/agenthistory/AgentHistoryTransport.java
optional_column_expr
called by 172
crates/ctx-history-capture/src/lib.rs
env
called by 170
sdks/jvm/src/main/java/rs/ctx/agenthistory/CommandRequest.java
tempdir
called by 141
crates/ctx-history-capture/src/lib.rs
is_empty
called by 115
crates/ctx-cli/src/main.rs

Shape

Function 2,319
Method 1,127
Class 570
Enum 59
Struct 52
Interface 45
TypeAlias 10
FuncType 2

Languages

Rust69%
Java15%
C#5%
Python4%
TypeScript3%
Go3%

Modules by API surface

crates/ctx-history-capture/src/lib.rs1,073 symbols
crates/ctx-history-store/src/lib.rs398 symbols
crates/ctx-cli/src/main.rs288 symbols
crates/ctx-cli/tests/cli.rs275 symbols
crates/ctx-history-search/src/lib.rs156 symbols
crates/ctx-history-capture/src/provider_sources.rs120 symbols
sdks/dotnet/src/Ctx.AgentHistory/Responses.cs88 symbols
crates/ctx-cli/src/upgrade.rs85 symbols
crates/ctx-history-core/src/lib.rs82 symbols
crates/ctx-cli/src/skill.rs77 symbols
sdks/typescript/src/index.js74 symbols
sdks/typescript/src/index.d.ts57 symbols

For agents

$ claude mcp add ctx \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact