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

Hydrate Enterprise — join an organisation server

After this page: your local Hydrate instance syncs facts and canon against your organisation's Hydrate server. Shared pinned facts appear in every team member's sessions automatically, without a separate git remote.

Prerequisites

  • Hydrate Pro installed and working (hydrate doctor all-green). See Pro install.
  • A join code and server URL from your Hydrate admin. The server URL is typically http://<internal-host>:8095.

Join

hydrate auth join \
  --code=<join-code> \
  --server=http://<internal-host>:8095

--code is a single-use token your admin generates on the server. It expires after 24 hours. --server is the server's base URL.

You will be prompted for your display name (or pass --display-name="Your Name").

After joining:

hydrate enterprise status

Expected output:

sync target:   http://<internal-host>:8095
last push:     never
last pull:     never
queued writes: 0

Verify the connection

hydrate doctor

Look for License: Enterprise in the output. If it shows Pro, the licence has not propagated yet — run:

hydrate enterprise pull
hydrate server restart
hydrate doctor

Environment variables

If the server requires authentication headers or a non-default key, set these before running hydrate auth join:

VariablePurpose
HYDRATE_CONTEXT_APIServer base URL (same as --server)
HYDRATE_CONTEXT_KEYAPI key (X-API-Key header)
HYDRATE_CONTEXT_USERUser ID path segment (defaults to your machine's user UUID)

Add them to your shell profile:

export HYDRATE_CONTEXT_API=http://192.168.1.100:8095
export HYDRATE_CONTEXT_KEY=hk_yourteamkey

How sync works

After joining, your local Hydrate hooks (claude-context, claude-capture) read from and write to both your local ~/.hydrate/data.db and the enterprise server. Reads resolve locally first (lower latency); writes fan out to the server in the background with a 1500 ms timeout. If the server is unreachable, writes queue in the local DB and flush on the next successful connection.

To push queued writes immediately:

hydrate enterprise push

To pull the latest shared facts:

hydrate enterprise pull

Pinned org-wide facts (canon)

Your admin can pin facts that appear in every employee's session. You can view them:

hydrate canon list --project=org-wide

These inject automatically — you do not need to do anything to receive them.

Offline operation

Hydrate is designed to be fully functional without the enterprise server. If the server is down:

  • All hooks exit 0 (fail-open) and write to the local queue.
  • /hydrate-last still returns your personal history from the local store.
  • Pushes queue and flush automatically when the server comes back.

Leaving the organisation

hydrate uninstall-hooks   # remove CC integration first (optional)
hydrate uninstall         # removes binaries; prompts whether to delete ~/.hydrate/

Your local ~/.hydrate/data.db is not deleted unless you pass --purge.

What changed on your machine

PathChange
~/.hydrate/enterprise.jsonServer URL, join token, your user ID
~/.hydrate/license.jsonUpdated to Enterprise edition
~/.hydrate/config.yamlEnterprise sync endpoint added

Troubleshooting

SymptomLikely causeFix
hydrate auth join fails with "invalid code" Code expired or typo Ask admin for a new code
hydrate enterprise status shows connection error Server unreachable Check server URL and network; confirm server is running (ssh admin@server 'hydrate-server status')
Doctor still shows Pro after join Licence cache hydrate enterprise pull && hydrate server restart
Context injection is slow High server latency Raise the hook timeout in ~/.claude/settings.json (default 1500 ms); or run hydrate config set context.timeout_ms=3000

Admins: issuing join codes

This is handled on the server side. On the server:

hydrate workspace invite [email protected]

The server prints the join code. It is single-use and expires after 24 hours.

Next steps