Epho turns coding-agent harnesses into an API. Send a prompt, choose a harness and model, and receive the work as a live event stream or collect it asynchronously.
The API base URL is:
https://app.epho.io/api
The execution model
Every request belongs to a team and runs as a turn inside a durable chat:
- Epho accepts a team-scoped API key.
- A turn is created and placed on the run queue.
- Epho creates or resumes an isolated sandbox.
- The selected harness receives the prompt and provider key.
- Progress is persisted as events.
- The final answer and output artifacts are saved.
- The sandbox is stopped so compute billing ends.
The same persisted events power synchronous streaming, asynchronous polling, and reconnectable SSE subscriptions.
Primary concepts
| Concept | Meaning |
|---|---|
| API key | Authenticates a team and scopes access to that team's chats, credit, and runs |
| Chat | A durable conversation with a fixed harness, model, sandbox size, system prompt, and MCP configuration |
| Turn | One prompt and one agent run within a chat |
| Harness | The coding-agent runtime: codex, claude, or opencode |
| Provider key | Your OpenAI, Anthropic, or OpenCode Zen credential for a particular run |
| Sandbox | The isolated compute environment created or resumed for the chat |
| Event | A lifecycle or agent-generated progress item persisted on the turn |
| Artifact | A file produced by the agent and exposed through a short-lived download URL |
Two ways to run
Use POST /v1/chat when you want one connection that streams until the turn
settles. Use POST /v1/chat/async when a worker, webhook consumer, or scheduled
job should submit work and return immediately.
Both modes use the same launch path, persistence, retries, concurrency controls, and result format.
Where to go next
- Follow the Quickstart to run your first agent.
- Understand Chats and turns before building multi-turn workflows.
- Choose a Harness and model.
- Use the API reference for every endpoint and field.