Coding agents keep multiplying: Claude Code, Codex, OpenCode, and more. Each one ships its own installation, configuration, authentication, and runtime quirks. Running one in production is real work; running several means maintaining several integrations.
Brainbase's Universal Harness API collapses that into one endpoint. A single payload describes an agent (its harness, instructions, model, and tools) and starts it running in an isolated sandbox, with no provisioning and no setup step. And Daytona is the default sandbox provider behind it, so every agent runs on Daytona out of the box.
One API call, any harness
You describe the whole agent inline and get back a running thread. The same payload, the same response shape, and the same streaming endpoints work for every harness, so switching from one to another is a one-line change rather than a new integration. Eight harnesses are supported today, including Claude Code, Codex, Cursor, OpenCode, and more.
Daytona under the hood
Brainbase runs each agent inside its own isolated Daytona sandbox. Brainbase provisions the sandbox, runs the agent's filesystem and shell work inside it, and manages its lifecycle. You never operate infrastructure or hold a Daytona key: set machine_kind: "daytona" (the default) and the agent runs on Daytona. That isolation is what makes it safe to hand an agent real tasks, from fixing a failing test suite to running a long, autonomous job, with each run sandboxed from the next.
Describe the whole agent in one request
1curl https://api.brainbaselabs.com/v2/threads \2 -H "Authorization: Bearer $BRAINBASE_API_KEY" \3 -H "Content-Type: application/json" \4 -d '{5 "agent": {6 "harness": "claude_code",7 "machine_kind": "daytona",8 "model": "claude-sonnet-5",9 "instructions": "You are a background software engineering agent.",10 "entrypoint": "pip install -r requirements.txt"11 },12 "input": "Find and fix the failing tests in this project."13 }'
The spec carries everything the agent needs. In this example, harness and model pick the runtime and model, instructions set the agent's role, machine_kind puts it on a Daytona sandbox, and entrypoint is bash that prepares that sandbox before the first turn (install dependencies, clone a repo, seed data). Beyond these, the API also accepts optional mcp_servers, secrets, and skills to extend what the agent can do. To run a different harness, change "harness": "codex" and send the same request; it runs Codex on Daytona instead.
Get started
We built a complete, runnable example: a background coding agent that picks up a failing pytest suite, diagnoses and fixes the bug, then extends the code on a follow-up turn, all in a Daytona sandbox with its work streaming back live.
Guide: Run Agents on Daytona with Brainbase's Universal Harness API
Reference code: github.com/daytona/guides
Brainbase API docs: docs.brainbaselabs.com/api