sandbox-agent/foundry
Nathan Flurry 78cd38d826 Convert all actors from queues/workflows to direct actions, lazy task creation
Major refactor replacing all queue-based workflow communication with direct
RivetKit action calls across all actors. This works around a RivetKit bug
where c.queue.iter() deadlocks for actors created from another actor's context.

Key changes:
- All actors (organization, task, user, audit-log, github-data) converted
  from run: workflow(...) to actions-only (no run handler, no queues)
- PR sync creates virtual task entries in org local DB instead of spawning
  task actors — prevents OOM from 200+ actors created simultaneously
- Task actors created lazily on first user interaction via getOrCreate,
  self-initialize from org's getTaskIndexEntry data
- Removed requireRepoExists cross-actor call (caused 500s), replaced with
  local resolveTaskRepoId from org's taskIndex table
- Fixed getOrganizationContext to thread overrides through all sync phases
- Fixed sandbox repo path (/home/user/repo for E2B compatibility)
- Fixed buildSessionDetail to skip transcript fetch for pending sessions
- Added process crash protection (uncaughtException/unhandledRejection)
- Fixed React infinite render loop in mock-layout useEffect dependencies
- Added sandbox listProcesses error handling for expired E2B sandboxes
- Set E2B sandbox timeout to 1 hour (was 5 min default)
- Updated CLAUDE.md with lazy task creation rules, no-silent-catch policy,
  React hook dependency safety rules

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 14:22:37 -07:00
..
docker wip 2026-03-16 14:22:36 -07:00
e2e Rename Foundry handoffs to tasks (#239) 2026-03-11 13:23:54 -07:00
memory Rename Foundry handoffs to tasks (#239) 2026-03-11 13:23:54 -07:00
packages Convert all actors from queues/workflows to direct actions, lazy task creation 2026-03-16 14:22:37 -07:00
research chore(foundry): workbench action responsiveness (#254) 2026-03-14 20:42:18 -07:00
screenshots Fix Foundry UI bugs: org names, sessions, and repo selection (#250) 2026-03-13 20:48:22 -07:00
scripts chore(foundry): workbench action responsiveness (#254) 2026-03-14 20:42:18 -07:00
AGENT-HANDOFF.md docs(foundry): add agent handoff context 2026-03-16 14:22:36 -07:00
AGENTS.md Rename Foundry handoffs to tasks (#239) 2026-03-11 13:23:54 -07:00
CLAUDE.md Convert all actors from queues/workflows to direct actions, lazy task creation 2026-03-16 14:22:37 -07:00
compose.dev.yaml SDK: Add ensureServer() for automatic server recovery (#260) 2026-03-15 20:29:28 -07:00
compose.mock.yaml Remove frontend errors and app passthrough (#251) 2026-03-13 21:14:31 -07:00
compose.preview.yaml chore(foundry): workbench action responsiveness (#254) 2026-03-14 20:42:18 -07:00
CONTRIBUTING.md Rename Foundry handoffs to tasks (#239) 2026-03-11 13:23:54 -07:00
FOUNDRY-CHANGES.md Complete Foundry refactor checklist 2026-03-16 14:22:36 -07:00
foundry-cloud.md Rename Foundry handoffs to tasks (#239) 2026-03-11 13:23:54 -07:00
railway.toml Rename Foundry handoffs to tasks (#239) 2026-03-11 13:23:54 -07:00
README.md chore(foundry): workbench action responsiveness (#254) 2026-03-14 20:42:18 -07:00
tsconfig.base.json Remove frontend errors and app passthrough (#251) 2026-03-13 21:14:31 -07:00

Foundry

TypeScript organization task system powered by RivetKit actors, SQLite/Drizzle state, and OpenTUI.

Documentation: see ../docs/ in the repository root

Quick Install

curl -fsSL https://bun.sh/install | bash
pnpm install
pnpm -w build

Repository Goals

  • Simple: There's one screen. It has everything you need. You can use it blindfolded.
  • Fast: No waiting around.
  • Collaborative: Built for fast moving teams that need code reviewed & shipped fast.
  • Pluggable: Works for small side repositories to enterprise teams.

License

MIT