Felix runs the agents you describe.
A self-hosted agents harness. You author an agent as a YAML manifest; Felix compiles it into a runtime with governance and durable execution, served over OpenAI-compatible, A2A, MCP and REST surfaces at once.
session_progressIn flight. A turn starts on the thread.text_deltaIn flight. The model streams its reply, token by token.tool_startIn flight. It calls write_file.approval_requiredWaiting on youThe call is gated by a manifest rule. The run waits.POST /approvals/{id}/decideYour requestYou approve, deny, or approve with edited arguments.tool_endFinished. The tool returns its output.on_chain_endFinished. Carries the turn's token usage.doneFinished. Final message and stop_reason.
POST /chat/stream, abridged: every line is a frame the harness sends, except the decision, which is yours. The full list is in REST API → Events.Surfaces
Section titled “Surfaces”One manifest is served over four protocols:
- OpenAI-compatible chat completions at
/v1/chat/completions(sync + SSE) - A2A JSON-RPC at
/a2a - MCP HTTP JSON-RPC at
/mcp - Direct REST/SSE at
/chat
Around them sit the management surfaces — audit, approvals, plans, jobs, manifests, eval, usage, memory, documents and artifacts — covering observability, human approval, canary manifests and offline eval. The Route index lists every route.
The harness is felix-run/felix (CPython; Compose or Helm). The chat UI and this site are felix-run/web.