About Wake
Wake is an MCP server published by joemckenney in the Communication category: wake records your terminal sessions so Claude Code can see what you've been doing.
The repository has 86 stars and 5 forks, with the last commit 7 months ago. Six months or more without a commit doesn't mean the server is broken, but check the open issues before depending on it in production.
Install
git clone https://github.com/joemckenney/wakeThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Ask AI
Ask AI about Wake
Powered by Claude · Grounded in docs
Security checks
Static checks derived from the repository 2 hours ago. Heuristics on the source, not an audit.
- ✓README presentThe repository ships documentation.
- ✓License declaredUsable under a stated license.
- ✓Tests presentA test suite exists in the repository.
- ✓Dependencies pinnedA lockfile pins dependency versions.
- ✓No dynamic code executionSource scan found no eval, dynamic Function, or shell execution.
1 check has not been run yet.
Releases
README
Wake records your terminal sessions—commands, outputs, git context—so Claude Code can see what you've been doing.
Installation
curl -sSf https://raw.githubusercontent.com/joemckenney/wake/main/install.sh | sh
Setup
Add to ~/.zshrc or ~/.bashrc:
eval "$(wake init zsh)" # or: wake init bash
Add the MCP server to Claude Code:
claude mcp add --transport stdio --scope user wake-mcp -- wake-mcp
Usage
The Workflow
- Start —
wake shell - Work — builds, deploys, debugging
- Ask Claude — it sees your terminal history, no copy-pasting
Example
$ wake shell
$ kubectl logs deploy/api-server | tail -100
# wall of errors
$ kubectl describe pod api-server-7f8b9
# more stuff you don't have time to read
You: Summarize what's happening with the API server
Claude: The API server is crash-looping. From the logs, it's failing to connect to Redis on startup—connection refused to
redis:6379. The pod events show 5 restarts in the last 10 minutes. Looks like the Redis service might be down.
CLI Reference
wake shell # Start recorded session
wake status # Current session info
wake log # Recent commands
wake search "error" # Search history
wake dump # Export session as markdown
wake annotate "note" # Add a breadcrumb for context
wake prune # Delete old sessions
wake prune --dry-run # Preview what would be deleted
wake prune --force # Skip confirmation
wake prune --older-than 7 # Override retention period (days)
wake update # Update to latest version
wake update --check # Check for updates without installing
wake llm status # Check model status (downloaded/loaded)
wake llm download # Pre-download model (optional, auto-downloads on first use)
wake llm clean # Remove orphaned models from previous versions
wake llm clean --dry-run # Preview what would be deleted
MCP Tools
Claude Code uses these tools via the MCP server:
| Tool | Purpose |
|---|---|
wake_status |
Current session info |
wake_list_commands |
List recent commands with metadata and summaries (no full output) |
wake_get_output |
Fetch full output for specific command IDs |
wake_log |
Recent commands with truncated output |
wake_search |
Search command history |
wake_dump |
Export session as markdown |
wake_annotate |
Add notes to the session |
The wake_list_commands + wake_get_output pattern enables tiered retrieval—Claude sees command metadata first, then fetches full output only when needed. This reduces context usage for long sessions.
Configuration
Create ~/.wake/config.toml:
[retention]
days = 21 # Delete sessions older than this (default: 21)
[output]
max_mb = 5 # Max output size per command in MB (default: 5)
[summarization]
enabled = false # Disable LLM summarization (default: true)
min_bytes = 500 # Minimum output size to trigger summarization (default: 1024)
Or use environment variables (take precedence over config file):
export WAKE_RETENTION_DAYS=14
export WAKE_MAX_OUTPUT_MB=10
Old sessions are automatically pruned on each wake shell start.
LLM Summarization
Wake automatically summarizes command outputs using a local LLM (Qwen3-0.6B). Summaries appear in wake_list_commands output, helping Claude quickly understand what happened without reading full output.
Enabled by default. On first run, the model (~380MB) downloads automatically.
- CPU-friendly — The small model runs efficiently without a GPU
- Privacy — All inference happens locally, nothing leaves your machine
- Manual download —
wake llm downloadto pre-download the model - Disable — Set
enabled = falsein config if you don't want summarization
How it works:
- When a command completes with output >
min_bytes, it's queued for summarization - A background task runs inference on the local model
- Summaries are stored in the database and exposed via MCP tools
GPU acceleration (build from source):
The default build and pre-built binaries use CPU inference, which is fast enough for the small model. For faster inference on supported hardware, build with GPU features:
cargo build --release --features cuda # NVIDIA (requires CUDA toolkit)
cargo build --release --features metal # Apple Silicon
How It Works
┌─────────────────────────────────────────────────────────────────────┐
│ wake shell │
│ │
│ ┌───────────┐ ┌─────────────┐ ┌──────────────────────┐ │
│ │ Your │ pty │ Shell │ hook │ Unix Socket │ │
│ │ Terminal │◄─────►│ (zsh/bash) │─────►│ ~/.wake/sockets/* │ │
│ └───────────┘ └─────────────┘ └──────────┬───────────┘ │
│ │ │ │ │
│ │ │ stdout │ cmd events │
│ │ ▼ ▼ │
│ │ ┌────────────────────────────────┐ │
│ │ │ Output Buffer │ │
│ │ └───────────────┬────────────────┘ │
│ │ │ │
│ │ ▼ │
│ │ ┌─────────────┐ ┌──────────────┐ │
│ │ │ SQLite DB │◄───│ LLM Summary │ │
│ │ │ ~/.wake/ │ │ (background) │ │
│ │ └─────────────┘ └──────────────┘ │
└────────┼────────────────────────────────────────────────────────────┘
│ ▲
│ you │ reads
▼ │
┌──────────────┐ ┌──────────────┐ ┌───────────┐
│ Human at │ │ wake-mcp │ mcp │ Claude │
│ Keyboard │ │ MCP Server │◄────────►│ Code │
└──────────────┘ └──────────────┘ └───────────┘
Components
| Component | Purpose |
|---|---|
wake shell |
Spawns a PTY, captures all I/O, listens for hook events |
| Shell hooks | Installed via wake init, notify wake when commands start/end |
| Unix socket | IPC between shell hooks and the wake process |
| SQLite DB | Stores sessions, commands, outputs, annotations, summaries |
| LLM engine | Background task that summarizes command outputs locally |
wake-mcp |
MCP server that exposes wake data to Claude Code |
Data Flow
wake shellspawns your shell inside a PTY and sets$WAKE_SESSION- Shell hooks fire on each command, sending metadata via Unix socket
- PTY output is captured and associated with the current command
- On command completion, exit code + output are written to SQLite
- Large outputs are queued for LLM summarization in the background
- Claude Code queries
wake-mcp, which reads from the database
Constraints
- One session per shell — Each
wake shellcreates an isolated session - Output truncation — Commands with >5MB output are truncated (configurable)
- Auto-cleanup — Sessions older than 21 days are automatically deleted (configurable)
- Local only — All data stays in
~/.wake/, nothing leaves your machine - Shell support — Hooks work with zsh and bash (fish/other shells not yet supported)
Building from Source
git clone https://github.com/joemckenney/wake
cd wake
cargo build --release
# With GPU acceleration (optional)
cargo build --release --features cuda # NVIDIA
cargo build --release --features metal # Apple Silicon
License
MIT
README fetched from the repository 2 hours ago. The original is authoritative.