Wake is a terminal recording tool that gives Claude Code visibility into your development sessions. Instead of copy-pasting error messages or explaining what you just ran, Claude can see your complete terminal history.
The Problem
Claude Code can't see what happens in your terminal beyond the commands it directly executes. Build failures, error messages, debugging sessions — all invisible. You end up copy-pasting logs or describing what happened.
I got tired of this context-switching, so I built wake.
How It Works
I considered two approaches:
Shell hooks (preexec/precmd) give you command boundaries but miss the actual output — stdout/stderr bypass the shell entirely.
PTY wrapper wraps your shell in a pseudo-terminal, capturing every byte in both directions.
Wake combines both. Shell hooks provide structure (command start/end, exit codes) while the PTY layer captures output. They communicate via Unix socket.
Implementation
Built in Rust using portable-pty for cross-platform PTY handling and tokio for async I/O. The system stores both raw bytes (with ANSI codes) and plaintext, truncating output at 5MB by default.
All data stays local in SQLite (~/.wake/).
MCP Integration
Wake exposes tools through Claude's Model Context Protocol:
- List recent terminal sessions
- Retrieve commands from a session
- Search across terminal history
Once connected, Claude Code can query your terminal history directly.
Try It
curl -sSf https://raw.githubusercontent.com/joemckenney/wake/main/install.sh | sh
Add to your shell config:
eval "$(wake init zsh)" # or bash
Connect to Claude Code:
claude mcp add wake-mcp -- wake-mcp
Then just wake shell and work normally. When you ask Claude for help, it already knows what happened.
GitHub repo — feedback welcome.
Top comments (0)