Capabilities

Blaxel sandbox runner

Roder's first-party blaxel remote-runner provider executes shell and file tools inside an isolated Blaxel sandbox. A selected sandbox can outlive one turn or one local Roder process: pause it toward standby, detach from it, then rejoin the same filesystem and running processes from persisted thread state.

What runs remotely. Selecting Blaxel changes the execution destination for coding tools such as shell, file reads and writes, and patches. The Roder runtime and thread history remain locally controlled unless you separately connect to a remote agent node or hosted runtime.

Set up a destination

Create a Blaxel API key and note the workspace name from the Blaxel console. Roder reads credentials from the environment and does not write the API key into thread metadata, runner session state, logs, or errors.

export BLAXEL_API_KEY=...
export BL_WORKSPACE=...

# BL_API_KEY also works for the API key.
[remote_runners]
enabled = true
default_destination = "blaxel-dev"

[remote_runners.destinations.blaxel-dev]
provider = "blaxel"
secret_env = { BLAXEL_API_KEY = "BLAXEL_API_KEY", BL_WORKSPACE = "BL_WORKSPACE" }
config = { image = "blaxel/base-image:latest", memory = 4096, region = "eu-lon-1", working_dir = "/home/user/roder", cleanup = "detach-on-close" }

New sandboxes default to blaxel/base-image:latest, 4096 MB of memory, and /home/user/roder as the working directory. Choose the destination at startup with default_destination, or select it from the TUI command palette. New threads then auto-bind to the sandbox workspace.

Choose the cleanup behavior

  • delete-on-close permanently deletes a fresh sandbox when the runner session closes. This is the default for newly created sandboxes.
  • detach-on-close releases the local session but leaves the sandbox available for rejoin. This is the default when configuration names an existing sandbox.
  • keep explicitly preserves the sandbox instead of deleting it on close.

Optional destination settings include sandbox_name for an existing sandbox, sandbox_name_prefix, external_id, image,memory, region, ttl, andworking_dir. A Blaxel volume can provide durability beyond the sandbox's preserved standby state.

Pause, resume, detach, and rejoin

Runner-bound threads initialize lazily. Roder creates or resumes the Blaxel session only when an approved native workspace tool first executes, then reuses that live session across later tools and turns. Text-only turns and host-executed MCP work do not wake the sandbox.

  • Pause marks standby intent so the sandbox can scale to zero; a later command can wake it.
  • Resume wakes a standby sandbox immediately.
  • Detach persists the sandbox identity on the thread and releases the local runner session without deleting the sandbox.
  • Rejoin restores the same sandbox from thread state, including after restarting Roder, without provisioning an orphan replacement.
roder runners list
roder runners pause <thread-id>
roder runners resume <thread-id>
roder runners detach <thread-id>
roder runners rejoin <thread-id>
roder runners rejoin <thread-id> --sandbox <name>

roder runners list reports provider capabilities so clients can show lifecycle actions only when the active provider supports them. Existing Docker, Sprites, and local runners keep their current behavior because lifecycle support is optional in the remote-runner contract.

App-server and SDK control

Product clients and automation can call the thread-scopedrunners/pause, runners/resume,runners/detach, and runners/rejoin methods. These methods are registered in the app-server manifest and included in the JSON schema and generated TypeScript and Python client types.

Ports and previews

Exposing a sandbox port returns a Blaxel preview URL. Bind the service to0.0.0.0 inside the sandbox so the preview can reach it. Blaxel preview connections currently have a 15-minute timeout.

Command cancellation

Remote commands run as uniquely named Blaxel processes with finite leases. Tool timeouts, turn interruption, or dropped transports request force-kill through the Blaxel process API, while the server-side lease is the backstop if Roder cannot deliver the cancellation request.