ennodia 0.3.0-rc.2 → 0.4.0
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 +6 -7
- 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 +37 -34
- package/docs/guides/agent-skills.md +7 -6
- package/docs/guides/budgets-and-limits.md +8 -6
- package/docs/guides/pragmatic-mode.md +65 -26
- 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/reference/controlled-english.md +1 -3
- package/docs/reference/ennodia-io.md +7 -7
- package/docs/reference/mcp-tools.md +176 -18
- package/docs/reference/supported-harnesses.md +9 -4
- package/docs/roadmap.md +0 -2
- package/package.json +3 -10
- package/skills/pragmatic/SKILL.md +32 -13
- package/src/advisor.ts +1 -0
- package/src/budget.ts +8 -6
- package/src/cli.ts +31 -15
- package/src/compare.ts +42 -1
- package/src/compositional.ts +13 -1
- package/src/core.ts +22 -0
- package/src/diagnosis.ts +76 -6
- package/src/harnesses.ts +233 -10
- package/src/index.ts +6 -0
- package/src/pragmatic.ts +3 -10
- package/src/runs.ts +79 -13
- package/src/server.ts +87 -8
- package/src/tasks.ts +221 -35
- 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/CONTRIBUTING.md
CHANGED
|
@@ -104,15 +104,14 @@ exists solely on that channel.
|
|
|
104
104
|
- `bin/ennodia`
|
|
105
105
|
- source files that the Bun runtime needs
|
|
106
106
|
- README, LICENSE, CONTRIBUTING, and documentation files
|
|
107
|
-
- benchmark fixtures
|
|
108
107
|
|
|
109
108
|
The core npm package must not include these items:
|
|
110
109
|
|
|
111
110
|
- `.github/`, `AGENTS.md`, or `CLAUDE.md`
|
|
112
111
|
- `bun.lock`, `src/dev/`, or `src/io.ts`
|
|
113
|
-
- `*.test.ts`, `packages/`, or `website/`
|
|
112
|
+
- `*.test.ts`, `bench/`, `packages/`, or `website/`
|
|
114
113
|
|
|
115
|
-
JSR publishes the TypeScript source and docs
|
|
114
|
+
JSR publishes the TypeScript source and docs.
|
|
116
115
|
The IO npm package must include `bin/ennodia-io`, its `src/` files, and its
|
|
117
116
|
README. It has an exact runtime dependency on the matching `ennodia` version.
|
|
118
117
|
The release workflow publishes the core package first. The IO package stays
|
|
@@ -152,22 +151,6 @@ Community aggregators (Glama, PulseMCP, mcp.so, Smithery) index
|
|
|
152
151
|
GitHub and the official registry automatically or accept one-time
|
|
153
152
|
submissions. They do not need per-release updates.
|
|
154
153
|
|
|
155
|
-
## Benchmarks
|
|
156
|
-
|
|
157
|
-
The deterministic benchmark suite is:
|
|
158
|
-
|
|
159
|
-
```sh
|
|
160
|
-
bun run bench:bug-recall
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
Live harness benchmarks use:
|
|
164
|
-
|
|
165
|
-
```sh
|
|
166
|
-
bun run bench:bug-recall:live
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
Live runs are intentionally not part of `bun run verify`.
|
|
170
|
-
|
|
171
154
|
## Security
|
|
172
155
|
|
|
173
156
|
Do not commit credentials, provider tokens, `.env` files, or private tool
|
package/README.md
CHANGED
|
@@ -47,6 +47,8 @@ For manual setup, add this Model Context Protocol (MCP) server to your client:
|
|
|
47
47
|
}
|
|
48
48
|
```
|
|
49
49
|
|
|
50
|
+
Ennodia loads six core tools by default. Add `"--tools", "all"` to `args` for the [full tool set](https://ennodia.cherninlab.com/docs/reference/mcp-tools/#tool-sets).
|
|
51
|
+
|
|
50
52
|
Requirements: Bun `1.3.14` or newer, a compatible MCP client, and a supported agent with working provider access.
|
|
51
53
|
`npx` downloads Ennodia. Bun runs it. You can also use `bunx ennodia`.
|
|
52
54
|
|
|
@@ -70,12 +72,8 @@ Native agents can also select unrequested skills from their own environment.
|
|
|
70
72
|
|
|
71
73
|
## See it in practice
|
|
72
74
|
|
|
73
|
-
- [
|
|
74
|
-
- [
|
|
75
|
-
- [Try a skill separately](https://ennodia.cherninlab.com/docs/evidence/skill-trial/): two attempts against the same contract.
|
|
76
|
-
|
|
77
|
-
The existing saved-answer benchmark is a regression check, not a live speed or cost comparison.
|
|
78
|
-
[Measurement plan](https://ennodia.cherninlab.com/docs/evidence/measurement/)
|
|
75
|
+
- [Can Gemini hear this file?](https://ennodia.cherninlab.com/articles/can-gemini-hear-this-file/): a Codex conversation hands an audio file to Gemini through Antigravity.
|
|
76
|
+
- [Measurement plan](https://ennodia.cherninlab.com/docs/evidence/measurement/): how Ennodia will compare single agents with teams on public benchmarks.
|
|
79
77
|
|
|
80
78
|
## Data and limits
|
|
81
79
|
|
|
@@ -107,6 +105,7 @@ bun run verify
|
|
|
107
105
|
|
|
108
106
|
### Experimental Pragmatic mode
|
|
109
107
|
|
|
110
|
-
|
|
108
|
+
Version 0.3.0 supports independent model attempts, tailored planning, skill trials and evidence comparison.
|
|
109
|
+
The published `ennodia@next` recipes retain the earlier single-worker restriction.
|
|
111
110
|
[Pragmatic mode](docs/guides/pragmatic-mode.md) keeps bulky evidence outside the main conversation and returns findings for verification.
|
|
112
111
|
Savings are not yet validated.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: Ennodia vs
|
|
2
|
+
title: Ennodia vs agent frameworks
|
|
3
3
|
description: How Ennodia differs from general-purpose agent frameworks such as LangGraph, AutoGen, CrewAI, and similar systems.
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -11,14 +11,14 @@ Ennodia is less general on purpose. Its small Model Context Protocol (MCP)
|
|
|
11
11
|
interface lets a primary agent request help from installed agent command-line
|
|
12
12
|
interfaces (CLIs). The primary agent can then inspect the result.
|
|
13
13
|
|
|
14
|
-
## Choose an
|
|
14
|
+
## Choose an agent framework when
|
|
15
15
|
|
|
16
16
|
- You define the agent workflow.
|
|
17
17
|
- You need custom roles, memory, state, routing, or persistence.
|
|
18
18
|
- The agent system is part of your application or service.
|
|
19
19
|
- You want code-level control over every edge in the workflow.
|
|
20
20
|
|
|
21
|
-
## Choose Ennodia
|
|
21
|
+
## Choose Ennodia when
|
|
22
22
|
|
|
23
23
|
- You do not want to build an agent system.
|
|
24
24
|
- You want a local MCP tool that works with installed agent CLIs.
|
|
@@ -29,13 +29,13 @@ interfaces (CLIs). The primary agent can then inspect the result.
|
|
|
29
29
|
remains a separate, validated action.
|
|
30
30
|
- You want the primary agent to remain in charge.
|
|
31
31
|
|
|
32
|
-
## Key
|
|
32
|
+
## Key difference
|
|
33
33
|
|
|
34
34
|
Agent frameworks provide components for custom agent systems. Ennodia is an
|
|
35
35
|
orchestration helper for an active agent. Its Plan Advisor produces inert plan
|
|
36
36
|
data. It does not create a persistent autonomous team or execute the proposal.
|
|
37
37
|
|
|
38
|
-
## Common
|
|
38
|
+
## Common mistake
|
|
39
39
|
|
|
40
40
|
Do not claim that Ennodia is more powerful than a framework. It is deliberately
|
|
41
41
|
smaller. A user can add multi-agent review to a current local workflow. This
|
|
@@ -11,14 +11,14 @@ systems.
|
|
|
11
11
|
Ennodia is not a framework for a new multi-agent application. It is a local
|
|
12
12
|
Model Context Protocol (MCP) server that an active agent can call.
|
|
13
13
|
|
|
14
|
-
## Choose AutoGen
|
|
14
|
+
## Choose AutoGen when
|
|
15
15
|
|
|
16
16
|
- You want to create a multi-agent system in application code.
|
|
17
17
|
- You need programmable agent roles, event handling, message passing, and custom
|
|
18
18
|
workflow control.
|
|
19
19
|
- Your product needs a framework-level architecture.
|
|
20
20
|
|
|
21
|
-
## Choose Ennodia
|
|
21
|
+
## Choose Ennodia when
|
|
22
22
|
|
|
23
23
|
- The primary workflow uses Codex, Claude Code, OpenCode,
|
|
24
24
|
Antigravity, or another MCP-capable client.
|
|
@@ -29,13 +29,13 @@ Model Context Protocol (MCP) server that an active agent can call.
|
|
|
29
29
|
- You want a Plan Advisor to suggest explicit harness, model, and skill
|
|
30
30
|
assignments. Plan Advisor has no execution control.
|
|
31
31
|
|
|
32
|
-
## Key
|
|
32
|
+
## Key difference
|
|
33
33
|
|
|
34
34
|
AutoGen helps developers create multi-agent applications. Ennodia lets one agent
|
|
35
35
|
request help from other installed agents. A Plan Advisor can propose a bounded
|
|
36
36
|
team. The proposal stays inert until the caller explicitly starts it.
|
|
37
37
|
|
|
38
|
-
## Common
|
|
38
|
+
## Common mistake
|
|
39
39
|
|
|
40
40
|
Do not compare them only by "number of agents." The important question is the
|
|
41
41
|
location of the orchestration. It can be in a custom application framework or a
|
|
@@ -10,14 +10,14 @@ web, browser extension, desktop, and mobile access.
|
|
|
10
10
|
Ennodia is not a chat user interface (UI). An AI agent calls Ennodia during a
|
|
11
11
|
task.
|
|
12
12
|
|
|
13
|
-
## Choose ChatHub
|
|
13
|
+
## Choose ChatHub when
|
|
14
14
|
|
|
15
15
|
- A human wants to compare chatbot answers visually.
|
|
16
16
|
- The main workflow is interactive chat, not local Model Context Protocol (MCP)
|
|
17
17
|
tool orchestration.
|
|
18
18
|
- You want a polished multi-chat interface across hosted chatbots.
|
|
19
19
|
|
|
20
|
-
## Choose Ennodia
|
|
20
|
+
## Choose Ennodia when
|
|
21
21
|
|
|
22
22
|
- A primary agent needs help and can call MCP tools.
|
|
23
23
|
- You want local agent command-line interfaces (CLIs) to run as child tasks.
|
|
@@ -26,12 +26,12 @@ task.
|
|
|
26
26
|
- You want a Judge to map the differences. You want a Result Advisor to
|
|
27
27
|
recommend an answer. The user does not need to grade all responses.
|
|
28
28
|
|
|
29
|
-
## Key
|
|
29
|
+
## Key difference
|
|
30
30
|
|
|
31
31
|
ChatHub helps a person compare chatbot outputs. Ennodia helps an agent delegate
|
|
32
32
|
work to other local agents and inspect what happened.
|
|
33
33
|
|
|
34
|
-
## Common
|
|
34
|
+
## Common mistake
|
|
35
35
|
|
|
36
36
|
Do not call Ennodia "ChatHub for agents." Explain that Ennodia provides task
|
|
37
37
|
orchestration and traces. It does not provide a human chat comparison interface.
|
|
@@ -17,7 +17,7 @@ interface (API) subset to the same agents.
|
|
|
17
17
|
Some adjacent tools have similar descriptions. They usually have different
|
|
18
18
|
purposes.
|
|
19
19
|
|
|
20
|
-
## Choose the
|
|
20
|
+
## Choose the right page
|
|
21
21
|
|
|
22
22
|
| Question | Page |
|
|
23
23
|
| --- | --- |
|
|
@@ -30,7 +30,7 @@ purposes.
|
|
|
30
30
|
| Is Ennodia model merging? | [Ennodia vs Model Merging](./model-merging/) |
|
|
31
31
|
| What is the broader pattern? | [Second Opinions as Infrastructure](/docs/concepts/second-opinions/) |
|
|
32
32
|
|
|
33
|
-
## What Ennodia
|
|
33
|
+
## What Ennodia is
|
|
34
34
|
|
|
35
35
|
Ennodia is:
|
|
36
36
|
|
|
@@ -47,7 +47,7 @@ Ennodia is:
|
|
|
47
47
|
Result Advisor recommends an answer
|
|
48
48
|
- a native Agent Skills bridge for harnesses that support `SKILL.md` folders
|
|
49
49
|
|
|
50
|
-
## What Ennodia
|
|
50
|
+
## What Ennodia is not
|
|
51
51
|
|
|
52
52
|
Ennodia is not:
|
|
53
53
|
|
|
@@ -64,7 +64,7 @@ Durable model and skill preference memory is roadmap work. By default, Ennodia
|
|
|
64
64
|
stores terminal run history locally. In-progress run and task state remains
|
|
65
65
|
process-local.
|
|
66
66
|
|
|
67
|
-
## Other
|
|
67
|
+
## Other related work
|
|
68
68
|
|
|
69
69
|
Some related ideas do not need a full page yet:
|
|
70
70
|
|
|
@@ -10,14 +10,14 @@ manage, and deploy long-running, stateful agents.
|
|
|
10
10
|
Ennodia is intentionally narrower. It does not require a custom graph,
|
|
11
11
|
state machine, durable agent state, or application runtime.
|
|
12
12
|
|
|
13
|
-
## Choose LangGraph
|
|
13
|
+
## Choose LangGraph when
|
|
14
14
|
|
|
15
15
|
- You create an agentic application.
|
|
16
16
|
- You need custom graph nodes, edges, state, persistence, or deployment control.
|
|
17
17
|
- You want to model a workflow as programmable application infrastructure.
|
|
18
18
|
- You own the application code and want a framework embedded in that code.
|
|
19
19
|
|
|
20
|
-
## Choose Ennodia
|
|
20
|
+
## Choose Ennodia when
|
|
21
21
|
|
|
22
22
|
- You have a primary agent in a Model Context Protocol (MCP) client.
|
|
23
23
|
- You want that agent to request help from other installed local agent
|
|
@@ -28,7 +28,7 @@ state machine, durable agent state, or application runtime.
|
|
|
28
28
|
validated start request.
|
|
29
29
|
- You want a small MCP surface without a full application framework.
|
|
30
30
|
|
|
31
|
-
## Key
|
|
31
|
+
## Key difference
|
|
32
32
|
|
|
33
33
|
LangGraph helps developers create agent systems. Ennodia lets one agent delegate
|
|
34
34
|
work to other local agents during a task.
|
|
@@ -36,7 +36,7 @@ work to other local agents during a task.
|
|
|
36
36
|
Plan Advisor does not change this boundary: it can propose explicit worker
|
|
37
37
|
assignments, but it cannot define arbitrary graph behavior or execute the plan.
|
|
38
38
|
|
|
39
|
-
## Common
|
|
39
|
+
## Common mistake
|
|
40
40
|
|
|
41
41
|
Do not treat Ennodia as a lighter LangGraph runtime. Ennodia does not replace a
|
|
42
42
|
programmable graph framework. It gives an active agent a simple way to request
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: Ennodia vs Mixture-of-Agents and
|
|
2
|
+
title: Ennodia vs Mixture-of-Agents and ensembles
|
|
3
3
|
description: How Ennodia differs from Mixture-of-Agents papers, large language model ensembles, majority voting, and benchmark-oriented aggregation.
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -11,14 +11,14 @@ or task-specific aggregation over multiple model outputs.
|
|
|
11
11
|
Ennodia uses some related ideas, but it is not primarily a benchmark ensemble
|
|
12
12
|
or formal voting engine.
|
|
13
13
|
|
|
14
|
-
## Choose Mixture-of-Agents or an
|
|
14
|
+
## Choose Mixture-of-Agents or an ensemble when
|
|
15
15
|
|
|
16
16
|
- You define an inference strategy.
|
|
17
17
|
- You want a repeatable aggregation method over model outputs.
|
|
18
18
|
- You need benchmarked quality gains for a specific task family.
|
|
19
19
|
- You want majority vote, quorum, weighting, or another formal decision rule.
|
|
20
20
|
|
|
21
|
-
## Choose Ennodia
|
|
21
|
+
## Choose Ennodia when
|
|
22
22
|
|
|
23
23
|
- You want to run real local agent command-line interfaces (CLIs), not only raw
|
|
24
24
|
model calls.
|
|
@@ -27,13 +27,13 @@ or formal voting engine.
|
|
|
27
27
|
a result.
|
|
28
28
|
- You need practical local delegation more than a research-grade ensemble.
|
|
29
29
|
|
|
30
|
-
## Key
|
|
30
|
+
## Key difference
|
|
31
31
|
|
|
32
32
|
Mixture-of-Agents and ensemble methods focus on output aggregation. Ennodia
|
|
33
33
|
focuses on visible local agent orchestration. It then uses model-led Compare
|
|
34
34
|
when multiple answers are available.
|
|
35
35
|
|
|
36
|
-
## Common
|
|
36
|
+
## Common mistake
|
|
37
37
|
|
|
38
38
|
Do not describe Ennodia Compare as consensus. The Judge maps the candidate
|
|
39
39
|
outputs, and the Result Advisor recommends an answer. It does not implement
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: Ennodia vs
|
|
2
|
+
title: Ennodia vs model merging
|
|
3
3
|
description: How Ennodia differs from model merging tools such as mergekit and other weight-level model-combination approaches.
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -10,14 +10,14 @@ describes it as tools for model-checkpoint merging strategies.
|
|
|
10
10
|
|
|
11
11
|
Ennodia does not change model weights.
|
|
12
12
|
|
|
13
|
-
## Choose
|
|
13
|
+
## Choose model merging when
|
|
14
14
|
|
|
15
15
|
- You control compatible model weights.
|
|
16
16
|
- You want one merged model artifact.
|
|
17
17
|
- You want changes to happen before inference.
|
|
18
18
|
- You evaluate merge recipes, checkpoints, or open-weight model behavior.
|
|
19
19
|
|
|
20
|
-
## Choose Ennodia
|
|
20
|
+
## Choose Ennodia when
|
|
21
21
|
|
|
22
22
|
- You want separate agents to run at task time.
|
|
23
23
|
- You want to keep provider subscriptions and installed command-line interfaces
|
|
@@ -26,12 +26,12 @@ Ennodia does not change model weights.
|
|
|
26
26
|
output.
|
|
27
27
|
- You do not want to produce or host a new model artifact.
|
|
28
28
|
|
|
29
|
-
## Key
|
|
29
|
+
## Key difference
|
|
30
30
|
|
|
31
31
|
Model merging changes the model artifact. Ennodia coordinates multiple agents at
|
|
32
32
|
runtime.
|
|
33
33
|
|
|
34
|
-
## Common
|
|
34
|
+
## Common mistake
|
|
35
35
|
|
|
36
36
|
Do not describe Ennodia as model merging, fine-tuning, or weight composition. It
|
|
37
37
|
is runtime orchestration over installed local agents.
|
|
@@ -19,7 +19,7 @@ installed local agents.
|
|
|
19
19
|
|
|
20
20
|
Ennodia does not sell hosted model access or proxy provider billing.
|
|
21
21
|
|
|
22
|
-
## Choose OpenRouter
|
|
22
|
+
## Choose OpenRouter when
|
|
23
23
|
|
|
24
24
|
- You want one hosted API for many models.
|
|
25
25
|
- You want provider routing, fallback, and pricing controls behind one endpoint.
|
|
@@ -27,7 +27,7 @@ Ennodia does not sell hosted model access or proxy provider billing.
|
|
|
27
27
|
command-line interface (CLI) runs.
|
|
28
28
|
- You want centralized hosted model access outside a local desktop agent installation.
|
|
29
29
|
|
|
30
|
-
## Choose Ennodia
|
|
30
|
+
## Choose Ennodia when
|
|
31
31
|
|
|
32
32
|
- Your primary agent has a task in a Model Context Protocol (MCP) client.
|
|
33
33
|
- You want that agent to request help from installed local agent command-line
|
|
@@ -41,7 +41,7 @@ Ennodia does not sell hosted model access or proxy provider billing.
|
|
|
41
41
|
automatic execution. Plan Advisor cannot start the proposal.
|
|
42
42
|
- You want a local HTTP bridge over those same agent runs.
|
|
43
43
|
|
|
44
|
-
## Key
|
|
44
|
+
## Key difference
|
|
45
45
|
|
|
46
46
|
OpenRouter routes hosted model API calls. Ennodia coordinates local agent
|
|
47
47
|
subprocesses and can expose that local orchestration through MCP or IO.
|
|
@@ -49,7 +49,7 @@ subprocesses and can expose that local orchestration through MCP or IO.
|
|
|
49
49
|
OpenRouter provides infrastructure for application developers. Ennodia is a
|
|
50
50
|
local collaboration tool for agents in a code or research workflow.
|
|
51
51
|
|
|
52
|
-
## Common
|
|
52
|
+
## Common mistake
|
|
53
53
|
|
|
54
54
|
Do not describe Ennodia as a cheaper OpenRouter or an OpenRouter replacement.
|
|
55
55
|
It solves a different problem: visible delegation to installed local agents.
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: Compositional
|
|
2
|
+
title: Compositional audits
|
|
3
3
|
description: Split large reviews into focused slices, route them to local agents, and combine the results without losing traceability.
|
|
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
|
Large reviews work better when each agent gets a small, explicit slice. Ennodia
|
|
7
9
|
supports this pattern with `ennodia_start_compositional`, existing task polling,
|
|
8
10
|
and `ennodia_start_compare`. The `compositional-audit` skill gives reviewers a
|
|
9
11
|
consistent rubric.
|
|
10
12
|
|
|
11
|
-
## When
|
|
13
|
+
## When to use it
|
|
12
14
|
|
|
13
15
|
Use a compositional audit when the request mixes multiple risk types, such as:
|
|
14
16
|
|
|
@@ -20,7 +22,7 @@ Use a compositional audit when the request mixes multiple risk types, such as:
|
|
|
20
22
|
One broad prompt can make every reviewer repeat the same surface-level answer.
|
|
21
23
|
Slices make each response easier to verify and combine.
|
|
22
24
|
|
|
23
|
-
## Good
|
|
25
|
+
## Good slice shape
|
|
24
26
|
|
|
25
27
|
A useful slice includes:
|
|
26
28
|
|
|
@@ -48,7 +50,7 @@ Return under 450 words:
|
|
|
48
50
|
4. concrete recommendation
|
|
49
51
|
```
|
|
50
52
|
|
|
51
|
-
## Current
|
|
53
|
+
## Current workflow
|
|
52
54
|
|
|
53
55
|
Install the skill into the harnesses you want to use:
|
|
54
56
|
|
|
@@ -150,14 +152,14 @@ When `compareReady` is true, pass the returned `readyTaskIds` to
|
|
|
150
152
|
}
|
|
151
153
|
```
|
|
152
154
|
|
|
153
|
-
## What
|
|
155
|
+
## What to avoid
|
|
154
156
|
|
|
155
157
|
- Do not send the entire plan to every shard if the goal is faster, deeper review.
|
|
156
158
|
- Do not mix unrelated evidence in one slice.
|
|
157
159
|
- Do not treat failed, empty, or access-limited shard output as a normal review.
|
|
158
160
|
- Do not claim consensus when the slices disagree.
|
|
159
161
|
|
|
160
|
-
## Current
|
|
162
|
+
## Current boundary
|
|
161
163
|
|
|
162
164
|
`ennodia_estimate_compositional_budget` resolves and budgets slices without
|
|
163
165
|
starting child agents. `ennodia_start_compositional` starts and budgets the shard
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: Data
|
|
2
|
+
title: Data governance
|
|
3
3
|
description: What Ennodia stores, what it does not store, and where data can leave the machine.
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -8,7 +8,7 @@ task output, or telemetry to an Ennodia-hosted service. The selected child agent
|
|
|
8
8
|
CLIs can still contact their own model providers according to their own
|
|
9
9
|
configuration, subscriptions, and policies.
|
|
10
10
|
|
|
11
|
-
## What Ennodia
|
|
11
|
+
## What Ennodia stores
|
|
12
12
|
|
|
13
13
|
Live process state is held in memory while the server runs. It includes run
|
|
14
14
|
status, task IDs, command summaries, stdout/stderr captures, failures, timing,
|
|
@@ -44,7 +44,7 @@ A concurrent append in the short compaction window can also be lost.
|
|
|
44
44
|
Set `ENNODIA_HISTORY=0` to disable durable history. Set
|
|
45
45
|
`ENNODIA_HISTORY_DIR=/path/to/dir` to move the history file.
|
|
46
46
|
|
|
47
|
-
## What Ennodia
|
|
47
|
+
## What Ennodia does not know
|
|
48
48
|
|
|
49
49
|
Budget estimates are preflight input-token estimates, not provider bills. They
|
|
50
50
|
exclude provider-side system prompts, file reads performed inside a child
|
|
@@ -52,17 +52,13 @@ agent, tool loops, output tokens, cache behavior, and private subscription
|
|
|
52
52
|
state. Subscription quota is reported as unknown unless a supported local
|
|
53
53
|
surface exposes a reliable value.
|
|
54
54
|
|
|
55
|
-
## Explicit
|
|
55
|
+
## Explicit writes
|
|
56
56
|
|
|
57
57
|
`ennodia_install_skills` can write bundled `SKILL.md` folders into project or
|
|
58
58
|
user skill locations. It defaults to `dryRun: true`, and project-scope installs
|
|
59
59
|
require an explicit `cwd`.
|
|
60
60
|
|
|
61
|
-
|
|
62
|
-
provided. Those results are ignored by default because live outputs can include
|
|
63
|
-
model text and environment metadata.
|
|
64
|
-
|
|
65
|
-
## Practical Guidance
|
|
61
|
+
## Practical guidance
|
|
66
62
|
|
|
67
63
|
Use Ennodia for work that you are willing to send to the selected local agent
|
|
68
64
|
CLIs. Use `cwd` deliberately. Prefer short staged case files over broad prompts.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: How Ennodia
|
|
2
|
+
title: How Ennodia works
|
|
3
3
|
description: A visible orchestration pipeline for optional plan advice, routing, budget checks, task watching, recovery, Judge, and Result Advisor passes.
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -8,7 +8,7 @@ turns one request into a visible orchestration. The normal entrypoint is
|
|
|
8
8
|
`ennodia_run`. Lower-level task and Compare tools stay available for debugging
|
|
9
9
|
and manual control.
|
|
10
10
|
|
|
11
|
-
## Pipeline at a
|
|
11
|
+
## Pipeline at a glance
|
|
12
12
|
|
|
13
13
|
| Stage | What happens | Main tools |
|
|
14
14
|
| --- | --- | --- |
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: Second
|
|
2
|
+
title: Second opinions as infrastructure
|
|
3
3
|
description: How to use Ennodia for independent artificial intelligence (AI) panels, decomposed reviews, and red-team prompts.
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -11,7 +11,7 @@ delegation to installed local agents with a visible trace. Compare turns
|
|
|
11
11
|
multiple answers into a disagreement map and one usable result. The Judge maps
|
|
12
12
|
the evidence, and the Result Advisor recommends the answer.
|
|
13
13
|
|
|
14
|
-
## Three
|
|
14
|
+
## Three patterns
|
|
15
15
|
|
|
16
16
|
### Replicate
|
|
17
17
|
|
|
@@ -79,7 +79,7 @@ Fan out prompts that argue against a proposal from different angles.
|
|
|
79
79
|
Use this when the primary agent has a plausible plan and you want
|
|
80
80
|
independent pressure before committing.
|
|
81
81
|
|
|
82
|
-
## Staging
|
|
82
|
+
## Staging pattern
|
|
83
83
|
|
|
84
84
|
For larger reviews, have the primary agent stage a folder containing the case
|
|
85
85
|
file: relevant paths, screenshots, dataset summaries, contracts, or decision
|
|
@@ -87,7 +87,7 @@ criteria. Then pass `cwd` to Ennodia so child agents can inspect the same local
|
|
|
87
87
|
context independently. Keep staged material deliberate. Do not give every agent
|
|
88
88
|
an unbounded workspace when a smaller evidence bundle will do.
|
|
89
89
|
|
|
90
|
-
## Skills
|
|
90
|
+
## Skills carry expertise
|
|
91
91
|
|
|
92
92
|
Use Agent Skills as reusable rubrics. A skill can define the review standard,
|
|
93
93
|
expected evidence, output shape, and escalation rules. Ennodia installs bundled
|
|
@@ -104,7 +104,7 @@ run without inlining the full instructions into every prompt.
|
|
|
104
104
|
- Exam or rubric QA: send the same staged rubric to multiple agents. Compare
|
|
105
105
|
where their grading differs.
|
|
106
106
|
|
|
107
|
-
## Honest
|
|
107
|
+
## Honest constraints
|
|
108
108
|
|
|
109
109
|
Ennodia supports careful review. A run usually takes minutes, not seconds.
|
|
110
110
|
Compare adds two serial model passes after the child agents finish.
|
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.
|