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+, Linux (x86_64 or arm64), or Windows 10+
  • Claude Code installed and at least one session completed (so there is something to recall)

Install

Hydrate ships as a single Homebrew formula (or MSI for Windows: see /install/). hydrate setup handles everything: it mints your user id, wires hooks for every coding-agent runtime detected on this machine (Claude Code, Codex CLI / App, Mistral Vibe), and offers to install the local semantic embedder.

brew install getHydrate/hydrate/hydrate
hydrate setup

Expected output on a clean install:

Hydrate setup

  ✓ user id ready
  ✓ hooks installed (claude)
  Install local semantic embedder (~115 MB)? Enables paraphrase-aware recall. [Y/n] y
  ✓ semantic embedder installed
  ✓ tier: Free — run `hydrate license activate <key>` to upgrade to Pro/Team/Enterprise

Ready.

Next:
  cd <your-project>
  hydrate init

To verify at any time:

hydrate doctor

A healthy install prints Ready.. If it lists red rows, run hydrate doctor --fix to apply obvious-recovery actions (mint a user id if missing, refresh hooks, clear a tripped spawn-cap budget).

What if I want the old 7-step wizard?

hydrate setup --advanced walks every optional configuration knob: VS Code extension, beta lock-in registration, Claude Code subscription tier, economy mode, BYOK LLM provider keys, enterprise registration.

More on the embedder (~115 MB)

Downloads the bundled MiniLM embedder (all-MiniLM-L6-v2, 384-dim) to ~/.hydrate/runtime/. Hydrate auto-spawns it as a subprocess when the daemon needs to embed text. Required for: semantic similarity gate on /context-preview, paraphrase-aware recall, semantic hydrate distill summaries, per-page embeddings on the Files dashboard. Without it Hydrate falls back to heuristic compression and lexical retrieval. No data leaves your machine: the model runs in-process.

hydrate setup-embedder            # interactive (downloads + verifies SHA-256)
hydrate setup-embedder --yes       # non-interactive
hydrate setup-embedder --check     # verify an existing install
hydrate setup-embedder --uninstall # remove ~/.hydrate/runtime/

Intel Mac (darwin/amd64) support was missing from the v0.6.0 embedder build matrix; fixed in v0.6.1. All platforms work today.

Doctor checklist (detail)

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