Documentation Index
Fetch the complete documentation index at: https://docs.yourhq.ai/llms.txt
Use this file to discover all available pages before exploring further.
Installation
HQ can run on one machine or across multiple machines. Start simple: one Docker host, one Supabase project, one gateway.Fastest path
Use the installer and finish setup in the browser.
Inspect first
Clone the repo and run Docker Compose yourself.
Develop locally
Use the development overlay for live UI reloads.
TL;DR
On any Linux or macOS host with Docker:Prerequisites
Docker
- Linux: the installer auto-installs Docker for you via
get.docker.comif it’s missing. - macOS: download Docker Desktop first.
- Windows: install WSL2 + Docker Desktop for Windows, then run the installer from a WSL shell.
Supabase
You need a Supabase project before running the installer.- Sign up at supabase.com (free tier is fine for personal use).
- Create a new project. Wait ~2 minutes for provisioning.
- Open SQL Editor and run every
.sqlfile indb/migrations/in filename order (001through017). Each file is named descriptively. The onboarding wizard handles this automatically if you set up through the browser. - Go to Authentication → Users → Add user (check “Auto Confirm User”). Remember the email/password.
- Go to Project Settings → API. Copy three values:
- Project URL
- Anon public key
- Service role key (the secret one)
(Optional) Tailscale
If you plan to access HQ from a second device (phone, laptop, another machine), sign up for Tailscale before installing. Generate a reusable auth key at login.tailscale.com/admin/settings/keys and paste it when the installer asks.Paths
Path 1: one-line install (recommended for most users)
- Checks that Docker is present; prompts to install it if not (Linux only).
- Asks which networking mode you want:
- Local-only (default) — HQ is reachable only on this machine.
- Tailscale — installs Tailscale on the host; reachable from any device on your tailnet.
- Public HTTPS — advanced; requires you to set up a reverse proxy (Caddy, nginx, etc.) yourself. HQ does not bundle one.
- If you pick Tailscale, asks for your auth key and optionally an exit node.
- Optionally asks for GitHub sync creds (skip to run without git remote).
- Writes
.env, pulls images from GHCR, runsdocker compose up -d(full stack: UI + gateway + dispatcher + runner). - Opens your browser to
http://localhost:3000.
Path 2: clone and run (recommended for developers)
Path 3: development mode
For contributors — live-reload the UI as you edit source:apps/ui/. See Local development for full dev setup.
After install
- Open
http://localhost:3000in your browser. - Log in with the Supabase auth user you created.
- Complete the setup wizard (workspace name, pipeline stages, custom fields, task streams).
- Authenticate at least one model provider from Settings → Connections. API-key providers can be added directly. Interactive providers show the login URL or device flow in the UI and complete through the command runner.
- Create your first agent: Agents → New Agent → pick a template → name → choose a messaging channel (Telegram, Discord, Slack, or None) → enter credentials → Create.
- For Telegram or Discord: send your bot a DM — it replies with a pairing code. Paste it into the agent’s detail page. For Slack: the agent is active in your workspace immediately. Next message triggers the agent.
Multi-machine setups
Splitting UI and gateway across machines
HQ includes UI-driven gateway registration. The manual process still works, but most users should use Settings → Gateways → Add Gateway. Recommended process:- On the UI host: run the installer normally.
- Open Settings → Gateways → Add Gateway.
- Enter a label and, optionally, a Tailscale auth key.
- Run the generated one-line installer on the gateway host.
- Keep the dialog open until the registration token is consumed and the gateway appears.
- On the UI host: run the installer normally (Tailscale mode recommended).
- On the gateway host: clone the repo, copy
.env, and set:- A unique
GATEWAY_ID(e.g.mac-mini,vps-eu) - The same
SUPABASE_URL+ keys as the UI host GATEWAY_AUTH_TOKENmatching the UI’s
- A unique
- On the gateway host: install Tailscale and join the same tailnet as the UI host.
- Set
HOST_REACHABLE_URL=http://<gateway-host-tailscale-ip>in the gateway’s.env. docker compose up -d gateway dispatcher runner(skipui).- The gateway registers itself in Supabase’s
gatewaystable. The UI sees it within 30 seconds.
Troubleshooting install
- “Docker is not installed” on macOS/Windows: install Docker Desktop (GUI app), not the Linux installer.
- UI shows the onboarding screen every time I load it: the
ui-configvolume got wiped or isn’t persisting. Checkdocker volume inspect yourhq-ui-configand re-complete onboarding. - “Pull access denied” on GHCR: only relevant if the repo is private.
docker login ghcr.io -u <your-gh-user>with a PAT that hasread:packagesscope. docker compose upfails with “port already in use”: something else is on port 3000 or 6901 on your host. ChangeUI_HOST_PORT/NOVNC_HOST_PORTin.env.- Setup wizard 500s on “Complete setup”: CSRF origin mismatch. Set
ALLOWED_ORIGINSin.envto match the host you’re accessing from. Restart the UI. - Onboarding validator says a table/function doesn’t exist: you haven’t run all migrations. Run every file in
db/migrations/in filename order and retry.