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.
- package/CONTRIBUTING.md +2 -19
- package/README.md +51 -31
- package/docs/comparisons/agent-frameworks.md +5 -5
- package/docs/comparisons/autogen.md +4 -4
- package/docs/comparisons/chathub.md +4 -4
- package/docs/comparisons/index.md +4 -4
- package/docs/comparisons/langgraph.md +4 -4
- package/docs/comparisons/mixture-of-agents.md +5 -5
- package/docs/comparisons/model-merging.md +5 -5
- package/docs/comparisons/openrouter.md +4 -4
- package/docs/concepts/compositional-audits.md +8 -6
- package/docs/concepts/data-governance.md +5 -9
- package/docs/concepts/how-ennodia-works.md +2 -2
- package/docs/concepts/interfaces-and-core.md +1 -1
- package/docs/concepts/second-opinions.md +5 -5
- package/docs/evidence/index.md +6 -13
- package/docs/evidence/measurement.md +6 -5
- package/docs/getting-started.md +9 -6
- package/docs/guides/agent-skills.md +6 -5
- package/docs/guides/budgets-and-limits.md +8 -6
- package/docs/guides/pragmatic-mode.md +2 -0
- package/docs/guides/recipes.md +1 -4
- package/docs/guides/running-better-audits.md +7 -7
- package/docs/guides/troubleshooting.md +0 -2
- package/docs/guides/understand-results.md +0 -2
- package/docs/index.md +2 -4
- package/docs/install.md +11 -9
- package/docs/questions.md +56 -0
- package/docs/reference/controlled-english.md +1 -3
- package/docs/reference/ennodia-io.md +7 -7
- package/docs/reference/mcp-tools.md +69 -15
- package/docs/reference/supported-harnesses.md +9 -4
- package/docs/roadmap.md +0 -2
- package/package.json +4 -11
- package/skills/pragmatic/SKILL.md +2 -0
- package/src/cli.ts +31 -15
- package/src/compare.ts +37 -1
- package/src/core.ts +2 -4
- package/src/diagnosis.ts +48 -1
- package/src/harnesses.ts +54 -25
- package/src/index.ts +4 -0
- package/src/runs.ts +17 -8
- package/src/server.ts +55 -2
- package/src/tasks.ts +145 -37
- package/src/version.ts +1 -1
- package/bench/README.md +0 -34
- package/bench/bug-recall/run.ts +0 -339
- package/bench/bug-recall/scorer.ts +0 -424
- package/bench/fixtures/bug-recall/001-missing-await/input.ts +0 -33
- package/bench/fixtures/bug-recall/001-missing-await/oracle.json +0 -28
- package/bench/fixtures/bug-recall/001-missing-await/responses/claude-code-solo.md +0 -1
- package/bench/fixtures/bug-recall/001-missing-await/responses/codex-solo.md +0 -1
- package/bench/fixtures/bug-recall/001-missing-await/responses/ennodia-parallel-compare.md +0 -1
- package/bench/fixtures/bug-recall/002-timeout-drain/input.ts +0 -40
- package/bench/fixtures/bug-recall/002-timeout-drain/oracle.json +0 -28
- package/bench/fixtures/bug-recall/002-timeout-drain/responses/claude-code-solo.md +0 -1
- package/bench/fixtures/bug-recall/002-timeout-drain/responses/codex-solo.md +0 -1
- package/bench/fixtures/bug-recall/002-timeout-drain/responses/ennodia-parallel-compare.md +0 -1
- package/bench/fixtures/bug-recall/003-schema-contract/input.ts +0 -22
- package/bench/fixtures/bug-recall/003-schema-contract/oracle.json +0 -28
- package/bench/fixtures/bug-recall/003-schema-contract/responses/claude-code-solo.md +0 -1
- package/bench/fixtures/bug-recall/003-schema-contract/responses/codex-solo.md +0 -1
- package/bench/fixtures/bug-recall/003-schema-contract/responses/ennodia-parallel-compare.md +0 -1
- package/bench/fixtures/bug-recall/004-cancel-propagation/input.ts +0 -28
- package/bench/fixtures/bug-recall/004-cancel-propagation/oracle.json +0 -28
- package/bench/fixtures/bug-recall/004-cancel-propagation/responses/claude-code-solo.md +0 -1
- package/bench/fixtures/bug-recall/004-cancel-propagation/responses/codex-solo.md +0 -1
- package/bench/fixtures/bug-recall/004-cancel-propagation/responses/ennodia-parallel-compare.md +0 -1
- package/bench/results/.gitkeep +0 -1
- package/docs/evidence/building-ennodia.md +0 -66
- package/docs/evidence/docs-drift.md +0 -73
- package/docs/evidence/skill-trial.md +0 -68
- package/docs/reference/benchmarks.md +0 -64
- package/examples/docs-drift/README.md +0 -8
- package/examples/docs-drift/archive/migration.md +0 -4
- package/examples/docs-drift/check.ts +0 -7
- package/examples/docs-drift/config.ts +0 -8
- package/examples/docs-drift/demo.ts +0 -54
- package/examples/docs-drift/recorded-run.json +0 -16
- package/examples/skill-trial/README.md +0 -8
- package/examples/skill-trial/check.ts +0 -15
- package/examples/skill-trial/contract.md +0 -7
- package/examples/skill-trial/recorded-trial.json +0 -42
- package/examples/skill-trial/retry.ts +0 -4
package/docs/evidence/index.md
CHANGED
|
@@ -1,18 +1,11 @@
|
|
|
1
1
|
---
|
|
2
|
-
title:
|
|
3
|
-
description:
|
|
2
|
+
title: Evidence
|
|
3
|
+
description: What Ennodia can show with recorded runs, and how it will measure the rest.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
Ennodia publishes a claim only with a recorded run behind it.
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
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
|
-
|
|
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
|
-
|
|
36
|
-
|
|
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.
|
package/docs/getting-started.md
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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.
|
package/docs/guides/recipes.md
CHANGED
|
@@ -3,9 +3,7 @@ title: Recipes
|
|
|
3
3
|
description: Three small ways to get useful help from Ennodia.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
- [
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
263
|
+
## Not implemented
|
|
264
264
|
|
|
265
265
|
IO deliberately rejects or omits:
|
|
266
266
|
|