Answer the GLAS-WP-0015 handoff for SAND-WP-0015-T04 without activating any production path. Add candidate profile profile.claude-agent-dev-proof v1.1.0 (ext.bwrap, localhost-only, default: deny, declared api.anthropic.com:443) for GLAS-WP-0012 review. The committed profile grants no egress by itself — ext.bwrap refuses it unless owner extension config independently allowlists the destination — and a regression test asserts that fail-closed default. Reconcile the differing project examples in favour of the acceptance runner's actor agt / project glas-local-proof, keeping the documented credential route bound to that single project rather than broadening it. Record the return contract (profile revision, host scope, consumer tuple, runtime digest and mount paths, declared egress, value-free denial/cleanup receipts) in docs/bwrap-runtime.md. T04 stays wait: Claude credential lane, owner machine authentication, pinned Claude executable and real-model acceptance remain operator gated. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HjyScPKb8MV8y2VZHGFSSV Assistant: claude-code Assistant-Model: opus Assistant-Process: 716401@bnt-lap001 Assistant-Session: 0d02392b-d4a8-4fed-98e3-32333f768169
10 KiB
| domain | repo | updated |
|---|---|---|
| infotech | sand-boxer | 2026-06-24 |
SCOPE
This file helps you quickly understand what this repository is about, when it is relevant, and when it is not.
One-liner
Coulomb meta-framework for establishing sandboxes — profile-based provision, extension routing, workspace checkpoints, lifecycle registration, and host telemetry — so agents and automations run in isolated venues without workstation blast radius.
Core Idea
sand-boxer is the sandbox establishment service (OpenRouter for sandboxes). It answers which recipe applies, which backend fulfills it, where it runs, and what happened during lifecycle. It is self-sustained — it does not depend on wise-validator or other sibling projects.
A profile is a named, versioned recipe bound to an extension (backend
adapter). Consumers request create; sand-boxer provisions on a placement host,
confirms reachability (ready), emits State Hub lifecycle events, and tears down
on destroy or operator reap.
wise-validator (separate repo) consumes sand-boxer for cross-repo e2e validation; sand-boxer does not run health checks or test commands.
Lineage: provision/teardown extracted from the-custodian/e2e-framework/;
ext.vm-packer attach mode covers build-machine workspaces; full Packer build
orchestration from create remains deferred.
In Scope
- Unified establishment API — CLI v0 + HTTP stub (
create,get,list,destroy,recreate,snapshot,restore,extend-ttl,expire) - Profile catalog — six profiles: compose e2e/checkpoint, sandbox canary, vm-haskell-build, saas-stub, burst-sandbox
- Extension platform —
ext.compose-ssh,ext.vm-packer,ext.saas-stub; plugin contract indocs/meta-framework.mdanddocs/extension-sdk.md - Routing engine —
RouteSpecstrategies (prefer-self-hosted,lowest-cost,lowest-latency,explicit); seedocs/routing.md - Payments v0 — credits store, pre-create balance check, post-destroy debit
for metered extensions; see
docs/payments.md - Workspace checkpoints — snapshot index + extension hooks; see
docs/snapshots.md - Host placement — profile
placement+SANDBOXER_HOSToverrides; sandboxer01 preferred, CoulombCore interim - Lifecycle + State Hub — transitions emit progress events; JSON stores at
~/.local/share/sandboxer/sandboxes.jsonandsnapshots.json - Host telemetry — canary self-deploy,
inspect host/inspect stale,reap-stale(SAND-WP-0008) - Capability registry —
capability.execution.sandbox-provision(draft) - Sibling integration contracts —
docs/integrations/(glas-harness, wise-validator, snuggle-inventor) - Runbooks and smoke — compose-e2e, sandbox-canary; remote smoke scripts
- Workplans and charter — ADR-001 files in
workplans/,INTENT.md
Out of Scope
| Concern | Owner |
|---|---|
| E2e health checks, test execution, validation results | wise-validator |
| Agent gateway, tools, memory | glas-harness |
| Code generation, tech specs | snuggle-inventor |
| Workplan / task state | state-hub |
| Scheduling | activity-core |
| SSH tunnels | ops-bridge |
| SSH certificate issuance | ops-warden |
| Canon and agent instruction canon | the-custodian |
| Capability federation hub | reuse-surface |
| Production on Railiance01 | railiance-apps / domain repos |
| Real E2B / Modal / Daytona cloud APIs | Future adapters (stub in-repo) |
| fin-hub billing export | Future |
sand-boxer consumes ops-bridge and ops-warden for reachability; it does not own tunnels or CAs.
Relevant When
- Provisioning an isolated compose stack on CoulombCore / sandboxer01
- Attaching a workspace on a pre-built VM (
profile.vm-haskell-build) - Saving or restoring a workspace checkpoint (
profile.compose-checkpoint) - Choosing self-hosted vs metered SaaS backend (
profile.burst-sandbox) - Canary self-deploy or host inventory before placing workloads
- activity-core, CI, glas-harness, or wise-validator need a sandbox handle
- Discovering sandbox capability via
registry/ - Migrating off
the-custodian/e2e-frameworkprovision path
Not Relevant When
- Running repo e2e tests end-to-end (use wise-validator
validate run) - Local-only work with acceptable blast radius
- Tunnel or cert operations alone (ops-bridge / ops-warden)
- Task/workplan tracking alone (state-hub)
Current State
- Status: v0 operational — self-hosted compose path proven on CoulombCore; routing, payments stub, and snapshots shipped
- Workplans finished: SAND-WP-0001–0012 (0003/0004 in sibling repos)
- Workplans ready: none (reuse-surface publish / sandboxer01 operator track)
- Package:
src/sandboxer/— CLI, manager, extensions, routing, payments, snapshots, telemetry, HTTP API - Profiles: compose e2e/checkpoint, canary, vm-haskell-build, saas-stub, burst-sandbox, e2b-burst, modal-gpu, agent-dev, build, vm-packer-build, bwrap-local, claude-agent-dev-proof (candidate, not production)
- Extensions:
ext.compose-ssh,ext.vm-packer,ext.saas-stub,ext.e2b,ext.modal - Docs:
meta-framework,extension-sdk,host-telemetry,routing,payments,snapshots,migration-gaps,migration-build-machines - Registry:
capability.execution.sandbox-provisionindexed (draft) - Tests: 172 pytest cases;
make checkgreen - Siblings: wise-validator
validate run(SAND-WP-0003); the-custodianmake e2e REPO=shim (SAND-WP-0004)
Latest gap analysis: history/2026-06-24-post-wp0007-intent-scope-gap-analysis.md
Gap analysis: history/2026-06-24-post-wp0007-intent-scope-gap-analysis.md
Ready workplans: none — gap analysis items complete; operator tracks remain.
What Is Possible Now
make setup && make install # sandboxer CLI
sandboxer create # canary self-deploy (no args)
sandboxer create --profile profile.compose-e2e --input repo=/path/to/repo
sandboxer create --profile profile.vm-haskell-build --input vm=haskell-build --input repo=/path
sandboxer create --profile profile.burst-sandbox # routes to saas-stub when needed
sandboxer get <id> / list / destroy / recreate
sandboxer snapshot <id> [--name LABEL]
sandboxer restore <snapshot_id>
sandboxer snapshots list / snapshots get <id>
sandboxer extend-ttl <id> --duration 2h
sandboxer expire [--apply]
sandboxer create --ttl 2h ...
sandboxer credits show / credits add <amount>
sandboxer inspect host / inspect stale / reap-stale [--apply]
sandboxer reachability show <id>
sandboxer create --profile profile.agent-dev --input repo=/path --actor agt --project glas-harness
sandboxer create --profile profile.build --input vm=haskell-build --actor agt --project snuggle-inventor
sandboxer create --profile profile.vm-packer-build --input packer_template=... --input vm_name=haskell-build
make smoke-remote # CoulombCore compose smoke (SANDBOXER_HOST)
# Full e2e validation (wise-validator, separate install):
validate run ~/activity-core
# Legacy operator entry (the-custodian):
cd ~/the-custodian && make e2e REPO=activity-core
- State Hub lifecycle events on create/destroy/snapshot (when hub reachable)
- HTTP API via
uvicorn sandboxer.api.app:app(sandboxes + snapshots) - Operator runbooks under
docs/runbooks/
What Is Not Possible Yet
TTL auto-expiry /— done (SAND-WP-0009)extend_ttlenforcementPacker build orchestration from— done (SAND-WP-0012)createReal E2B / Modal adapters— done (SAND-WP-0010)Consumer profiles (agent-dev, build)— done (SAND-WP-0011)- Cross-host snapshot transfer
Formal ops-bridge tunnel attachment— done (SAND-WP-0011; descriptor only)- Dedicated sandboxer01 host (CoulombCore interim only today)
reuse-surface validate/ federation publish workflow— done (SAND-WP-0009).repo-classification.yamlfin-hub billing export— hook done (SAND-WP-0010); railiance-platform wiring operator
How It Fits
flowchart LR
WV[wise-validator] -->|create/destroy| SB[sand-boxer]
GH[glas-harness] -->|create| SB
AC[activity-core] -->|when| WV
AC -->|venue request| SB
SB -->|provision| HOST[CoulombCore / sandboxer01]
SB -->|lifecycle| SH[state-hub]
SB -->|SSH reachability| OB[ops-bridge]
TC[the-custodian] -.->|make e2e shim| WV
TC -.->|provision| SB
Terminology
- Profile — named sandbox recipe (extension binding, placement, TTL metadata)
- Extension — backend adapter (
provision,wait_ready,teardown; optionalsnapshot/restore_from_snapshot) - Establishment — create through
ready(distinct from validation pass/fail) - Snapshot — point-in-time workspace checkpoint; restore creates a new sandbox
- Route — extension selection policy when multiple backends qualify
- Canary —
profile.sandbox-canaryself-deploy with host telemetry - Actor types:
adm,agt,atm
Related / Overlapping
- wise-validator — validation orchestration; one-way consumer of sand-boxer
- the-custodian — legacy
e2e-framework/;make e2eshim delegates to wise-validator (SAND-WP-0004) - ops-bridge / ops-warden — connectivity and identity consumers
- state-hub — lifecycle visibility
- reuse-surface — capability federation target
Provided Capabilities
Registered (draft): capability.execution.sandbox-provision —
see registry/capabilities/execution.sandbox-provision.md.
Getting Oriented
| Path | Purpose |
|---|---|
INTENT.md |
Charter and sibling boundaries |
docs/meta-framework.md |
API, lifecycle, extension contract |
docs/extension-sdk.md |
Extension author guide |
docs/host-telemetry.md |
Canary and inventory |
docs/routing.md |
Backend selection strategies |
docs/payments.md |
Credits and metering |
docs/snapshots.md |
Checkpoint snapshot/restore |
docs/ttl.md |
TTL extend and expire/reap |
docs/security.md |
Blast-radius vs intent enforcement |
docs/migration-gaps.md |
Legacy cutover status |
docs/integrations/ |
Consumer contracts |
workplans/ |
ADR-001 work structure |
history/ |
INTENT ↔ SCOPE assessments |
AGENTS.md |
Session protocol |