Host and origin
- A dedicated
linux/amd64server with root or passwordless sudo. - Docker Engine, Docker Compose 2.20+, Node.js 24, and Git.
- An exact private HTTPS origin with DNS and a reverse proxy or private ingress.
For humans / Guided hand-off
Point a capable coding agent at the stable setup runbook. It will inspect first, ask for one decision at a time, and use the canonical Kiteyard installer.
Copy one short instruction that sends it to the stable, machine-readable runbook.
Before you start
PostgreSQL is included. Optional integrations can wait until the core passes verification.
linux/amd64 server with root or passwordless sudo.read:packages for the private application packages ghcr.io/kiteyard/headquarters and ghcr.io/kiteyard/agent-manager. The separate ghcr.io/kiteyard/agent-manager-worker-runtime image is public and does not use this PAT.What happens next
The agent should not jump ahead to optional features when the core is unhealthy.
Confirm scope, architecture, host suitability, versions, ports, DNS, and existing Docker state using read-only checks.
Pin a reviewed repository revision and use the package-read PAT only for pulls of the private ghcr.io/kiteyard/headquarters and ghcr.io/kiteyard/agent-manager packages. The public ghcr.io/kiteyard/agent-manager-worker-runtime image remains separate. Never record the PAT in Kiteyard’s environment file.
Set the HTTPS origin and administrator details in a protected host file. The installer generates internal secrets.
Run deploy/core/install.mjs. It writes the retained installation to /opt/kiteyard and starts the canonical Compose stack.
Check service state, migrations, loopback access, the public route, browser sign-in, and the expected built-in defaults.
Configure OpenAI embeddings, ChatGPT device login, Portainer, or external MCP clients only when you choose them.
Capture non-secret versions and decisions, then protect the retained environment, database, worker data, and recovery path.
After the core is healthy
These are separate credentials with different authority. Keep them distinct.
In Agent Manager, disable and drain the managed worker before changing its login. Open Global Settings → ChatGPT Authentication Profiles, start the device login for Default (legacy), finish it in your own browser, then re-enable the worker.
OPENAI_API_KEY enables Headquarters document embeddings and semantic search.Agent Manager MCP grants are installation-wide operational authority. They are off by default and should remain off unless that authority is explicitly required.
Optional MCP clients
Replace the host, keep the token in the client’s secret environment, and verify with a read-only workspace query first.
Make KITEYARD_MCP_TOKEN available to the Codex process, then register the server:
codex mcp add kiteyard \
--url https://YOUR-KITEYARD-HOST/mcp \
--bearer-token-env-var KITEYARD_MCP_TOKEN
codex mcp list
codex mcp get kiteyard --jsonRead the token without echoing it and create a user-scoped HTTP connection:
read -rsp 'Kiteyard MCP token: ' KITEYARD_MCP_TOKEN; echo
claude mcp add --transport http kiteyard --scope user \
https://YOUR-KITEYARD-HOST/mcp \
--header "Authorization: Bearer $KITEYARD_MCP_TOKEN"
unset KITEYARD_MCP_TOKEN
claude mcp listPortainer is not a core prerequisite. It may run on the same physical server or a separate environment VPS, but keeps its own Compose lifecycle. Agent Manager needs both managed and strict read-only private HTTPS MCP endpoints plus their two distinct credentials. Configure all four values together only after the core passes verification.