Skip to content

Decide: converge Junior's sandbox runtime with Box, or justify staying separate #1830

Description

@sentry-junior

Context

Junior's sandbox runtime (packages/junior/src/chat/sandbox/README.md) already runs on Vercel's Sandbox API: an opaque SandboxRef, a bespoke workspace-snapshot build pipeline (SQL-tracked, sliced background job), and its own pause/resume-adjacent lifecycle for repo checkouts + setup scripts.

Separately, Developer Infrastructure is building Box (Notion: "Box (Remote Dev Environments)"), a harness-agnostic CLI/primitive for durable, provisioned Sentry devboxes — pause/resume, snapshot/fork, devserver-ready, credentials injected, meant to be usable by Claude Code, Codex, Cursor, and Junior alike. Box has also landed on Vercel Sandboxes as its provider.

Both systems now sit on the same underlying substrate (Vercel Sandboxes / MicroVMs) and solve overlapping problems: durable, resumable, snapshot-capable execution environments for agents working on Sentry code.

The ask

This issue is not a build task. It's a forcing function to get an explicit decision instead of two systems quietly diverging:

  1. Should Junior's workspace-snapshot system be replaced by, or built on top of, Box once Box is stable?
  2. If not, what capability does Junior's bespoke snapshot pipeline need that Box does not (and will not) provide — e.g. conversation-scoped lifecycle, credential isolation model, snapshot hash keyed on plugin/runtime dependency profile, cold-build timing guarantees?
  3. Who owns the decision — Junior/chat-runtime maintainers, Developer Infrastructure, or both jointly — and by when should it be revisited (e.g. when Box exits its current provider-evaluation phase)?

Why now

No one has proposed convergence yet, and the two efforts are on a path to duplicate plumbing (credential injection, pause/resume, snapshot forking) independently on the same substrate. Better to name the fork in the road early than reconcile two production systems later.

Non-goals

  • This issue does not propose an implementation or migration plan.
  • This issue does not assume convergence is correct — a documented decision to stay separate, with reasons, is an acceptable outcome.

cc: raised from a Slack discussion with Dave Rosenthal about the relationship between Junior's sandbox durability limitations and Box.

via Dave Rosenthal.

--

View Junior Session [Sentry]

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions