the universal sandbox runtime for agents and humans. pocketenv.io
sandbox openclaw agent claude-code vercel-sandbox deno-sandbox cloudflare-sandbox atproto sprites daytona
7
fork

Configure Feed

Select the types of activity you want to include in your feed.

Use fixed PTY port 26661

Introduce PTY_PORT constant and use it when starting the
pty-tunnel-server
and when composing the WebSocket URL. Also add the port to Vercel
provider
ports so it gets exposed.

+4 -3
+3 -2
apps/api/src/pty/index.ts
··· 53 53 const PTY_SERVER_DOWNLOAD_URL = 54 54 "https://github.com/tsirysndr/pty-tunnel-server/releases/download/v0.0.2/pty-server-linux-x86_64.tar.gz"; 55 55 const SERVER_BIN_NAME = "pty-tunnel-server"; 56 + const PTY_PORT = 26661; 56 57 57 58 type SandboxEnvironmentOptions = { 58 59 id: string; ··· 111 112 const cmd = await sandbox.runCommand({ 112 113 cmd: SERVER_BIN_NAME, 113 114 args: [ 114 - `--port=${sandbox.interactivePort}`, 115 + `--port=${PTY_PORT}`, 115 116 `--mode=client`, 116 117 `--cols=${process.stdout.columns ?? 80}`, 117 118 `--rows=${process.stdout.rows ?? 24}`, ··· 173 174 174 175 const details = await listener.connection; 175 176 const url = 176 - `wss://${sandbox.domain(sandbox.interactivePort!).replace(/^https?:\/\//, "")}` as const; 177 + `wss://${sandbox.domain(PTY_PORT).replace(/^https?:\/\//, "")}` as const; 177 178 consola.info("Connecting to WebSocket URL:", url); 178 179 179 180 const socket = details.createClient(url);
+1 -1
apps/sandbox/src/providers/vercel/mod.ts
··· 126 126 teamId: options.vercelTeamId, 127 127 }; 128 128 const ports = { 129 - ports: options.ports, 129 + ports: [...(options.ports || []), 26661], 130 130 }; 131 131 const sandbox = await Sandbox.create( 132 132 options.snapshotId