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