ennodia 0.3.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/CONTRIBUTING.md +2 -19
  2. package/README.md +51 -31
  3. package/docs/comparisons/agent-frameworks.md +5 -5
  4. package/docs/comparisons/autogen.md +4 -4
  5. package/docs/comparisons/chathub.md +4 -4
  6. package/docs/comparisons/index.md +4 -4
  7. package/docs/comparisons/langgraph.md +4 -4
  8. package/docs/comparisons/mixture-of-agents.md +5 -5
  9. package/docs/comparisons/model-merging.md +5 -5
  10. package/docs/comparisons/openrouter.md +4 -4
  11. package/docs/concepts/compositional-audits.md +8 -6
  12. package/docs/concepts/data-governance.md +5 -9
  13. package/docs/concepts/how-ennodia-works.md +2 -2
  14. package/docs/concepts/interfaces-and-core.md +1 -1
  15. package/docs/concepts/second-opinions.md +5 -5
  16. package/docs/evidence/index.md +6 -13
  17. package/docs/evidence/measurement.md +6 -5
  18. package/docs/getting-started.md +9 -6
  19. package/docs/guides/agent-skills.md +6 -5
  20. package/docs/guides/budgets-and-limits.md +8 -6
  21. package/docs/guides/pragmatic-mode.md +2 -0
  22. package/docs/guides/recipes.md +1 -4
  23. package/docs/guides/running-better-audits.md +7 -7
  24. package/docs/guides/troubleshooting.md +0 -2
  25. package/docs/guides/understand-results.md +0 -2
  26. package/docs/index.md +2 -4
  27. package/docs/install.md +11 -9
  28. package/docs/questions.md +56 -0
  29. package/docs/reference/controlled-english.md +1 -3
  30. package/docs/reference/ennodia-io.md +7 -7
  31. package/docs/reference/mcp-tools.md +69 -15
  32. package/docs/reference/supported-harnesses.md +9 -4
  33. package/docs/roadmap.md +0 -2
  34. package/package.json +4 -11
  35. package/skills/pragmatic/SKILL.md +2 -0
  36. package/src/cli.ts +31 -15
  37. package/src/compare.ts +37 -1
  38. package/src/core.ts +2 -4
  39. package/src/diagnosis.ts +48 -1
  40. package/src/harnesses.ts +54 -25
  41. package/src/index.ts +4 -0
  42. package/src/runs.ts +17 -8
  43. package/src/server.ts +55 -2
  44. package/src/tasks.ts +145 -37
  45. package/src/version.ts +1 -1
  46. package/bench/README.md +0 -34
  47. package/bench/bug-recall/run.ts +0 -339
  48. package/bench/bug-recall/scorer.ts +0 -424
  49. package/bench/fixtures/bug-recall/001-missing-await/input.ts +0 -33
  50. package/bench/fixtures/bug-recall/001-missing-await/oracle.json +0 -28
  51. package/bench/fixtures/bug-recall/001-missing-await/responses/claude-code-solo.md +0 -1
  52. package/bench/fixtures/bug-recall/001-missing-await/responses/codex-solo.md +0 -1
  53. package/bench/fixtures/bug-recall/001-missing-await/responses/ennodia-parallel-compare.md +0 -1
  54. package/bench/fixtures/bug-recall/002-timeout-drain/input.ts +0 -40
  55. package/bench/fixtures/bug-recall/002-timeout-drain/oracle.json +0 -28
  56. package/bench/fixtures/bug-recall/002-timeout-drain/responses/claude-code-solo.md +0 -1
  57. package/bench/fixtures/bug-recall/002-timeout-drain/responses/codex-solo.md +0 -1
  58. package/bench/fixtures/bug-recall/002-timeout-drain/responses/ennodia-parallel-compare.md +0 -1
  59. package/bench/fixtures/bug-recall/003-schema-contract/input.ts +0 -22
  60. package/bench/fixtures/bug-recall/003-schema-contract/oracle.json +0 -28
  61. package/bench/fixtures/bug-recall/003-schema-contract/responses/claude-code-solo.md +0 -1
  62. package/bench/fixtures/bug-recall/003-schema-contract/responses/codex-solo.md +0 -1
  63. package/bench/fixtures/bug-recall/003-schema-contract/responses/ennodia-parallel-compare.md +0 -1
  64. package/bench/fixtures/bug-recall/004-cancel-propagation/input.ts +0 -28
  65. package/bench/fixtures/bug-recall/004-cancel-propagation/oracle.json +0 -28
  66. package/bench/fixtures/bug-recall/004-cancel-propagation/responses/claude-code-solo.md +0 -1
  67. package/bench/fixtures/bug-recall/004-cancel-propagation/responses/codex-solo.md +0 -1
  68. package/bench/fixtures/bug-recall/004-cancel-propagation/responses/ennodia-parallel-compare.md +0 -1
  69. package/bench/results/.gitkeep +0 -1
  70. package/docs/evidence/building-ennodia.md +0 -66
  71. package/docs/evidence/docs-drift.md +0 -73
  72. package/docs/evidence/skill-trial.md +0 -68
  73. package/docs/reference/benchmarks.md +0 -64
  74. package/examples/docs-drift/README.md +0 -8
  75. package/examples/docs-drift/archive/migration.md +0 -4
  76. package/examples/docs-drift/check.ts +0 -7
  77. package/examples/docs-drift/config.ts +0 -8
  78. package/examples/docs-drift/demo.ts +0 -54
  79. package/examples/docs-drift/recorded-run.json +0 -16
  80. package/examples/skill-trial/README.md +0 -8
  81. package/examples/skill-trial/check.ts +0 -15
  82. package/examples/skill-trial/contract.md +0 -7
  83. package/examples/skill-trial/recorded-trial.json +0 -42
  84. package/examples/skill-trial/retry.ts +0 -4
@@ -1,18 +1,11 @@
1
1
  ---
2
- title: Examples and evidence
3
- description: Try small examples and inspect what Ennodia contributed to its own development.
2
+ title: Evidence
3
+ description: What Ennodia can show with recorded runs, and how it will measure the rest.
4
4
  ---
5
5
 
6
- # Examples and evidence
6
+ Ennodia publishes a claim only with a recorded run behind it.
7
7
 
8
- Ennodia helps your primary agent try another approach and bring the findings back.
9
- These examples show the workflow and its limits.
8
+ - [Can Gemini hear this file?](/articles/can-gemini-hear-this-file/) follows a Codex conversation that handed an audio file to Gemini through Antigravity.
9
+ - The [measurement plan](./measurement.md) defines how Ennodia will compare single agents with teams on public benchmarks.
10
10
 
11
- - [Building Ennodia with Ennodia](./building-ennodia.md) follows a real development task, including an authentication failure and the primary agent’s corrections.
12
- - [Find stale documentation](./docs-drift.md) provides a small reproducible review exercise.
13
- - [Try a skill separately](./skill-trial.md) compares two reviews of the same function.
14
- - [Measurement plan](./measurement.md) defines the next comparative experiment.
15
-
16
- The examples are not a speed or cost benchmark.
17
- The [existing deterministic benchmark](../reference/benchmarks.md) checks saved answers against known findings.
18
- It does not measure live task completion time.
11
+ For which models lead which kinds of work, see the [leaderboard figure](/#evidence) on the home page. Its values come from the public sources it links.
@@ -3,8 +3,6 @@ title: How we will measure usefulness
3
3
  description: A planned comparison of complete tasks, including unsuccessful attempts and human intervention.
4
4
  ---
5
5
 
6
- # How we will measure usefulness
7
-
8
6
  Status: proposed experiment. Results are not available yet.
9
7
 
10
8
  The primary comparison uses the same main agent with and without Ennodia.
@@ -32,9 +30,12 @@ Compare time together with correctness. Excluding failures from timing can hide
32
30
  Report model tokens, estimated provider charges, and subscription payments separately.
33
31
  A token estimate is not a measured provider bill.
34
32
 
35
- [Terminal-Bench](https://github.com/harbor-framework/terminal-bench) is a candidate for terminal tasks.
36
- [SWE-bench](https://github.com/SWE-bench/SWE-bench) provides a separate direction for repository bug fixes.
33
+ Two public sets fit a first pilot on one computer:
34
+
35
+ - [Aider polyglot](https://github.com/Aider-AI/polyglot-benchmark): Exercism exercises in Python and JavaScript, graded by each exercise's own tests.
36
+ - [MMAU test-mini](https://huggingface.co/datasets/gamma-lab-umd/MMAU-test-mini): multiple-choice questions about audio clips. It tests routing audio away from agents that cannot hear it.
37
+
38
+ [Terminal-Bench](https://github.com/harbor-framework/terminal-bench) and [SWE-bench](https://github.com/SWE-bench/SWE-bench) need a container runtime for grading.
37
39
  Pin the exact dataset version and evaluation environment.
38
- Use small custom fixtures for skill trials and manual workflow measurements.
39
40
 
40
41
  This pilot can reveal useful patterns. It cannot establish universal superiority.
@@ -47,7 +47,7 @@ Compare adds a Judge pass and a Result Advisor pass after child agents finish.
47
47
 
48
48
  For a local development checkout, run `bun run verify` before relying on changes.
49
49
 
50
- ## Manual Setup
50
+ ## Manual setup
51
51
 
52
52
  ### Requirements
53
53
 
@@ -72,7 +72,7 @@ To use Bun directly, run `bunx ennodia`.
72
72
  The JSR package `@cherninlab/ennodia` exposes TypeScript modules for import.
73
73
  Use the npm package for the stdio MCP executable.
74
74
 
75
- ### Local Checkout
75
+ ### Local checkout
76
76
 
77
77
  Use a checkout to modify Ennodia:
78
78
 
@@ -83,7 +83,7 @@ bun install
83
83
  bun run verify
84
84
  ```
85
85
 
86
- ### MCP Client Config
86
+ ### MCP client config
87
87
 
88
88
  ```json
89
89
  {
@@ -111,12 +111,15 @@ For a local checkout, use the source file:
111
111
 
112
112
  Replace `/absolute/path/to/ennodia` with your local repository path.
113
113
 
114
+ Ennodia loads six core tools by default. For Plan Advisor, compositional slices, raw tasks, and skill installation, add `"--tools", "all"` to `args`. See [tool sets](/docs/reference/mcp-tools/#tool-sets).
115
+
114
116
  Use your client's supported configuration method.
115
117
  Preserve existing server entries.
116
118
  Reload the tools or restart the client if its setup instructions require this step.
117
119
 
118
- ## Optional Team Advice
120
+ ## Optional team advice
119
121
 
122
+ Team advice uses the [full tool set](/docs/reference/mcp-tools/#tool-sets).
120
123
  For a proposed work split, call `ennodia_start_plan_advice`. The Plan Advisor
121
124
  proposes explicit harness, model, and skill assignments. It cannot execute them.
122
125
 
@@ -138,7 +141,7 @@ completed answers. Then the Result Advisor recommends one answer.
138
141
  If Judge analysis is not available, the Result Advisor can use only the
139
142
  candidate outputs. The Compare result shows this condition.
140
143
 
141
- ## Next Pages
144
+ ## Next pages
142
145
 
143
146
  - [Budgets and Limits](/docs/guides/budgets-and-limits/) explains
144
147
  `ennodia_estimate_budget` and run limits.
@@ -148,7 +151,7 @@ candidate outputs. The Compare result shows this condition.
148
151
  and installation notes.
149
152
  - [MCP Tools](/docs/reference/mcp-tools/) is the full parameter reference.
150
153
 
151
- ## Expected Behavior
154
+ ## Expected behavior
152
155
 
153
156
  An Ennodia run is visible. You can inspect:
154
157
 
@@ -3,6 +3,8 @@ title: Agent Skills
3
3
  description: Install bundled Ennodia skills in native harness locations and tell child agents to use them during a run.
4
4
  ---
5
5
 
6
+ Listing skills is in the core tool set. Installing them needs the [full tool set](/docs/reference/mcp-tools/#tool-sets).
7
+
6
8
  A new Agent Skill can help a task, add irrelevant advice, or make no difference.
7
9
  Try the skill in a separate Ennodia task and bring useful findings back to your main conversation.
8
10
 
@@ -11,9 +13,8 @@ Ennodia discovers that folder and requests the selected skill by name.
11
13
  It does not inline the full instructions into each delegated prompt.
12
14
 
13
15
  The primary agent can keep useful partial findings without adopting every recommendation.
14
- The [skill trial example](/docs/evidence/skill-trial/) shows a controlled small exercise.
15
16
 
16
- ## List Available Skills
17
+ ## List available skills
17
18
 
18
19
  ```json
19
20
  {
@@ -27,7 +28,7 @@ The [skill trial example](/docs/evidence/skill-trial/) shows a controlled small
27
28
  The response includes bundled skills, installed native skills, searched
28
29
  directories, and load warnings.
29
30
 
30
- ## Preview Installation
31
+ ## Preview installation
31
32
 
32
33
  Bundled skills use dry-run installation by default. The caller can inspect the
33
34
  planned writes before any change:
@@ -47,7 +48,7 @@ planned writes before any change:
47
48
 
48
49
  Review the planned paths. If they are correct, repeat with `dryRun: false`.
49
50
 
50
- ## Use a Skill in a Run
51
+ ## Use a skill in a run
51
52
 
52
53
  ```json
53
54
  {
@@ -81,7 +82,7 @@ Bundled skills include:
81
82
  | `release-readiness` | Public release candidate checks. |
82
83
  | `benchmark-critic` | Benchmark credibility and reproducibility review. |
83
84
 
84
- ## Native Install Locations
85
+ ## Native install locations
85
86
 
86
87
  | Harness | Project path | User path |
87
88
  | --- | --- | --- |
@@ -1,8 +1,10 @@
1
1
  ---
2
- title: Budgets and Limits
2
+ title: Budgets and limits
3
3
  description: How Ennodia estimates preflight input-token budgets and enforces local run limits before child agents start.
4
4
  ---
5
5
 
6
+ The tools on this page are in the [full tool set](/docs/reference/mcp-tools/#tool-sets). Add `--tools all` to the Ennodia server arguments to load them.
7
+
6
8
  Ennodia can estimate the input-token budget before a costly run starts. The
7
9
  estimate is a budget limit check, not a provider invoice. Child-task estimates
8
10
  are lower bounds.
@@ -13,7 +15,7 @@ not visible before the run.
13
15
  Use it before parallel work or long reviews. Also use it when the user limits
14
16
  cost, subscription use, or child-task count.
15
17
 
16
- ## What the Estimate Includes
18
+ ## What the estimate includes
17
19
 
18
20
  `ennodia_estimate_budget` reports:
19
21
 
@@ -29,7 +31,7 @@ cost, subscription use, or child-task count.
29
31
  The estimate does not claim to know provider billing, output tokens, tool-call
30
32
  cost, cache behavior, harness-internal context, or private subscription quota.
31
33
 
32
- ## Estimate Before a Run
34
+ ## Estimate before a run
33
35
 
34
36
  ```json
35
37
  {
@@ -54,7 +56,7 @@ If the estimate is too high, use one or more of these changes:
54
56
  - Decrease `maxOutputChars`.
55
57
  - Use a narrower first pass.
56
58
 
57
- ## Enforce Limits on a Run
59
+ ## Enforce limits on a run
58
60
 
59
61
  The same budget object can be passed to `ennodia_run`:
60
62
 
@@ -78,7 +80,7 @@ Ennodia checks these local limits before child tasks start. The run fails early
78
80
  if estimated input tokens or the child-task count exceed a cap. Ennodia does
79
81
  not start the excess model work.
80
82
 
81
- ## Subscription Limits
83
+ ## Subscription limits
82
84
 
83
85
  Subscription quota checks are conservative by design. Ennodia uses only
84
86
  supported local command-line interface (CLI) and application programming
@@ -93,7 +95,7 @@ supported local surface exposes a reliable account limit. An older fail-closed
93
95
  quota gate has been retired until at least one current harness exposes a real
94
96
  supported quota surface.
95
97
 
96
- ## Practical Defaults
98
+ ## Practical defaults
97
99
 
98
100
  - Start with one agent and a narrow task. Add attempts when they address a specific uncertainty.
99
101
  - Use `maxOutputChars` to keep Compare input bounded.
@@ -3,6 +3,8 @@ title: Pragmatic mode
3
3
  description: Organize independent model attempts and compare evidence against complete acceptance criteria.
4
4
  ---
5
5
 
6
+ The tools on this page are in the [full tool set](/docs/reference/mcp-tools/#tool-sets). Add `--tools all` to the Ennodia server arguments to load them.
7
+
6
8
  Pragmatic mode is an opt-in beta in `0.3.0`, available through `ennodia`.
7
9
  It helps your main agent delegate bounded work without loading entire logs or files into the main conversation.
8
10
  It does not guarantee lower costs or select the cheapest model automatically.
@@ -3,9 +3,7 @@ title: Recipes
3
3
  description: Three small ways to get useful help from Ennodia.
4
4
  ---
5
5
 
6
- # Start with one useful attempt
7
-
8
- A focused request is easier to check and integrate.
6
+ Start with one useful attempt. A focused request is easier to check and integrate.
9
7
  Give your primary agent the relevant files, attempted fixes, and the result you need.
10
8
 
11
9
  ## A task is stuck
@@ -30,7 +28,6 @@ Show which skill and model were requested and what remains unverified.
30
28
 
31
29
  Check native installation with your agent before the task starts.
32
30
  A requested skill is not proof that the worker loaded it.
33
- Use the [small skill trial](/docs/evidence/skill-trial/) to practice comparing two attempts.
34
31
 
35
32
  ## Two answers disagree
36
33
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- title: Better Audits
2
+ title: Better audits
3
3
  description: How Ennodia audits can detect product problems that users see, not only consistency issues.
4
4
  ---
5
5
 
@@ -11,7 +11,7 @@ This pass can find broken links, mismatched documentation, release metadata erro
11
11
  errors, and copy drift. It does not prove that the page is clear to a first-time
12
12
  visitor.
13
13
 
14
- ## Quick Recipe
14
+ ## Quick recipe
15
15
 
16
16
  Use a source-grounded audit for answers that depend on documentation,
17
17
  standards, package behavior, or another product's public surface:
@@ -31,7 +31,7 @@ standards, package behavior, or another product's public surface:
31
31
  Install the skill first if the harness does not have it. See
32
32
  [Agent Skills](/docs/guides/agent-skills/).
33
33
 
34
- ## Pick the Audit Mode
34
+ ## Pick the audit mode
35
35
 
36
36
  Name the failure mode you want reviewers to catch.
37
37
 
@@ -50,7 +50,7 @@ For a large review, split the work into focused slices. Do not send the entire
50
50
  prompt to each reviewer. See
51
51
  [Compositional Audits](/docs/concepts/compositional-audits/).
52
52
 
53
- ## Landing Page Rubric
53
+ ## Landing page rubric
54
54
 
55
55
  For landing pages, require each reviewer to answer these questions:
56
56
 
@@ -64,7 +64,7 @@ For landing pages, require each reviewer to answer these questions:
64
64
  For Ennodia, use `mode: "parallel"` and `compare: true` for this type of review.
65
65
  A single source-only answer is not sufficient for product pages.
66
66
 
67
- ## Include Rendered Evidence
67
+ ## Include rendered evidence
68
68
 
69
69
  Source-only review misses visual problems. Before an Ennodia website review,
70
70
  include desktop and mobile screenshots. You can also use a harness with browser
@@ -79,7 +79,7 @@ Then inspect the child outputs for access errors.
79
79
  If a harness cannot read the files, put them in an accessible location and run
80
80
  the task again. Do not treat that failure as a normal design review.
81
81
 
82
- ## Ground Standards in Sources
82
+ ## Ground standards in sources
83
83
 
84
84
  Include primary sources when an audit depends on an external standard, registry
85
85
  convention, or product behavior. Require reviewers to separate facts from
@@ -99,7 +99,7 @@ The bundled `source-grounded-audit` skill supports this case. Install it in the
99
99
  harnesses that perform standards-sensitive audits. Then tell Ennodia to use the
100
100
  skill when the answer depends on external documentation.
101
101
 
102
- ## Good Prompt Shape
102
+ ## Good prompt shape
103
103
 
104
104
  ```text
105
105
  Audit this landing page as a first-time visitor, not as a code consistency
@@ -3,8 +3,6 @@ title: Troubleshooting
3
3
  description: Resolve failed starts without confusing configuration errors with model quality.
4
4
  ---
5
5
 
6
- # When an attempt cannot finish
7
-
8
6
  Start with the task’s failure reason and captured output.
9
7
  Use `ennodia_get_task` for details and `ennodia_list_harnesses` to inspect supported commands.
10
8
 
@@ -3,8 +3,6 @@ title: Understand results
3
3
  description: Distinguish useful findings, disagreement, missing evidence, and failed execution.
4
4
  ---
5
5
 
6
- # Understand the result
7
-
8
6
  Process completion is one signal. A useful answer also needs evidence that fits your task.
9
7
 
10
8
  | Result | Meaning | Next step |
package/docs/index.md CHANGED
@@ -3,8 +3,6 @@ title: What is Ennodia?
3
3
  description: Try other agents, models, and skills while staying in your familiar conversation.
4
4
  ---
5
5
 
6
- # Keep your agent. Get another way forward.
7
-
8
6
  Ennodia lets your primary artificial intelligence (AI) agent try another agent, model, or skill on a focused task.
9
7
  The findings return to your existing conversation.
10
8
 
@@ -17,7 +15,7 @@ Even an unsuccessful attempt can show which approach was tested under the record
17
15
  - [Get your first result](/docs/getting-started/).
18
16
  - [Choose a recipe](/docs/guides/recipes/).
19
17
  - [Understand the result](/docs/guides/understand-results/).
20
- - [Read a development case](/docs/evidence/building-ennodia/).
18
+ - [Read a recorded run](/articles/can-gemini-hear-this-file/).
21
19
 
22
20
  ## Your existing tools
23
21
 
@@ -33,7 +31,7 @@ A native agent can also choose unrequested skills from its environment.
33
31
  - [Agent skills](/docs/guides/agent-skills/)
34
32
  - [Troubleshooting](/docs/guides/troubleshooting/)
35
33
  - [Data movement and history](/docs/concepts/data-governance/)
36
- - [Examples and evidence](/docs/evidence/)
34
+ - [Evidence](/docs/evidence/)
37
35
  - [Roadmap](/docs/roadmap/)
38
36
  - [Technical reference](/docs/reference/mcp-tools/)
39
37
 
package/docs/install.md CHANGED
@@ -1,5 +1,5 @@
1
1
  ---
2
- title: Installation for Agents
2
+ title: Installation for agents
3
3
  description: A copy-paste installation page for agents that install Ennodia in Codex, Claude Code, OpenCode, Antigravity, and other Model Context Protocol (MCP) clients.
4
4
  ---
5
5
 
@@ -7,7 +7,7 @@ This page gives setup instructions to the user's agent.
7
7
  Install Ennodia as a local Model Context Protocol (MCP) server.
8
8
  Then connect it to the user's preferred compatible client.
9
9
 
10
- ## Copy-Paste Prompt
10
+ ## Copy-Paste prompt
11
11
 
12
12
  ```text
13
13
  try-ennodia.cherninlab.com
@@ -16,7 +16,7 @@ try-ennodia.cherninlab.com
16
16
  The user can send this address in a new or existing agent conversation.
17
17
  The agent handles the setup steps below.
18
18
 
19
- ## Check the Environment
19
+ ## Check the environment
20
20
 
21
21
  1. Identify the user's client and the machine where Ennodia will run.
22
22
  2. Check that the client can launch a local standard input/output (stdio) MCP server.
@@ -31,7 +31,7 @@ If the current client cannot launch a local MCP server, explain the missing capa
31
31
  Use a compatible local client for Ennodia.
32
32
  See [Supported Harnesses](/docs/reference/supported-harnesses/) for the worker agents Ennodia can call.
33
33
 
34
- ## Install Command
34
+ ## Install command
35
35
 
36
36
  Use the npm package for normal MCP client installation:
37
37
 
@@ -42,7 +42,7 @@ npx -y ennodia
42
42
  Ennodia requires Bun `1.3.14` or newer. `npx` downloads Ennodia. Bun runs it.
43
43
  If the client supports Bun directly, use `bunx ennodia`.
44
44
 
45
- ## MCP Configuration
45
+ ## MCP configuration
46
46
 
47
47
  Add this server to the user's MCP client configuration:
48
48
 
@@ -70,12 +70,14 @@ For a local Ennodia checkout, use:
70
70
  }
71
71
  ```
72
72
 
73
+ Ennodia loads six core tools by default. For Plan Advisor, compositional slices, raw tasks, and skill installation, add `"--tools", "all"` to `args`. See [tool sets](/docs/reference/mcp-tools/#tool-sets).
74
+
73
75
  The configuration above shows the server command and arguments.
74
76
  Adapt its format to the client's documented configuration method.
75
77
  Reload the tools or restart the client only when its setup instructions require this step.
76
78
  Tell the user which step is needed before trying to call Ennodia.
77
79
 
78
- ## Get One Useful Result
80
+ ## Get one useful result
79
81
 
80
82
  After the client exposes Ennodia's tools, start with one small task:
81
83
 
@@ -98,7 +100,7 @@ The first run does not require separate planning, budget estimation, or Compare
98
100
  These tools remain available for larger tasks.
99
101
  See [MCP Tools](/docs/reference/mcp-tools/) for exact parameters and identifiers (IDs).
100
102
 
101
- ## Installed Components
103
+ ## Installed components
102
104
 
103
105
  Ennodia is a local MCP server. It lets the user's main agent request help from
104
106
  other installed agent CLI programs during the same task.
@@ -123,7 +125,7 @@ answer.
123
125
  Tell the user a real run can take minutes. Compare adds two serial model passes
124
126
  after the selected child agents finish.
125
127
 
126
- ## Example Requests
128
+ ## Example requests
127
129
 
128
130
  Use Ennodia when the user permits more model work to get a better answer than
129
131
  one agent usually gives.
@@ -148,7 +150,7 @@ Compare the results before you recommend the final documentation edit.
148
150
  Compare is model-led. The user does not normally need to judge the parallel
149
151
  answers. The trace remains available for inspection.
150
152
 
151
- ## Optional Next Steps
153
+ ## Optional next steps
152
154
 
153
155
  - Use [Budgets and Limits](/docs/guides/budgets-and-limits/) before costly
154
156
  parallel runs.
@@ -0,0 +1,56 @@
1
+ ---
2
+ title: Questions
3
+ description: Short answers about switching agents, setup, data, cost, time, and what Ennodia remembers.
4
+ ---
5
+
6
+ ## Do I need to switch agents?
7
+
8
+ No. You keep the agent you use, in the app you like.
9
+ Ennodia adds a few tools to it, and your agent calls another agent only when a task needs it.
10
+
11
+ ## Where does Ennodia run?
12
+
13
+ On your computer. Your agent starts it as a local Model Context Protocol (MCP) server.
14
+ It needs Bun 1.3.14 or newer.
15
+ Your agent can [set it up for you](/docs/install/), or you can [add the server entry yourself](/docs/getting-started/#manual-setup).
16
+
17
+ ## Which agents can I use?
18
+
19
+ Ennodia uses the agents on your computer, with the models and access you have set up.
20
+ It supports Codex CLI, Claude Code, OpenCode, Antigravity, Kilo Code, Kiro, Cline, and Hermes Agent.
21
+ [Check compatibility](/docs/reference/supported-harnesses/).
22
+
23
+ ## What does it cost?
24
+
25
+ Ennodia is free and MIT licensed, with no account and no subscription of its own.
26
+ Each agent you call runs through its own command-line tool, with the plan or API key you set up for it.
27
+
28
+ ## Will it use more tokens?
29
+
30
+ It can. Each agent you call reads its own prompt, and Compare reads every answer.
31
+ Ennodia's six core tools add about 2,600 tokens to each session.
32
+ You can cap agent runs and estimated input tokens for every run. [Set limits](/docs/guides/budgets-and-limits/).
33
+
34
+ ## Is it slower?
35
+
36
+ A handoff takes as long as the other agent's session.
37
+ In the [audio pilot](https://github.com/cherninlab/ennodia/blob/main/bench/audio-routing/pilot-2026-09-26.md), Codex with Ennodia took a median of 57 seconds per clip, against 27 seconds alone.
38
+ Alone, Codex answered without listening.
39
+
40
+ ## What data leaves my computer?
41
+
42
+ Ennodia has no hosted service and sends nothing to its authors.
43
+ The agents you call send prompts and files to their own model providers, as they do without Ennodia.
44
+ [How data is handled](/docs/concepts/data-governance/).
45
+
46
+ ## Does my agent hand off work on its own?
47
+
48
+ Only when you let it. Say it in your own words, like "get Codex's opinion".
49
+ Or install the pragmatic skill, so your agent can hand off bounded work within the limits you set.
50
+ [The delegation skill](/docs/guides/agent-skills/#main-agent-delegation-skill).
51
+
52
+ ## Does it remember what worked?
53
+
54
+ It keeps a local run history, including outputs and failures, so you can look back.
55
+ Learning which agent or skill to choose next is the [next step on the roadmap](/docs/roadmap/).
56
+ [What the history records](/docs/guides/understand-results/).
@@ -3,15 +3,13 @@ title: Controlled English
3
3
  description: Ennodia terminology and writing rules for ASD-STE100 Issue 9.
4
4
  ---
5
5
 
6
- # Controlled English
7
-
8
6
  Ennodia documentation uses ASD-STE100 Issue 9 as its writing standard.
9
7
  This policy applies to the README, documentation, website text, and visible asset text.
10
8
 
11
9
  Commands, API fields, status values, model IDs, and quoted interface text are data.
12
10
  Keep this data exact, even when its text does not use controlled English.
13
11
 
14
- ## Writing Rules
12
+ ## Writing rules
15
13
 
16
14
  - Use American English.
17
15
  - Use active voice when the agent is known.
@@ -57,7 +57,7 @@ Environment variables:
57
57
  | `ENNODIA_IO_MAX_REQUEST_BODY_SIZE` | Default request body byte cap. |
58
58
  | `ENNODIA_IO_MAX_CONCURRENT_CHAT_COMPLETIONS` | Default in-flight chat completion cap. |
59
59
 
60
- ## Security and Browser Access
60
+ ## Security and browser access
61
61
 
62
62
  IO binds to loopback by default and refuses non-loopback hosts unless an API key
63
63
  is configured. Bearer tokens are compared with a timing-safe comparison.
@@ -94,7 +94,7 @@ boundary.
94
94
  | `GET /v1/models` | Supported | Returns local virtual model IDs for compatible clients. |
95
95
  | `POST /v1/chat/completions` | Supported subset | Non-streaming text messages only. Requires a JSON media type. |
96
96
 
97
- ## Provider Options
97
+ ## Provider options
98
98
 
99
99
  Use provider options when building a settings screen:
100
100
 
@@ -135,7 +135,7 @@ Option statuses:
135
135
 
136
136
  Add `?includeUnavailable=false` to return only ready options.
137
137
 
138
- ## Virtual Models
138
+ ## Virtual models
139
139
 
140
140
  `GET /v1/models` returns local virtual models for OpenAI-compatible clients:
141
141
 
@@ -148,7 +148,7 @@ Add `?includeUnavailable=false` to return only ready options.
148
148
  Older aliases `ennodia-auto`, `ennodia/auto`, and `ennodia/compare` are accepted
149
149
  for compatibility. Prefer `local/*` IDs in new app integrations.
150
150
 
151
- ## Chat Completions
151
+ ## Chat completions
152
152
 
153
153
  Minimal request:
154
154
 
@@ -234,7 +234,7 @@ HTTP error response:
234
234
  - timeout, disappeared run, or start failure -> `502 ennodia_run_error`
235
235
  - failed run or run with `cancelled` status -> `502 ennodia_run_failed` plus run metadata
236
236
 
237
- ## Library Use
237
+ ## Library use
238
238
 
239
239
  Apps can import the same primitives without running the HTTP server:
240
240
 
@@ -249,7 +249,7 @@ const providerOptions = await listAppProviderOptions(core);
249
249
  The app stays in control of its settings UI, labels, persistence, and consent
250
250
  flow. Ennodia supplies local discovery and execution primitives.
251
251
 
252
- ## Smoke Test
252
+ ## Smoke test
253
253
 
254
254
  From a checkout:
255
255
 
@@ -260,7 +260,7 @@ bun run io:smoke
260
260
  The smoke test starts a local IO server and checks `/health`,
261
261
  `/v1/provider-options`, and `/v1/models` without launching child agents.
262
262
 
263
- ## Not Implemented
263
+ ## Not implemented
264
264
 
265
265
  IO deliberately rejects or omits:
266
266