Wake README

The project's README from github.com/iAmCorey/Wake. As one markdown file: README.md.

Wake

License Release Platform Downloads Stars CI

A native desktop app that gathers every coding-agent session on your machine into one place — browse, full-text search, and resume any conversation in seconds. Built with Rust + GPUI (gpui 0.2 + gpui-component 0.5). macOS first; experimental Linux support since v0.2.5, experimental Windows support since v0.2.7.

Your agent history is scattered across ~/.claude, ~/.codex, and a dozen other private directories. Wake reads them all, read-only, and gives you one fast window into it. Everything stays local; Wake only contacts GitHub when you explicitly check for an update.

Wake — sessions list and transcript view

Features

Full-text search across every agent's sessions

Supported agents

Agent Data source Model Via
Claude Code ~/.claude/projects/**/*.jsonl ✅ —
Codex CLI ~/.codex/sessions + state_5.sqlite (read-only) ✅ ✅
Qoder CLI ~/.qoder/projects/*/*.jsonl (QODER_CONFIG_DIR is respected) ✅ —
Copilot CLI ~/.copilot/session-store.db — —
Cursor (CLI transcripts) ~/.cursor/projects/**/agent-transcripts — —
OpenCode ~/.local/share/opencode/opencode.db ✅ —
OpenCode 2 (opencode2) ~/.local/share/opencode/{opencode.db,opencode-next.db} (session_v2 or session + session_message); both paths are scanned ✅ —
Kiro ~/.kiro/sessions/cli ✅ —
Gemini CLI ~/.gemini/tmp/**/chats — —
Pi ~/.pi/agent/sessions/**/*.jsonl ✅ —
Oh My Pi ~/.omp/agent/sessions/**/*.jsonl ✅ —
Grok Build ~/.grok/sessions/**/updates.jsonl ✅ —
Kimi Code ~/.kimi-code/sessions/**/wire.jsonl — —
Antigravity CLI ~/.gemini/antigravity-cli/conversation_summaries.db (metadata only — transcripts are encrypted) — —
DeepSeek Harness (dsh) ~/.dsh/sessions/**/session.jsonl[.zstd] (zstd-compressed logs are decoded transparently) ✅ —
Hermes Agent ~/.hermes/state.db + profiles/*/state.db (HERMES_HOME is respected) ✅ ✅
OpenClaw ~/.openclaw/agents/*/agent/openclaw-agent.sqlite + legacy agents/*/sessions/*.jsonl (OPENCLAW_STATE_DIR is respected) ✅ ✅

Model = whether Wake shows which LLM a session used (the model the session last used). Via = whether Wake shows where the session was started from (CLI, IDE extension, desktop app) — Codex records this in its local data; Hermes and OpenClaw record the channel a session came in through (Telegram, Discord, …). A "—" means the agent's local data simply doesn't record that field, not a missing feature.

Cursor IDE chats, Windsurf, and Trae encrypt their local data; Amp, Factory (Droid), and Warp keep sessions in the cloud — none of those are supported. Reasonix stores sessions locally but hasn't been mapped yet.

Remote hosts

Wake can mirror the sessions on your other machines and show them next to the local ones. Add a host in Settings → Remote hosts (an alias from ~/.ssh/config, or user@host); Wake then syncs on launch, on refresh, and whenever you click Sync now. Remote sessions carry an @host badge, are searchable like everything else, and resume through Copy SSH command, a ready-to-paste ssh -t <host> 'cd <project> && codex resume <id>'.

Before you add a host:

How it works, and what it doesn't do yet:

Connect your agents (MCP)

Wake ships wake-mcp, a small read-only MCP server over stdio that sits next to the app binary (Wake.app/Contents/MacOS/wake-mcp on macOS, beside wake on Linux and Windows). Point an MCP client at it and the agent gets four tools:

Tool What it does
wake_search Full-text search across every agent's transcripts (CJK and code substrings work); each snippet carries a wake://session/<key>#<seq> reference
wake_list_sessions Most recently updated sessions, scoped by project (pass the agent's working directory), agent, time window or starred
wake_get_session One transcript as compact Markdown — user and assistant messages with [seq N] markers, tool calls folded to a line, injected context omitted — paginated by from_seq
wake_list_projects Projects with indexed sessions, most recently active first

Setup is a copy-paste from Settings → Connect, or run wake-mcp setup in a terminal. For example, Claude Code:

claude mcp add --scope user wake -- "/Applications/Wake.app/Contents/MacOS/wake-mcp"

Codex reads the same server from ~/.codex/config.toml:

[mcp_servers.wake]
command = "/Applications/Wake.app/Contents/MacOS/wake-mcp"

A few things worth knowing:

The full reference — every parameter, output formats, key and reference formats, error semantics, troubleshooting — is in docs/mcp.md.

Language

Wake's interface follows your system language on first launch and falls back to English. Simplified Chinese ships with the app; pick a fixed language under Settings → General → Language.

Adding a language is one flat JSON file mapping the English text to your translation — drop it in Wake's config folder to use it immediately, or send it as a pull request. Untranslated strings simply stay English, so a partial pack is welcome. See crates/wake/locales/README.md.

Privacy stance

Performance

On the author's machine (~310 sessions, ~800 MB of JSONL): full index ~5 s, subsequent launches are instant (mtime-based incremental scan), search results in under 1 ms.

Install

Download Wake-<version>-macos.zip from the latest release, unzip, and drag Wake to Applications. The release is a Universal Binary for both Apple Silicon and Intel Macs. Or build from source (requires a Rust toolchain):

git clone https://github.com/iAmCorey/Wake && cd Wake
scripts/make-app.sh          # builds dist/Wake.app (icon + Info.plist, ad-hoc signed)
open dist/Wake.app

To build the same Universal Binary locally, install the aarch64-apple-darwin and x86_64-apple-darwin Rust targets, then run scripts/make-app.sh --universal.

The app is ad-hoc signed, so if you download a prebuilt copy instead of building it yourself, macOS Gatekeeper will block the first launch — right-click the app and choose Open, or run xattr -d com.apple.quarantine Wake.app.

Linux (experimental)

Prebuilt packages for arm64 and x86_64 (asset names use Debian's amd64) are attached to each release: a .deb, and a tar.gz with a user-level install.sh (no root needed). Or build from source:

sudo apt-get install -y libasound2-dev libfontconfig1-dev libwayland-dev \
  libxkbcommon-dev libxkbcommon-x11-dev libssl-dev libzstd-dev pkg-config cmake clang
git clone https://github.com/iAmCorey/Wake && cd Wake
scripts/make-linux.sh        # builds dist/wake-<version>-linux-<arch>.tar.gz and .deb

The data layer, rendering and search are fully tested on Linux; terminal-resume targets and desktop integration have seen less real-desktop mileage yet — issues welcome.

Windows (experimental)

Download wake-<version>-windows-x86_64.zip from the latest release, unzip, and run Wake.exe — the binary is unsigned, so SmartScreen may block the first launch (click More info → Run anyway). Or build from source (requires a Rust toolchain with the MSVC target):

git clone https://github.com/iAmCorey/Wake; cd Wake
powershell -ExecutionPolicy Bypass -File scripts/make-windows.ps1   # builds dist/wake-<version>-windows-<arch>.zip
# or just: cargo run -p wake

Resume opens sessions in Windows Terminal, PowerShell (7+ or the built-in Windows PowerShell), Command Prompt, Alacritty or WezTerm (whichever are installed); delete goes to the Recycle Bin. Agent data lives in the same ~/.claude-style directories under your user profile, so everything indexed on macOS/Linux is indexed here too. Same beta caveat as Linux: the data layer is fully tested, desktop integration has seen less mileage — issues welcome.

Development

cargo run -p wake                      # run in dev mode
scripts/test.sh                        # one-command test entry: data-layer tests + UI compile gate
scripts/test.sh --smoke                # adds a real-data scan baseline (reads your local agent dirs, read-only)
cargo test -p wake-core                # data-layer tests only (adapter contracts, FTS, scanner)
cargo run -p wake-core --bin scan      # data-layer smoke test: scan and print stats
cargo run -p wake-core --bin scan -- --search "useEffect("   # search smoke test
cargo run -p wake-core --bin wake-mcp -- setup                # print MCP setup snippets for the dev build
cargo run -p wake-core --bin wake-mcp -- call wake_search '{"query":"useEffect("}'   # run one MCP tool against your index
WAKE_THEME=dark cargo run -p wake      # force dark/light (defaults to system)
WAKE_HOME=/path cargo run -p wake      # point all agent adapters at a different home dir (portable installs, testing)
WAKE_LIVE_REMOTE_HOST=<host> cargo test -p wake-core --test remote_sync live -- --ignored   # run the remote-host pipeline against a real SSH host
git config core.hooksPath scripts/hooks   # optional: run tests before every commit
python3 scripts/demo-home.py           # build a synthetic fake-home dataset for screenshots/demos

CI runs cargo test -p wake-core plus a full app build on every push to main and every PR. The test suite parses synthetic fixture sessions only — your real agent data is never touched (the remote-host end-to-end test uses a fake ssh and your system rsync against a synthetic home).

Architecture

crates/
├── wake-core        # pure data layer, no UI dependencies
│   ├── adapters/    #   claude / codex / qoder / copilot / cursor / opencode / kiro / hermes / openclaw
│   │                #   gemini / pi / omp / grok / kimi / antigravity / dsh
│   │                #   (AgentAdapter trait — add an adapter, get the whole UI for free;
│   │                #   remote.rs wraps any adapter over a synced cache for remote hosts)
│   ├── remote.rs    #   remote hosts: ssh probe + rsync whitelist mirror into <data dir>/remotes/<host>/
│   ├── scanner.rs   #   single-pass scan: meta + FTS in one go, mtime incremental
│   ├── watcher.rs   #   notify-based file watching → per-file incremental updates
│   ├── db.rs        #   rusqlite (WAL): sessions / messages / messages_fts / user_data / tombstones (+ location, remote_hosts & schema meta tables)
│   ├── mcp/         #   wake-mcp: read-only MCP server over stdio (hand-written JSON-RPC, four tools)
│   └── services/    #   terminal resume (per-platform: AppleScript / argv / Win32) / export / trash / agent context helpers
└── wake             # GPUI app (three-pane workbench + ⌘K / Ctrl+K palette)

Design notes live in DESIGN.md, product decisions in PRODUCT.md, release history in CHANGELOG.md.

Star History

Star History Chart

License

MIT. Brand icons are from lobe-icons (MIT); agent names and logos belong to their respective owners.

Wake (iAmCorey/Wake)

Searching Database…

1.5K ·GitHub
这是什么?Wake 是一个原生桌面应用,把你机器上所有编程智能体会话集中到一处,让你可以浏览、全文搜索并恢复 Claude Code、Codex、Cursor 等众多工具中的任意对话。
这是我安装的应用,还是导入代码的库?它是一个用 Rust 和 GPUI 构建的原生桌面应用,不是库。它还附带一个小型只读 MCP 服务器(wake-mcp),位于应用二进制文件旁边。
怎么让它跑起来?在 macOS 上,下载 Wake-*-macos.zip,解压后把 Wake 拖入应用程序文件夹(它是 ad-hoc 签名的,首次启动需右键 → 打开)。Linux 和 Windows 也有实验性的预构建包,或者你可以用 Rust 工具链从源码构建。
它实际索引哪些编程智能体?它以只读方式读取各智能体的本地会话文件,支持 Claude Code、Codex CLI、Qoder CLI、Copilot CLI、Cursor、OpenCode、Kiro、Gemini CLI、Pi、Oh My Pi、Grok Build、Kimi Code、Antigravity CLI、DeepSeek Harness、Hermes Agent 和 OpenClaw。
Linux 和 Windows 支持完全就绪了吗?没有——macOS 是主要目标平台;Linux 支持(自 v0.2.5 起)和 Windows 支持(自 v0.2.7 起)都标记为实验性,桌面集成经过的真实环境测试也比数据层少。
它能在哪些平台上运行?macOS(Apple Silicon 和 Intel 的通用二进制)、Linux(arm64/x86_64,.deb 或 tar.gz 安装包)以及 Windows(x86_64 zip)。
Wake 会把我的智能体数据发送到别处吗?不会。一切都保留在本地,数据目录以只读方式打开,从不读取凭据文件,唯一的网络调用是用户主动发起的 GitHub 更新检查(外加可选的、你自己配置的远程主机 SSH/rsync)。
可以一次性搜索我所有的智能体会话吗?可以,Wake 使用 SQLite FTS5 三元组索引做全文搜索(Cmd/Ctrl+K),能处理中日韩文本和代码子串,并直接跳转到匹配的消息。
可以查看并恢复来自其他机器的会话吗?可以,通过 Settings → Remote hosts 可以用 SSH/rsync 镜像其他机器上的会话;它们会带一个 @host 标签出现,通过复制出来的 ssh -t 命令恢复,不过在 Wake 里它们是只读的(无法删除)。
MCP 服务器如何让智能体使用我的历史记录?内置的 wake-mcp 服务器暴露四个只读工具(搜索、列出会话、获取会话、列出项目),让 Claude Code、Codex、Cursor 或任何 MCP 客户端都能搜索你的全部历史,并从上一个会话中断的地方继续。
点击某个会话的恢复按钮会发生什么?Wake 会在你的终端中于该会话原始项目目录下用智能体自带的恢复命令重新打开会话,例如 claude --resume 或 codex resume,在 macOS 上于 Terminal/iTerm 中启动,在 Linux/Windows 上使用可用的终端。
What are similar projects?memex, okf-agent-memory, navop, leviathan, tusk, graphicle, epiq, coral
Creator
iAmCorey
Size
8 MB
Stars
1.5K
Age
2mo
Commits · 90 Days