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.
- Label a GitHub issue with
jared— a webhook fires to the Outpost Worker - A Flue Durable Object admits the prompt; a thin Sandbox container provides git/gh/node
- The agent analyzes the issue, explores the codebase, implements a fix, runs tests, and opens a draft PR
- 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.
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 (0↔Dockerfile.phase1, 1↔Dockerfile).
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
- 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
# 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 devThe dashboard will be available at http://localhost:5173.
pnpm deploy- 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
See docs/FLUE_PARITY.md for the OpenCode → Flue capability matrix and topology.