Skip to content

Data & backups

Everything Gray knows lives on your box in plain, copyable locations.

PathWhat it is
GRAY_VAULT_DIR (default /var/lib/voice-brain/)The vault — the part that matters
<vault>/selfhost_auth.jsonYour account: email, sessions (and the box code until it’s used)
<vault>/entitlement.jsonYour plan entitlement
<vault>/voice_usage.jsonThe premium-voice meter ledger
<vault>/console_targets.jsonPaired SSH hosts + pinned host keys
<vault>/console_sessions.jsonTerminal session records
<vault>/snippets.jsonSaved terminal commands
<vault>/conversations/*.jsonlConversation history (GRAY_CONVERSATIONS_DIR, set by the installer)
GRAY_BRAIN_CWDThe working directory your agents operate in (their working files live here)
.env (next to the server)Your configuration and keys
Server logjournald — journalctl -u gray-server

All vault files are written 0600 (owner-only).

  1. The vault directory — small, changes rarely, contains your account, pairings, and entitlement.
  2. .env — your configuration and keys.
  3. Your brain working directory if your agents keep work there you care about.

A nightly tar of those to anywhere durable is enough:

Terminal window
tar czf gray-backup-$(date +%F).tgz /var/lib/voice-brain /path/to/server/.env

Fresh box → run the installer → stop the service → restore the vault dir and .env → start the service. Your account, plan, and pairings come back; the app reconnects to the new address via Servers.

Hostname caveat: if the restored box has a new tailnet hostname, update GRAY_RP_ID/GRAY_RP_ORIGIN in the .env to the new name (the script installer does this on a fresh install) and reconnect the app to the new address. Sign-in stays the email + code flow either way.

Stop the service, remove the vault directory, the brain workspace, and the .env. There is no Gray-side copy to ask about — that’s the product.