Skip to content

Quickstart

This page is for humans setting up Ennodia by hand. If you would rather have an agent install and configure Ennodia for you, use Installation for Agents instead.

  • Bun 1.3.14 or newer
  • An MCP client that can launch a stdio server
  • At least one supported AI command-line tool, if you want real agent execution; see Supported Harnesses

Install the stable release from npm:

Terminal window
npx -y ennodia

Requires Bun 1.3.14 or newer. npx downloads Ennodia; Bun runs it. Prefer Bun directly? Use bunx ennodia.

The JSR package @cherninlab/ennodia exposes TypeScript modules for import. Use the npm package for the stdio MCP executable.

Use a checkout when you are changing Ennodia itself:

Terminal window
git clone https://github.com/cherninlab/ennodia
cd ennodia
bun install
bun run verify
{
"mcpServers": {
"ennodia": {
"command": "npx",
"args": ["-y", "ennodia"]
}
}
}

For a local checkout, point at the source file instead:

{
"mcpServers": {
"ennodia": {
"command": "bun",
"args": ["run", "/absolute/path/to/ennodia/src/cli.ts"]
}
}
}

Replace /absolute/path/to/ennodia with your local repo path.

From the repo:

Terminal window
bun install
bun run mcp:smoke
bun run verify

From an MCP client, call these tools in order: ennodia_list_harnesses, ennodia_estimate_budget, ennodia_plan, ennodia_run, then ennodia_get_run. ennodia_run is the main end-to-end entrypoint — it plans the route, starts the selected task or tasks, optionally compares successful outputs, and returns a run ID. Poll ennodia_get_run with that ID until the run reaches succeeded, failed, or cancelled.

Expect real runs to take minutes. Compare adds a judge pass and a synthesizer pass after child agents finish.

An Ennodia run is meant to be visible. You should be able to inspect:

  • selected harnesses
  • child task IDs
  • task status
  • stdout and stderr previews
  • elapsed time and per-task timeout
  • Compare state, if Compare was used
  • final answer or explicit failure reason

If a child tool times out or fails, Ennodia should report that state instead of hiding it.