--- title: "TypeScript SDK" description: "Use the generated client to manage sessions and stream events." --- The TypeScript SDK is generated from the OpenAPI spec that ships with the daemon. It provides a typed client for sessions, events, and agent operations. ## Install ```bash npm install sandbox-agent ``` ## Create a client ```ts import { SandboxDaemonClient } from "sandbox-agent"; const client = new SandboxDaemonClient({ baseUrl: "http://127.0.0.1:2468", token: process.env.SANDBOX_TOKEN, }); ``` Or with the factory helper: ```ts import { createSandboxDaemonClient } from "sandbox-agent"; const client = createSandboxDaemonClient({ baseUrl: "http://127.0.0.1:2468", }); ``` ## Autospawn (Node only) If you run locally, the SDK can launch the daemon for you. ```ts import { connectSandboxDaemonClient } from "sandbox-agent"; const client = await connectSandboxDaemonClient({ spawn: { enabled: true }, }); await client.dispose(); ``` Autospawn uses the local `sandbox-agent` binary. Install `@sandbox-agent/cli` (recommended) or set `SANDBOX_AGENT_BIN` to a custom path. ## Sessions and messages ```ts await client.createSession("demo-session", { agent: "codex", agent_mode: "default", permission_mode: "plan", }); await client.postMessage("demo-session", { message: "Hello" }); ``` List agents and pick a compatible one: ```ts const agents = await client.listAgents(); const codex = agents.agents.find((agent) => agent.id === "codex"); console.log(codex?.capabilities); ``` ## Poll events ```ts const events = await client.getEvents("demo-session", { offset: 0, limit: 200, include_raw: false, }); for (const event of events.events) { console.log(event.event_type, event.data); } ``` ## Stream events (SSE) ```ts for await (const event of client.streamEvents("demo-session", { offset: 0, include_raw: false, })) { console.log(event.event_type, event.data); } ``` The SDK parses `text/event-stream` into `UniversalEvent` objects. If you want full control, use `getEventsSse()` and parse the stream yourself. ## Optional raw payloads Set `include_raw: true` on `getEvents` or `streamEvents` to include the raw provider payload in `event.raw`. This is useful for debugging and conversion analysis. ## Error handling All HTTP errors throw `SandboxDaemonError`: ```ts import { SandboxDaemonError } from "sandbox-agent"; try { await client.postMessage("missing-session", { message: "Hi" }); } catch (error) { if (error instanceof SandboxDaemonError) { console.error(error.status, error.problem); } } ``` ## Types The SDK exports OpenAPI-derived types for events, items, and capabilities: ```ts import type { UniversalEvent, UniversalItem, AgentCapabilities } from "sandbox-agent"; ``` See `docs/universal-api.mdx` for the universal schema fields and semantics.