Skip to content

88hours/helix-community

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

71 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Helix

CircleCI Deploy on Railway License

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

Helix Demo


How it works

  1. Crash Handler — receives a Sentry or Rollbar webhook, extracts the crash context, and publishes a crash_analysed event
  2. QA Agent — reads the crash report, writes a failing test case, opens a GitHub Issue, publishes test_case_generated
  3. 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
  4. Notifier — sends a Slack message with the PR link and crash context; escalates with full reasoning if the TDD loop exhausts all retries

Quick start

git clone https://github.com/88hours/helix.git
cd helix
cp .env.example .env   # fill in your keys
docker compose up --build

Claude Code

This 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).


Requirements

  • 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 repo scope
  • A Sentry or Rollbar account (or both)
  • A Slack bot with chat:write scope (strongly recommended)
  • Claude Code CLI installed and authenticated (default Dev Agent backend; swap to any other provider via config)

Configuration

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)

Model & provider

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-6

Override any agent at runtime with env vars:

HELIX_CRASH_HANDLER_PROVIDER=bedrock
HELIX_DEV_PROVIDER=openrouter
HELIX_DEV_MODEL=anthropic/claude-sonnet-4-6

Supported 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

What's included

  • 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

Community vs Cloud

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

Supported languages

Language Test format
Python pytest
JavaScript / TypeScript Jest
Ruby RSpec
Go go test
Java / Kotlin JUnit

Architecture

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.


Running individual services

# 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                    # Notifier

Contact

General enquiries, bug reports, or feedback — open a GitHub issue.

Interested in Helix Cloud (managed hosting, dashboard, enterprise features)? Talk to us.


Licence

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/ or web/) must not be removed.

See LICENSE for full terms. For commercial licensing, contact hello@88hours.io.

About

Self Healing Production Systems

Resources

License

Contributing

Stars

7 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors