GitHub - getsentry/outpost: Autonomous GitHub agent powered by OpenCode · GitHub
Skip to content

Repository files navigation

Outpost

AI coding agent infrastructure for Sentry. Outpost connects GitHub issues to an autonomous coding agent (Flue, powered by Pi) running on Cloudflare Workers + Containers, with a dashboard to monitor sessions in real time.

How it works

  1. Label a GitHub issue with jared — a webhook fires to the Outpost Worker
  2. A Flue Durable Object admits the prompt; a thin Sandbox container provides git/gh/node
  3. The agent analyzes the issue, explores the codebase, implements a fix, runs tests, and opens a draft PR
  4. Monitor progress in the Outpost dashboard — see live sessions, messages, tool calls, and cost

When the agent creates a PR that references the issue (e.g. "Fixes #123"), subsequent PR events (reviews, CI results) are routed to the same conversation, preserving full context.

Architecture

Default today (Phase 1): in-container Flue + Lore (FLUE_NATIVE=0 + Dockerfile.phase1).

GitHub Webhook → Cloudflare Worker (Hono)
                      ├─ Cloudflare Sandbox container
                      │     ├─ Flue Node (Jared + explore/implement/ship)
                      │     └─ Lore gateway (optional; health-probed)
                      └─ D1 (webhook events + dashboard session mirror)

Phase 2 target (FLUE_NATIVE=1 + thin Dockerfile — flip both together):

GitHub Webhook → Cloudflare Worker (Hono + Flue)
                      ├─ Flue Jared Durable Object  (agent brain + session + cron)
                      │        └─ Cloudflare Sandbox container (git / gh / node)
                      ├─ D1 (webhook events + dashboard session mirror)
                      └─ Lore gateway (standalone) ← model traffic via setProvider
  • Worker: Hono app on Cloudflare Workers — webhooks, dashboard, auth-gated Flue agent routes
  • Flue agent: Tiered subagents (explore, implement, ship); DO schedules only in Phase 2
  • Container: Phase 1 = Flue+Lore; Phase 2 = thin Linux sandbox
  • Lore: See docs/LORE_GATEWAY.md
  • Dashboard: React SPA with session sidebar, chat-style message viewer, and container management

FLUE_NATIVE and containers[].image must stay paired (0Dockerfile.phase1, 1Dockerfile).

Project structure

apps/
  server/                   # Cloudflare Worker + React dashboard
    src/
      agents/               # Flue agents: jared (4.8) + explore/implement/ship
      cloudflare.ts         # Sandbox export + cron scheduled handler
      app.ts                # Hono + Flue createAgentRouter mount
      routes/               # webhooks, containers, events, …
      lib/containers/       # sandbox setup, Flue dispatch, session persistence
      client/               # React SPA
    container/
      Dockerfile            # Thin sandbox image (Phase 2)
      Dockerfile.phase1     # In-container Flue + Lore (Phase 1)
      flue/                 # Phase 1 Node Flue app source
      skills/               # Canonical agent skills (SKILL.md + references/ + SPEC.md)
      .agents/skills/       # Generated from skills/ (SKILL.md + references/); baked into the image
packages/
  utils/
  validations/
docs/
  FLUE_PARITY.md            # Phase 0 spike findings
  LORE_GATEWAY.md           # Standalone Lore deploy notes

Setup

Prerequisites

  • Node.js 22+
  • pnpm 10+
  • Wrangler (Cloudflare Workers CLI)
  • A GitHub App configured with webhook permissions
  • OpenRouter / Anthropic / OpenAI API keys
  • (Phase 2) A standalone Lore gateway — see docs/LORE_GATEWAY.md

Local development

# Install dependencies
pnpm install

# Set up environment variables
cp apps/server/.env.example apps/server/.dev.vars
# Edit .dev.vars with your API keys and GitHub App credentials

# Run D1 migrations
pnpm -F @jared/server db:migrate:dev

# Start dev server
pnpm dev

The dashboard will be available at http://localhost:5173.

Deploy

pnpm deploy

Dashboard

  • Containers page — agent containers with session count, message count, cost, and status
  • Container detail — session sidebar + chat-style message viewer
  • Webhook events — incoming GitHub webhooks with status tracking
  • Container management — destroy containers, clear sessions, execute commands

Migration notes

See docs/FLUE_PARITY.md for the OpenCode → Flue capability matrix and topology.

About

Autonomous GitHub agent powered by OpenCode

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages