BETA In open beta. Install live. Lock $5/mo for your first 12 months. See pricing →
Install / Free

Hydrate Free — install in five minutes

After this page: hydrate doctor shows all green, /hydrate-last returns 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:

  1. Wires Claude Code hooks into ~/.claude/settings.json
  2. Registers the MCP server so slash commands work
  3. Optionally installs the VS Code extension
  4. 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:

  1. UserPromptSubmitclaude-context (injects relevant memory before every prompt)
  2. Stopclaude-capture (imports the session transcript after it ends)
  3. PreCompactclaude-precompact (saves a recovery snapshot before auto-compaction)
  4. SessionStartclaude-session-start (re-injects the snapshot on the next session)
  5. mcpServers.hydratehydrate-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

PathPurpose
~/.hydrate/data.dbLocal SQLite database — facts, canon, session summaries, embeddings
~/.hydrate/server.keyAuto-generated API key (mode 0600, never transmitted)
~/.hydrate/config.yamlDaemon config (port, log level, storage mode)
~/.claude/settings.jsonHook entries + MCP server entry added here
~/.claude/commands//hydrate, /hydrate-last, /hydrate-project slash command files
~/.local/bin/hydrate-mcpMCP 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:

  1. Session startclaude-session-start re-injects any precompact recovery snapshot from the previous session.
  2. Each promptclaude-context queries 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 for additionalContext).
  3. Session endclaude-capture imports 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

SymptomLikely causeFix
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