Autonomous incident response — from production crash to fix suggestion, without waking anyone up.
Helix watches your error tracker. When a bug lands, it writes a failing test, runs a TDD loop to produce a passing fix, and opens a pull request. Your team approves in Slack before anything merges.
Pipeline: Crash Handler → QA Agent → Dev Agent → Notifier → Human Review
- Crash Handler — receives a Sentry or Rollbar webhook, extracts the crash context, and publishes a
crash_analysedevent - QA Agent — reads the crash report, writes a failing test case, opens a GitHub Issue, publishes
test_case_generated - Dev Agent — clones the repo, writes the fix using a TDD loop (Claude Code CLI runs the failing test, iterates up to 3 times), commits, and opens a GitHub PR
- Notifier — sends a Slack message with the PR link and crash context; escalates with full reasoning if the TDD loop exhausts all retries
git clone https://github.com/88hours/helix.git
cd helix
cp .env.example .env # fill in your keys
docker compose up --buildThis repo ships a Claude Code skill that walks contributors through local setup interactively. If you have Claude Code installed, open the repo and run:
/setup
Claude will check your prerequisites, help you fill in .env, start the stack, and run the test suite — step by step.
Then point your Sentry or Rollbar webhook at http://your-host:8000/webhook/sentry (or /webhook/rollbar).
- Docker + Docker Compose
- At least one LLM provider — Anthropic API key, OpenRouter API key, AWS Bedrock IAM credentials, or a locally running Ollama instance
- A GitHub personal access token with
reposcope - A Sentry or Rollbar account (or both)
- A Slack bot with
chat:writescope (strongly recommended) - Claude Code CLI installed and authenticated (default Dev Agent backend; swap to any other provider via config)
All configuration is via environment variables. Copy .env.example to .env and fill in your values.
| Variable | Required | Description |
|---|---|---|
ANTHROPIC_API_KEY |
One LLM key required | Anthropic API key |
OPENROUTER_API_KEY |
One LLM key required | OpenRouter API key |
REDIS_URL |
Yes | Redis connection URL |
GITHUB_TOKEN |
Yes | GitHub PAT with repo scope |
HELIX_GITHUB_REPO |
Yes | Repo to fix bugs in (owner/name) |
SENTRY_WEBHOOK_SECRET |
One of these | Sentry client secret |
ROLLBAR_ACCESS_TOKEN |
One of these | Rollbar project read token |
SLACK_BOT_TOKEN |
Recommended | Bot token (xoxb-...) |
SLACK_SIGNING_SECRET |
Recommended | Slack app signing secret |
SLACK_APPROVAL_CHANNEL |
Recommended | Channel for Slack notifications |
AWS_BEDROCK_REGION |
Bedrock only | AWS region (default: us-east-1) |
Each agent has its own provider and model set in config.yaml. Defaults:
agents:
crash_handler:
provider: anthropic
model: claude-haiku-4-5-20251001
qa:
provider: anthropic
model: claude-haiku-4-5-20251001
dev:
provider: claude-code
model: claude-sonnet-4-6Override any agent at runtime with env vars:
HELIX_CRASH_HANDLER_PROVIDER=bedrock
HELIX_DEV_PROVIDER=openrouter
HELIX_DEV_MODEL=anthropic/claude-sonnet-4-6Supported providers:
| Provider | Key required | Notes |
|---|---|---|
anthropic |
ANTHROPIC_API_KEY |
Default for Crash Handler and QA Agent |
bedrock |
AWS IAM role (no stored key) | Set AWS_BEDROCK_REGION if not us-east-1 |
openrouter |
OPENROUTER_API_KEY |
Any model on OpenRouter's catalogue |
ollama |
None | Set HELIX_<AGENT>_BASE_URL for non-default URL |
claude-code |
Claude Code CLI auth | Default Dev Agent backend |
opencode |
OpenCode CLI installed | Dev Agent alternative |
goose |
Goose CLI installed | Dev Agent alternative |
- Sentry and Rollbar webhook ingestion
- Crash analysis and test case generation
- Full TDD loop: clone repo, run failing test, iterate fix with Claude Code CLI, open PR
- Fix suggestion posted to GitHub Issue as a comment on the first iteration
- Slack notifications with crash context and Issue link
- Self-hosted via Docker Compose
| Feature | Community (this repo) | Helix Cloud |
|---|---|---|
| All 4 agents | Yes | Yes |
| Sentry + Rollbar | Yes | Yes |
| GitHub Issues + fix suggestions | Yes | Yes |
| TDD loop (clone → test → fix → PR) | Yes | Yes |
| Automated PR creation | Yes | Yes |
| Slack notifications | Yes | Yes |
| Self-hosted | Yes | Yes |
| React dashboard | — | Yes |
| Auth0 / SSO | — | Yes |
| Per-project credentials | — | Yes |
| GitHub App (multi-repo) | — | Yes |
| OpenTelemetry tracing | — | Yes |
| LangSmith tracing (basic) | Yes (opt-in) | Yes |
| LangSmith evals | — | Yes |
| Managed hosting | — | Yes |
| Language | Test format |
|---|---|
| Python | pytest |
| JavaScript / TypeScript | Jest |
| Ruby | RSpec |
| Go | go test |
| Java / Kotlin | JUnit |
agents/
crash_handler/ FastAPI app — receives webhooks, runs crash analysis
qa/ Subscriber — generates test cases, opens GitHub Issues
dev/ Subscriber — TDD loop: clone repo, run failing test, fix with Claude Code CLI, open PR
notifier/ Subscriber — sends Slack notifications
core/
config.py Loads config.yaml + env var overrides; per-agent AgentConfig
events.py Redis Pub/Sub publish/subscribe
state.py Redis read/write helpers, keyed by incident_id
models.py Pydantic models shared across agents
llm.py LLM router — dispatches to Anthropic, Bedrock, OpenRouter, Ollama, Claude Code, OpenCode, or Goose based on agent config
preflight.py Startup env validation — checks at least one LLM provider is configured
integrations/
sentry.py Sentry webhook parsing
rollbar.py Rollbar webhook parsing
github.py GitHub Issues
slack.py Slack messages
Agents communicate via Redis Pub/Sub events. State is stored in Redis, keyed by incident_id. No agent calls another agent directly.
# Crash Handler only (webhook receiver)
docker compose up redis crash_handler
# Watch logs for a specific service
docker compose logs -f dev
# Run without Docker (for development)
pip install -e "."
uvicorn agents.crash_handler.main:app --reload # crash handler
python -m agents.qa.main # QA agent
python -m agents.dev.main # Dev agent
python -m agents.notifier.main # NotifierGeneral enquiries, bug reports, or feedback — open a GitHub issue.
Interested in Helix Cloud (managed hosting, dashboard, enterprise features)? Talk to us.
Helix is licensed under a modified Apache 2.0 licence with additional commercial restrictions. Key points:
- Personal and commercial self-hosted use is permitted.
- Multi-tenant deployments (one workspace per tenant) require a commercial licence from 88hours.
- Dashboard branding (logo / copyright in
dashboard/orweb/) must not be removed.
See LICENSE for full terms. For commercial licensing, contact hello@88hours.io.
