uni-code

for people who run more than one coding agent

Ask Codex about the bug you fixed in Claude Code.

Every agent on your machine keeps its own history, in its own format, invisible to the others. uni-code indexes all of it into one local, searchable store and serves it back to every agent over MCP — search, handoff, and true cross-agent resume.

Switch back and forth. Nothing gets left behind. 切换自如,不落一事。

$ claude mcp add uni-code -- npx -y @yuxianglin/uni-code mcp

also: Codex, Claude Code plugin, plain CLI ↓

codex · tuesday 09:14
youhow did we fix that playwright timeout? pretty sure that was a Claude Code session last week
resume_session → uni-code
claude-code · f3a9c2d1 · oss/atlas-ui · 2026-05-28 · compaction summary + live window
codexFound it — you pinned the webServer timeout in playwright.config.ts and added one retry for chromium. Want the same fix here?

Measured, not estimated

One real MacBook (Apple M4, Node 24), the author's actual agent history — not synthetic fixtures.

760 filesnative sessions · 392 MB on disk
81,414events indexed · 759 sessions
≈87M tokensof verbatim work history
0unparseable lines quarantined
~35 sfirst full ingest
<1 severy incremental refresh
5–50 msper search, English and CJK
1 file~/.uni-code/store.db · SQLite + FTS5

What your agents can do now

One search, every agent

Messages, reasoning, shell commands, tool output — ranked across all agents at once.

$ uni search "playwright"
codex  projects/webshop  0195aa1c-7
  … site:playwright.dev config official docs …
claude-code  oss/atlas-ui  f3a9c2d1-8
  … npx playwright test --project=chromium …

Resume across agents

A native --resume reloads the last compaction summary plus the live window after it. uni-code rebuilds exactly that from the native files — for any agent.

⚙ resume_session · claude-code f3a9c2d1
## Context up to the last compaction
the source agent's own summary, verbatim
## Live window — everything after it

no LLM involved — the only summary shipped is the one the source agent already wrote

中文检索,一等公民

Default tokenizers can't segment Chinese, and trigram engines can't serve two-character words like 部署 or 隔离. uni-code indexes CJK as overlapping bigrams — exact substring matching, mixed-language queries included.

$ uni search "隔离机制"
claude-code  work/sandbox-runner
  讨论隔离机制的目的和优化方案

隔离机制 → 隔离 · 离机 · 机制

How it works

~/.claude ~/.codex read-only, always read-only, always store.db one SQLite file · FTS5 MCP → every agent
  • Native stores are read-only. uni-code never writes into an agent's directory.
  • Everything stays local. No network, no telemetry; the store is chmod 0600.
  • Zero runtime dependencies. Node's built-in SQLite; the MCP server is hand-rolled JSON-RPC.
  • No daemon. Incremental re-ingest on each query, like git status.
  • A derived cache that outlives the agents' own memory. Agents prune their history; the store remembers.

this page keeps the same promise — no external fonts, scripts, or trackers. view source.

Install

search_historylist_sessionsread_sessionget_handoffresume_session

Claude Code — as an MCP server

$claude mcp add uni-code -- npx -y @yuxianglin/uni-code mcp

Codex

$codex mcp add uni-code -- npx -y @yuxianglin/uni-code mcp

Claude Code — as a plugin, with a recall skill

/plugin marketplace add Lum1104/uni-code /plugin install uni-code@uni-code

CLI — same store, for humans

$npx @yuxianglin/uni-code search "that bug from last week"

Node ≥ 22.5 · works with Cursor and any other MCP client (stdio: npx -y @yuxianglin/uni-code mcp) · run npx @yuxianglin/uni-code ingest once to warm a large history.