Hydrate Free — install in five minutes
After this page:hydrate doctorshows all green,/hydrate-lastreturns a briefing from your most recent Claude Code session, and every new session starts with the relevant slice of your project history injected automatically.
Prerequisites
- macOS 13+ or Linux (x86_64 or arm64)
- Claude Code installed and at least one session completed (so there is something to recall)
- Homebrew on macOS (optional — a curl installer works on both platforms)
Install
macOS (Homebrew)
brew install gethydrate/hydrate/hydrate
hydrate setup brew install puts three binaries on your PATH: hydrate (CLI),
hydrate-server (local daemon), and hydrate-mcp (MCP server for
slash commands). hydrate setup walks through hook wiring interactively — every
step is skippable and re-runnable.
macOS / Linux (curl)
curl -fsSL gethydrate.dev/install | sh
hydrate setup
The script detects your platform and arch, downloads the matching release from GitHub,
installs to ~/.local/bin/, and starts the local server. Add
~/.local/bin to your PATH if it is not already there:
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc # or ~/.bashrc
source ~/.zshrc What hydrate setup does
hydrate setup is interactive and idempotent. It covers:
- Wires Claude Code hooks into
~/.claude/settings.json - Registers the MCP server so slash commands work
- Optionally installs the VS Code extension
- Prompts for beta registration (locks in $5/mo Pro pricing forever if you register now)
To run non-interactively with all defaults:
hydrate setup --yes Wire hooks manually (alternative)
If you prefer to skip the wizard:
hydrate install-hooks This installs five things in ~/.claude/settings.json:
UserPromptSubmit→claude-context(injects relevant memory before every prompt)Stop→claude-capture(imports the session transcript after it ends)PreCompact→claude-precompact(saves a recovery snapshot before auto-compaction)SessionStart→claude-session-start(re-injects the snapshot on the next session)mcpServers.hydrate→hydrate-mcp(powers/hydrate-last,/hydrate-project,/hydrate)
Verify
hydrate doctor Expected output (17 checks, all green):
✓ hydrate binary installed (/opt/homebrew/bin/hydrate)
✓ hydrate-server binary installed (/opt/homebrew/bin/hydrate-server)
✓ hydrate-mcp binary installed (~/.local/bin/hydrate-mcp)
✓ ~/.hydrate/ owned by current user
✓ ~/.hydrate/data.db writable
✓ local hydrate-server reachable (http://localhost:<port>)
✓ ~/.hydrate/server.key present (mode 0600)
✓ ~/.claude.json parseable
✓ UserPromptSubmit hook installed
✓ Stop hook installed
✓ PreCompact hook installed
✓ SessionStart hook installed
✓ MCP server "hydrate" configured
✓ MCP reachable with configured api.key
✓ License: Free
✓ Codex CLI (skip if not installed)
✓ Project-ID sentinel 0 facts with empty/NULL project_id
Ready. Then open Claude Code and run:
/hydrate-last Expected: a briefing summarising your most recent session — open questions, decisions made, entities in play. If this is your first session, there is nothing to recall yet; run one Claude Code session and try again.
What changed on your machine
| Path | Purpose |
|---|---|
~/.hydrate/data.db | Local SQLite database — facts, canon, session summaries, embeddings |
~/.hydrate/server.key | Auto-generated API key (mode 0600, never transmitted) |
~/.hydrate/config.yaml | Daemon config (port, log level, storage mode) |
~/.claude/settings.json | Hook entries + MCP server entry added here |
~/.claude/commands/ | /hydrate, /hydrate-last, /hydrate-project slash command files |
~/.local/bin/hydrate-mcp | MCP server binary |
Nothing is transmitted to any remote host unless you explicitly configure enterprise sync.
The local hydrate-server process listens on localhost only.
How memory accumulates
After install, three things happen on every Claude Code session:
- Session start —
claude-session-startre-injects any precompact recovery snapshot from the previous session. - Each prompt —
claude-contextqueries your local store for facts relevant to the current prompt and injects them as additional context. The injected text is invisible unless you check~/.claude/projects/<hash>/*.jsonl(look foradditionalContext). - Session end —
claude-captureimports the full transcript into~/.hydrate/data.db, triggers a micro-consolidation, and updates working memory.
The /hydrate-last slash command queries this store on demand.
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
hydrate doctor fails on local hydrate-server reachable | Server not started | hydrate server start |
/hydrate-last returns nothing | No sessions captured yet | Run a Claude Code session, let it end naturally, then retry |
Hook output missing from additionalContext | Hook not wired | Check ~/.claude/settings.json has the UserPromptSubmit entry; re-run hydrate install-hooks |
hydrate: command not found after curl install | PATH not updated | Add ~/.local/bin to PATH (see curl section above) |
Doctor fails on Project-ID sentinel | Pre-migration DB | Run hydrate doctor --advanced for detail; re-running hydrate server restart usually fixes it |
Next steps
- Pro install — unlock Hydration Packs, Opus→Sonnet handoff, and the beta rate lock
- Team install — share project memory across machines via a git remote
- Claude Code integration details — what each hook does, advanced hook flags
- Codex integration — cross-runtime memory demo (same facts in Codex and Claude Code)