Skip to content

SDK: Add ensureServer() for automatic server recovery#260

Merged
NathanFlurry merged 7 commits into
mainfrom
sdk-sandbox-provisioning
Mar 16, 2026
Merged

SDK: Add ensureServer() for automatic server recovery#260
NathanFlurry merged 7 commits into
mainfrom
sdk-sandbox-provisioning

Conversation

@NathanFlurry

Copy link
Copy Markdown
Member

Summary

Added ensureServer() to the SandboxProvider interface to handle automatic recovery when the sandbox-agent server stops or goes to sleep. The SDK now calls this method after 3 consecutive health-check failures, allowing providers to restart the server.

Changes

  • Provider API: Renamed wake() to ensureServer() with clearer semantics (idempotent server restart)
  • Health wait loop: Integrated ensureServer() — called after 3 consecutive failures to attempt recovery
  • Provider implementations: Added ensureServer() to E2B, Daytona, Vercel, Modal, and ComputeSDK
  • Docs: Updated architecture, quickstart, multiplayer, and session-persistence with corrections and improvements
  • Deprecation: Marked @sandbox-agent/persist-* packages as deprecated with clear messaging

Testing

All SDK examples typecheck and pass existing tests. Server recovery mechanism is transparent to calling code.

🤖 Generated with Claude Code

@railway-app
railway-app Bot temporarily deployed to sandbox-agent / sandbox-agent-pr-260 March 16, 2026 03:15 Destroyed
@railway-app

railway-app Bot commented Mar 16, 2026

Copy link
Copy Markdown

🚅 Deployed to the sandbox-agent-pr-260 environment in sandbox-agent

Service Status Web Updated (UTC)
website ✅ Success (View Logs) Web Mar 16, 2026 at 3:28 am
foundry-api ❌ Build Failed (View Logs) Mar 16, 2026 at 3:28 am
foundry-mock ❌ Build Failed (View Logs) Mar 16, 2026 at 3:28 am

@railway-app
railway-app Bot temporarily deployed to sandbox-agent / sandbox-agent-pr-260 March 16, 2026 03:27 Destroyed
NathanFlurry and others added 7 commits March 15, 2026 20:28
…uickstart overhaul

- Add built-in sandbox providers (local, docker, e2b, daytona, vercel, cloudflare) to the TypeScript SDK so users import directly instead of passing client instances
- Restructure docs: rename architecture to orchestration-architecture, add new architecture page for server overview, improve getting started flow
- Rewrite quickstart to be TypeScript-first with provider CodeGroup and custom provider accordion
- Update all examples to use new provider APIs
- Update persist drivers and foundry for new SDK surface

Co-Authored-By: Claude Opus 4.6 <[email protected]>
…ignature

- Fix insertEvent call in client.ts to pass sessionId as first argument
- Update Daytona provider create options to use Partial type (image has default)
- Update StrictUniqueSessionPersistDriver in tests to match new insertEvent signature
- Sync persist packages, openapi spec, and docs with upstream changes

Co-Authored-By: Claude Opus 4.6 <[email protected]>
- Add `sandbox-agent/modal` provider using Modal SDK with node:22-slim image
- Add `sandbox-agent/computesdk` provider using ComputeSDK's unified sandbox API
- Update Modal and ComputeSDK examples to use new SDK providers
- Update Modal and ComputeSDK deploy docs with provider-based examples
- Add Modal to quickstart CodeGroup and docs.json navigation
- Add provider test entries for Modal and ComputeSDK
- Remove old standalone example files (modal.ts, computesdk.ts)

Co-Authored-By: Claude Opus 4.6 <[email protected]>
… for server

- Pre-install agents in Dockerfile commands so they are cached across creates
- Use fire-and-forget exec (no wait) to keep server alive in Modal sandbox
- Add memoryMiB option (default 2GB) to avoid OOM during agent install

Co-Authored-By: Claude Opus 4.6 <[email protected]>
Add ensureServer() to SandboxProvider interface to handle cases where the
sandbox-agent server stops or goes to sleep. The SDK now calls this method
after 3 consecutive health-check failures, allowing providers to restart the
server if needed. Most built-in providers (E2B, Daytona, Vercel, Modal,
ComputeSDK) implement this. Docker and Cloudflare manage server lifecycle
differently, and Local uses managed child processes.

Also update docs for quickstart, architecture, multiplayer, and session
persistence; mark persist-* packages as deprecated; and add ensureServer
implementations to all applicable providers.

Co-Authored-By: Claude Haiku 4.5 <[email protected]>
@NathanFlurry
NathanFlurry force-pushed the sdk-sandbox-provisioning branch from d1bd9d0 to d6c7cfa Compare March 16, 2026 03:29
@railway-app
railway-app Bot temporarily deployed to sandbox-agent / sandbox-agent-pr-260 March 16, 2026 03:29 Destroyed
@NathanFlurry
NathanFlurry merged commit cf7e2a9 into main Mar 16, 2026
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant