Why We Built Our Own Background Agent | Ramp Builders

We built our own background coding agent: Inspect. Inspect writes the code like any other coding agent, but closes the loop on verifying its work by having all the context and tools needed to prove it, as a Ramp engineer would.

For backend work, it can run tests, review telemetry, and query feature flags. For frontend, it visually verifies its work and gives users screenshots and live previews. Agents should have agency, and so we made sure Inspect is never limited by missing context or tools, but only by model intelligence itself.

Each session runs in a sandboxed VM on Modal with everything an engineer would have locally: Vite, Postgres, Temporal, the works. It’s wired into Sentry, Datadog, LaunchDarkly, Braintrust, GitHub, Slack, and Buildkite. It supports all frontier models, MCPs, custom tools, and skills that encode how we ship at Ramp. This also lets builders of all backgrounds contribute with the tooling and setup an engineer would.

Because Inspect sessions are fast to start and effectively free to run, you can use them without rationing local checkouts or worktrees. A builder can kick off multiple versions of the same prompt, and just see which one lands. They can try different approaches or swap models without thinking twice. There’s no limit to how many sessions you can have running concurrently, and your laptop doesn’t need to be involved at all.

The interface supports multiple workflows: Slack, screenshots, a Chrome extension, a web interface, pull-request discussion, and a web-based VS Code editor. Sessions are multiplayer, so colleagues can join a session and help drive it home.

Key infrastructure ideas from the article:

  • Full development environments in Modal sandboxes
  • Filesystem snapshots and prebuilt images refreshed every 30 minutes
  • OpenCode as the agent layer, with plugins and server-first architecture
  • Warm sandboxes for speed and the ability to begin reading before sync fully completes
  • Agent-spawned child sessions for research and parallel work
  • Cloudflare Durable Objects for per-session state and multiplayer synchronization
  • GitHub auth and webhook integration to safely create pull requests on behalf of users