Gaby¶
An open-source AI support agent. Reads tickets from your help desk, investigates root causes against your own systems (Postgres, Keycloak, Stripe, Sentry, Redis) via MCP connectors, and writes back a grounded reply.
Apache 2.0 · Self-hostable · Runs in your infrastructure · Bring your own LLM key
Get started in 3 minutes Read the architecture
Why this exists¶
Gaby is built by Skycloak, a managed Keycloak-as-a-Service. We're a solo-founder shop, and "support engineer at 3am" is a job we live every week.
We built Gaby for ourselves first. It now handles real tickets against our own Keycloak SaaS, the same workflows, the same connectors, the same safety constraints any operator would need. We open-sourced it because every B2B SaaS team has the same problem and the closed-source alternatives (Intercom Fin, Forethought, Decagon, Ada) ask you to ship customer data into someone else's cloud, with someone else's LLM provider, and trust a closed audit trail.
Gaby is what we'd want to use if we were anyone else.
How it works¶
-
1. Deploy
docker compose up. SQLite by default; Postgres optional. Ships with the agent loop, the safety pipeline, the API, and the web UI bundled. -
2. Connect
Add MCP connectors to your real systems: Postgres, Keycloak, Redis, Sentry, Stripe. Each is a subprocess Gaby spawns over stdio with the standard MCP
initialize+tools/listhandshake. -
3. Tickets flow in
Help desk adapters poll for new tickets: Zoho Desk, IMAP email, or Slack via the reference MCP ticket-source. Gaby claims one and runs the agent loop.
-
4. Resolve or escalate
The loop walks
PLANNING → RETRIEVING → SAFETY_CHK → ACTING → OBSERVING → VERDICT → WRITING_BACK. Gaby drafts a reply, the safety pipeline gates writes, and every action lands in a hash-chained audit log.
What v0.3 ships¶
-
Embeddable chat widget
~12 KB gzipped Preact bundle. Shadow-DOM isolated, authenticated install. Drop one
<script>tag and visitors talk to Gaby. -
Slack inbound
Reference MCP server (
@gaby/mcp-slack) listens for Slack events with HMAC + timestamp verification, channel allowlist, ring buffer overflow. -
Support Lead persona
Dashboard, playbook library (YAML), SLA board, CSAT queue, escalation rules with a tiny
if <cond> then <action>DSL. -
Read-only connectors
Redis, Sentry, Stripe as MCP read-only servers. Stripe is structurally read-only, money-touching writes are policy-excluded from the tool surface.
-
Ask Gaby + Inbox
Read-only Q&A console with cited answers. Unified Inbox merges tickets + widget + Slack chats into one SSE feed.
-
Escalation channels
Fan-out alerts to Slack, email (SMTP), SMS (Twilio), Opsgenie, and SIGNL4. Per-channel test buttons, per-row failure isolation.
The boring parts that matter¶
Safety pipeline at 100% line + branch coverage
Scopes DSL → authz matrix → PII redaction → hash-chained audit → approval queue. Five hypothesis property tests guard the invariants: deny-by-default, deny-beats-allow, hash-chain integrity, tamper detection, redaction idempotence. The CI gate fails the build on any drop. See Safety.
Structural agent loop, not a framework
backend/src/gaby/agent/loop.py is a hand-written state machine.
Working memory snapshots at every transition so a crashed investigation
resumes from the last snapshot without re-running tool calls. One Python
module per LLM-call purpose; prompts are versioned Markdown files.
BYOK, runs on your hardware
Anthropic + OpenAI direct SDK clients, no proxy. LiteLLM as a library only
when you want to swap providers. Pre-call BudgetGuard with token + USD
+ wall-clock + iteration caps. No outbound telemetry beyond opt-in
anonymous usage pings.
How is this "open"?¶
Apache 2.0. Self-host forever, no paywall, no feature gate, no "free tier." The code you read on GitHub is the code that runs on your servers.
No pricing tier exists yet. We may eventually offer a hosted SaaS or an Enterprise tier (SSO/SAML, on-prem support contracts, premium connectors), but those are open questions on a v0.5+ roadmap, not products today. See BUSINESS.md for the honest position on what's free now, what's likely to stay free, and what might one day cost money.
Where to go next¶
- Getting started,
docker compose upto a working install in 3 minutes - Architecture, the agent loop, the safety pipeline, the memory hierarchy
- Spec, what Gaby is for, the four personas, success metrics
- Connectors, what Gaby can talk to today
- Changelog, every iter, every shipped behavior
- Source on GitHub: Apache 2.0
Built by Skycloak. We use it ourselves to support our customers.