Skip to content

Getting started

Gaby is self-hosted, so there's one technical step — deploying it — and then a guided in-app wizard does the rest: connecting your help desk, your systems, and your knowledge base. After the deploy you don't touch the command line again.

Who does what

The deploy in step 1 needs someone comfortable with Docker (or your infra/platform person, once). Everything after that — steps 2 and 3 — is point-and-click in the browser, so whoever runs support can own it.

1. Deploy

git clone https://github.com/sky-cloak/gaby
cd gaby

make install     # backend + web + Slack MCP deps
make env         # writes ops/docker/.env — add your ANTHROPIC_API_KEY
make up          # docker compose up -d → backend :8080, web :8090, redis

Then open http://localhost:8090.

Run Gaby in-cluster so it can reach your internal systems without a VPN. See Kubernetes deployment for the manifests and the secret/config layout.

You need two things: Docker and an Anthropic API key (Gaby is bring-your-own-key — your key, your data, your infrastructure). That key goes in ops/docker/.env during make env.

2. Create your admin account

First boot prints a one-time bootstrap URL to the logs. Grab it with:

make bootstrap-token     # or: make logs

Open that URL, set an email + password, and you're the admin. The link is single-use and expires, so future admins never re-see this first-run setup.

3. Let the onboarding wizard do the rest

After you log in, a short wizard walks you through everything — no config files, no command line:

  1. Use case — support, ops, or MSP.
  2. Help desk — connect Zoho Desk, an email mailbox, or Slack so tickets flow in.
  3. History replay — Gaby reads your past tickets to learn your team's voice and common fixes.
  4. Knowledge — upload docs or PDFs Gaby can cite in its answers.
  5. Systems — pick what Gaby investigates against: Postgres, Keycloak, Redis, Sentry, Stripe, a curated community MCP, or your own (local command or a remote URL).
  6. Escalation — where Gaby raises a human when something needs one.

Then send a test ticket through your help desk. Gaby polls it, investigates the root cause against the systems you connected, and either drafts a reply or escalates — per the autonomy level you chose.

Need a connector that isn't in the list?

Anything that speaks the Model Context Protocol works. See Bring your own MCP for a local command or a remote HTTP server, and One MCP vs many for whether to consolidate behind a single internal MCP.


For contributors and operators who want the details

Everything below is optional — the three steps above are the whole setup.

Two-terminal local development
make dev-backend     # terminal 1 — Python, uv, port 8080
make dev-web         # terminal 2 — Vite, port 5173, proxies /api → :8080
Optional Docker profiles
make up-graph        # + Postgres+AGE for graph-native memory
make up-slack        # + @gaby/mcp-slack inbound ticket source
make up-all          # both

Every environment variable Gaby reads is documented in ops/docker/.env.example.

Running the test suite
make test            # full pyramid: backend + web + contract + Slack MCP
make lint            # ruff + mypy + biome + tsc
make release-gate    # dry-run release gate (eval + live-test check)

Where to go next