Skip to content

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.

  1. session_progressIn flight. A turn starts on the thread.
  2. text_deltaIn flight. The model streams its reply, token by token.
  3. tool_startIn flight. It calls write_file.
  4. approval_requiredWaiting on youThe call is gated by a manifest rule. The run waits.
  5. POST /approvals/{id}/decideYour requestYou approve, deny, or approve with edited arguments.
  6. tool_endFinished. The tool returns its output.
  7. on_chain_endFinished. Carries the turn's token usage.
  8. doneFinished. Final message and stop_reason.
One turn over 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.

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.