epho
Epho runs Claude Code, Codex, or OpenCode coding agents in the cloud via a single HTTP API — no SDK, no daemon, no infrastructure required on your side.
At a Glance
About epho
Epho is a cloud API that turns coding-agent harnesses into a simple HTTP endpoint. Built by Bruin Data Limited, it lets developers POST a prompt and receive streamed agent output — with repos cloned, files staged, and MCP servers wired in — without managing any infrastructure. The service is actively available, with API keys issued on signup and a usage-based credit model.
What It Is
Epho sits between your code and AI coding agents like Claude Code (Anthropic), Codex (OpenAI), and OpenCode (open-source). Instead of running these agents locally or managing cloud VMs yourself, you send a single JSON request to POST /api/v1/chat, and Epho boots a fresh sandbox, clones your repos, connects your tools, and streams the agent's work back as server-sent events. The core abstraction is "agents as an API" — one endpoint, one JSON body, and the agent does the work in the cloud.
How the Execution Model Works
Every request runs as a turn inside a durable chat:
- Epho accepts a team-scoped API key and queues the turn
- An isolated sandbox boots (or resumes) with the chosen harness installed
- The agent receives the prompt and your provider API key
- Progress is persisted as events — tool calls, edits, text output
- The final answer and file artifacts are saved and returned
- The sandbox stops immediately, ending compute billing
Chats are durable: pass the same chat_id on a follow-up request and the sandbox resumes with the same filesystem, checkout, and agent session. If the underlying box is gone, Epho boots a replacement and restores the session snapshot.
Context and Configuration
Epho's request body carries everything the agent needs:
- repos — up to 32 repositories (GitHub, GitLab, Bitbucket), each with an optional branch and per-repo token
- input_files — up to 20 files, inline base64 or fetched from a URL, staged to
/tmp/inputs - mcp_servers — local stdio processes or remote URLs (Linear, Figma, custom internal servers), set once and inherited by every turn
- env — environment variables baked into the sandbox at creation
- system_prompt — stacked on top of the harness's own system prompt
- effort —
low,medium,high, orxhighwhere the harness supports it
Provider API keys ride along per-request and are torn down with the run — Epho never stores them between turns.
Streaming and Async Modes
Two endpoints cover the same underlying execution path:
POST /api/v1/chat— opens a streaming SSE connection; tokens, tool calls, diffs, and a finaldoneevent with artifacts arrive in real timePOST /api/v1/chat/async— returns202withchat_idandturn_idimmediately; results are collected via polling or awebhook_url
Every event is persisted, so a dropped connection is not a lost run. Reconnecting to /chat/{id}/events/subscribe replays missed events before resuming the live tail.
Harness and Model Support
Epho supports three coding-agent harnesses selectable via the harness field:
- claude — Anthropic's Claude Code agent; requires an Anthropic provider key
- codex — OpenAI's Codex agent; requires an OpenAI provider key
- opencode — the open-source agent; OpenCode Zen models ending in
-freerun without any provider credential, making a single Epho key the only requirement
Why It Matters for CI and Automation
Because the API is plain HTTP with no SDK dependency, Epho integrates directly into GitHub Actions, cron jobs, Discord bots, Slack bots, and bash scripts. The async endpoint and webhook support make it suitable for event-driven workflows — for example, turning a GitHub issue labeled agent into a pull request, or streaming a PR review into a side panel. Each chat gets its own isolated environment, so concurrent fan-out is supported; teams start with five active turns, with additional turns queued at no cost until a slot opens.
Community Discussions
Be the first to start a conversation about epho
Share your experience with epho, ask questions, or help others learn from your insights.
Pricing
Usage-Based
Pay-as-you-go sandbox compute metered per second from boot to teardown. Model tokens billed separately by your provider.
- CPU: $0.0000164 per vCPU per second
- Memory: $0.0000053 per GiB per second
- Disk: $0.000000036 per GiB per second
- $10 starting credit on signup (~60 hours of default instance)
- Default instance: 2 vCPU, 2 GiB, 10 GiB
- Model tokens billed by your provider, not by Epho
- Real-time balance via GET /credits
- Turn refused with 402 when balance hits zero
Capabilities
Key Features
- Run Claude Code, Codex, or OpenCode agents via a single HTTP endpoint
- Durable chats with persistent sandboxes across multiple turns
- Clone up to 32 repos per request with per-repo branch and token support
- Attach up to 20 input files (base64 or URL) per turn
- MCP server support (local stdio or remote URL), inherited by every turn
- Server-sent event streaming with full event replay on reconnect
- Async mode with webhook delivery
- Usage-based billing metered per second from boot to teardown
- Free OpenCode Zen models with no provider key required
- Artifacts returned with presigned download URLs on the done event
- Effort levels: low, medium, high, xhigh
- Custom system prompt stacked on harness defaults
- Environment variable injection into sandbox
- GET /credits endpoint for real-time balance monitoring
- Concurrent agent runs with per-chat isolation
