ennodia 0.2.0 → 0.3.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/README.md +76 -119
- package/docs/evidence/building-ennodia.md +66 -0
- package/docs/evidence/docs-drift.md +73 -0
- package/docs/evidence/index.md +18 -0
- package/docs/evidence/measurement.md +40 -0
- package/docs/evidence/skill-trial.md +68 -0
- package/docs/getting-started.md +55 -32
- package/docs/guides/agent-skills.md +22 -8
- package/docs/guides/budgets-and-limits.md +1 -1
- package/docs/guides/pragmatic-mode.md +122 -0
- package/docs/guides/recipes.md +56 -0
- package/docs/guides/troubleshooting.md +48 -0
- package/docs/guides/understand-results.md +41 -0
- package/docs/index.md +27 -90
- package/docs/install.md +49 -16
- package/docs/reference/controlled-english.md +2 -3
- package/docs/reference/ennodia-io.md +27 -4
- package/docs/reference/mcp-tools.md +167 -10
- package/docs/reference/supported-harnesses.md +40 -1
- package/docs/roadmap.md +25 -0
- package/examples/docs-drift/README.md +8 -0
- package/examples/docs-drift/archive/migration.md +4 -0
- package/examples/docs-drift/check.ts +7 -0
- package/examples/docs-drift/config.ts +8 -0
- package/examples/docs-drift/demo.ts +54 -0
- package/examples/docs-drift/recorded-run.json +16 -0
- package/examples/skill-trial/README.md +8 -0
- package/examples/skill-trial/check.ts +15 -0
- package/examples/skill-trial/contract.md +7 -0
- package/examples/skill-trial/recorded-trial.json +42 -0
- package/examples/skill-trial/retry.ts +4 -0
- package/package.json +5 -2
- package/skills/pragmatic/SKILL.md +40 -0
- package/src/advisor.ts +5 -0
- package/src/budget.ts +16 -10
- package/src/cli.ts +3 -0
- package/src/compare.ts +18 -12
- package/src/compositional.ts +22 -4
- package/src/core.ts +77 -47
- package/src/diagnosis.ts +44 -7
- package/src/harnesses.ts +286 -33
- package/src/history.ts +4 -1
- package/src/index.ts +3 -0
- package/src/plan-advice.ts +5 -2
- package/src/planner.ts +24 -1
- package/src/pragmatic.ts +52 -0
- package/src/process.ts +18 -0
- package/src/runs.ts +85 -10
- package/src/server.ts +47 -17
- package/src/tasks.ts +191 -25
- package/src/version.ts +1 -1
|
@@ -3,14 +3,15 @@ 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
|
-
|
|
7
|
-
|
|
6
|
+
A new Agent Skill can help a task, add irrelevant advice, or make no difference.
|
|
7
|
+
Try the skill in a separate Ennodia task and bring useful findings back to your main conversation.
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
A skill is a folder containing `SKILL.md` in a native agent location.
|
|
10
|
+
Ennodia discovers that folder and requests the selected skill by name.
|
|
11
|
+
It does not inline the full instructions into each delegated prompt.
|
|
11
12
|
|
|
12
|
-
|
|
13
|
-
|
|
13
|
+
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.
|
|
14
15
|
|
|
15
16
|
## List Available Skills
|
|
16
17
|
|
|
@@ -53,8 +54,10 @@ Review the planned paths. If they are correct, repeat with `dryRun: false`.
|
|
|
53
54
|
"tool": "ennodia_run",
|
|
54
55
|
"arguments": {
|
|
55
56
|
"prompt": "Audit this documentation against the linked sources and recommend exact edits.",
|
|
56
|
-
"
|
|
57
|
-
"
|
|
57
|
+
"harnessId": "codex",
|
|
58
|
+
"mode": "single",
|
|
59
|
+
"compare": false,
|
|
60
|
+
"cwd": "/absolute/path/to/project",
|
|
58
61
|
"skillIds": ["source-grounded-audit"]
|
|
59
62
|
}
|
|
60
63
|
}
|
|
@@ -63,6 +66,11 @@ Review the planned paths. If they are correct, repeat with `dryRun: false`.
|
|
|
63
66
|
Task and run views include selected skill metadata in `appliedSkills`, so the
|
|
64
67
|
primary agent can see which skills were requested.
|
|
65
68
|
|
|
69
|
+
Native agents can self-select other skills from their environment.
|
|
70
|
+
An empty requested skill list does not guarantee a skill-free control.
|
|
71
|
+
`appliedSkills` records the request, not verified execution of the skill’s instructions.
|
|
72
|
+
A permission denial can prevent the worker from loading the skill.
|
|
73
|
+
|
|
66
74
|
Bundled skills include:
|
|
67
75
|
|
|
68
76
|
| Skill | Use it for |
|
|
@@ -84,3 +92,9 @@ Bundled skills include:
|
|
|
84
92
|
|
|
85
93
|
See [Model Context Protocol (MCP) Tools](/docs/reference/mcp-tools/) for the
|
|
86
94
|
exact tool parameters.
|
|
95
|
+
|
|
96
|
+
## Main-agent delegation skill
|
|
97
|
+
|
|
98
|
+
The bundled `pragmatic` skill guides the main agent through bounded delegation and result verification.
|
|
99
|
+
Install it using `skillIds: ["pragmatic"]`. A delegated coordinator can use it when orchestration is part of its assignment.
|
|
100
|
+
See [Pragmatic mode](/docs/guides/pragmatic-mode/) for the experimental recipes.
|
|
@@ -95,7 +95,7 @@ supported quota surface.
|
|
|
95
95
|
|
|
96
96
|
## Practical Defaults
|
|
97
97
|
|
|
98
|
-
-
|
|
98
|
+
- Start with one agent and a narrow task. Add attempts when they address a specific uncertainty.
|
|
99
99
|
- Use `maxOutputChars` to keep Compare input bounded.
|
|
100
100
|
- Keep `maxChildTasks` set when the prompt may route to many adapters.
|
|
101
101
|
- Treat unknown subscription-limit status as a transparency signal, not proof
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Pragmatic mode
|
|
3
|
+
description: Organize independent model attempts and compare evidence against complete acceptance criteria.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Pragmatic mode is an opt-in beta in `0.3.0`, available through `ennodia`.
|
|
7
|
+
It helps your main agent delegate bounded work without loading entire logs or files into the main conversation.
|
|
8
|
+
It does not guarantee lower costs or select the cheapest model automatically.
|
|
9
|
+
|
|
10
|
+
## Organize independent attempts
|
|
11
|
+
|
|
12
|
+
Use this prompt in your main agent:
|
|
13
|
+
|
|
14
|
+
```text
|
|
15
|
+
Use Ennodia MCP in Pragmatic mode to solve this task.
|
|
16
|
+
Organize independent model attempts and tailor questions where useful.
|
|
17
|
+
Discover relevant skills and compare a skill trial with a matched trial without requested skills.
|
|
18
|
+
Compare the evidence with Judge and Result Advisor, then verify the complete acceptance criteria.
|
|
19
|
+
Count planning, all attempts, retries, comparison and verification in the total cost.
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Ennodia supports one main agent coordinating N independent workers.
|
|
23
|
+
N=1 remains useful for a specialist or handoff.
|
|
24
|
+
The main agent can delegate planning through Plan Advisor. It does not need to design every specialist question or locate every skill manually.
|
|
25
|
+
|
|
26
|
+
1. Discover harnesses, supported model IDs and native skills.
|
|
27
|
+
2. Start Plan Advisor with the full objective, model allowlists and explained limits.
|
|
28
|
+
3. Inspect the validated plan and launch it with its exact digest.
|
|
29
|
+
4. Inspect terminal task evidence and compare useful results with Judge and Result Advisor.
|
|
30
|
+
5. Verify the complete task locally and include all attempts in the measurement.
|
|
31
|
+
|
|
32
|
+
For caller-defined assignments, compositional tasks support a separate prompt, model and skill list per slice.
|
|
33
|
+
A slice with `skillIds: []` requests no skills but can still discover native skills.
|
|
34
|
+
A controlled skill trial requires matching environments and evidence of actual skill loading.
|
|
35
|
+
|
|
36
|
+
## Finish difficult work in chunks
|
|
37
|
+
|
|
38
|
+
Workers do not need to occupy a session for the full timeout.
|
|
39
|
+
Use bounded chunks for investigation, implementation and integrated verification.
|
|
40
|
+
Each chunk returns its artifacts, executed checks, remaining work and next step.
|
|
41
|
+
A completed chunk is distinct from an accepted complete task.
|
|
42
|
+
|
|
43
|
+
Independent workers can explore alternatives within a stage.
|
|
44
|
+
Compare evidence at useful decision points and continue with owned sessions or compact handoffs.
|
|
45
|
+
Count every chunk and handoff in the total cost.
|
|
46
|
+
A deadline is a maximum allowance, not a target duration.
|
|
47
|
+
|
|
48
|
+
## Evidence contracts in version 0.3.0
|
|
49
|
+
|
|
50
|
+
`ennodia_run`, `ennodia_estimate_budget`, `ennodia_start_compositional` and `ennodia_estimate_compositional_budget` accept:
|
|
51
|
+
|
|
52
|
+
```json
|
|
53
|
+
{
|
|
54
|
+
"pragmatic": {
|
|
55
|
+
"recipe": "investigate",
|
|
56
|
+
"acceptanceCriteria": "Cite decisive source evidence and executed checks. Report unresolved requirements."
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
The contract preserves routing and comparison choices. It does not force one worker.
|
|
62
|
+
Explicit models are optional. Omitted models use native harness defaults.
|
|
63
|
+
|
|
64
|
+
Use discovered model IDs for reproducible comparisons. Use compositional slices for different models on the same harness.
|
|
65
|
+
Version 0.3.0 preserves independent workers and comparison.
|
|
66
|
+
|
|
67
|
+
### Select reasoning effort
|
|
68
|
+
|
|
69
|
+
Source builds accept `reasoningEffort` on `ennodia_run` and `ennodia_start` for Codex workers. For example, select `model: "gpt-5.6-luna"` with `reasoningEffort: "max"`, or `model: "gpt-6-astra"` with `reasoningEffort: "low"`, when supported by your installed Codex and account. Ennodia forwards the setting to the native CLI. It does not infer the cheapest setting. Other adapters reject explicit effort settings. Omit the field to preserve native defaults.
|
|
70
|
+
|
|
71
|
+
This setting applies to workers, not the Judge or Result Advisor. Run and task records preserve the requested setting. That does not prove the provider used it or establish its price.
|
|
72
|
+
|
|
73
|
+
## Get findings or a patch
|
|
74
|
+
|
|
75
|
+
| Recipe | Worker instruction | Main agent responsibility |
|
|
76
|
+
| --- | --- | --- |
|
|
77
|
+
| `investigate` | Return cited findings, small excerpts, coverage limits, and unresolved questions | Verify decisive evidence |
|
|
78
|
+
| `patch` | Return a complete unified diff proposal without applying it | Review, apply, and test the patch |
|
|
79
|
+
|
|
80
|
+
Both recipes instruct workers to avoid file changes, side effects and repeated failed approaches.
|
|
81
|
+
Additional delegation stays within caller-authorized scope and allowance and must be counted.
|
|
82
|
+
These are worker instructions, not an enforced permission sandbox.
|
|
83
|
+
Native harness permissions remain authoritative.
|
|
84
|
+
A worker can fail to follow instructions, so use appropriate native permissions for sensitive work.
|
|
85
|
+
|
|
86
|
+
Patch results distinguish executed checks from proposed checks.
|
|
87
|
+
Check `finalAnswerChars` and request a larger answer if the response was truncated.
|
|
88
|
+
Do not apply an incomplete diff.
|
|
89
|
+
Patch runs fail when the child answer was truncated before reaching the run. Submit a smaller assignment in that case.
|
|
90
|
+
|
|
91
|
+
For authorized file edits, use a normal run in a separate checkout with appropriate native permissions.
|
|
92
|
+
The experimental recipes do not grant edit permissions.
|
|
93
|
+
Temporary `isolateCwd` copies are deleted when tasks finish and cannot serve as persistent patch artifacts.
|
|
94
|
+
|
|
95
|
+
## Inspect the work
|
|
96
|
+
|
|
97
|
+
Use `ennodia_get_run` for status, requested `model`, `pragmatic` settings, elapsed time, events, and child task IDs.
|
|
98
|
+
Inspect child tasks for output and adapter-reported usage when available.
|
|
99
|
+
Missing usage is unknown, not zero.
|
|
100
|
+
Persisted run records are bounded and can omit output.
|
|
101
|
+
|
|
102
|
+
Use `ennodia_estimate_budget` with the same `pragmatic` settings and model to include worker instructions in the preflight estimate.
|
|
103
|
+
Estimates do not measure total task spend, internal tool reads, or subscription quota consumption.
|
|
104
|
+
|
|
105
|
+
The foundation does not retry automatically or track retries across separate runs.
|
|
106
|
+
Plan Advisor, independent workers, Judge and Result Advisor all contribute to total task cost.
|
|
107
|
+
Escalate unresolved work in a separate run after inspecting its evidence.
|
|
108
|
+
Compare total elapsed time, verified outcomes, and all reported usage across attempts before claiming savings.
|
|
109
|
+
|
|
110
|
+
## Install the main-agent skill
|
|
111
|
+
|
|
112
|
+
The bundled `pragmatic` skill guides delegation from your main conversation.
|
|
113
|
+
Install it through [Agent Skills](/docs/guides/agent-skills/) using `skillIds: ["pragmatic"]`.
|
|
114
|
+
A delegated coordinator can use this skill when its assignment includes orchestration.
|
|
115
|
+
|
|
116
|
+
In version 0.3.0, wait for the worker with `ennodia_get_run`, `waitMs: 30000`, and `includeEvents: false`. A nonterminal response means the worker is still running. Read its terminal answer and verify the acceptance criteria before reporting completion. The wait itself never cancels the run.
|
|
117
|
+
|
|
118
|
+
## Deadlines, permissions and continuation
|
|
119
|
+
|
|
120
|
+
Workers receive an execution deadline and their configured permissions. Inspect partial findings before continuing. Use a normal authorized run for file edits.
|
|
121
|
+
|
|
122
|
+
See [execution deadlines and session continuation](/docs/reference/mcp-tools/#execution-deadlines), [Troubleshooting](/docs/guides/troubleshooting/) and [Budgets and Limits](/docs/guides/budgets-and-limits/) for details.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Recipes
|
|
3
|
+
description: Three small ways to get useful help from Ennodia.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Start with one useful attempt
|
|
7
|
+
|
|
8
|
+
A focused request is easier to check and integrate.
|
|
9
|
+
Give your primary agent the relevant files, attempted fixes, and the result you need.
|
|
10
|
+
|
|
11
|
+
## A task is stuck
|
|
12
|
+
|
|
13
|
+
```text
|
|
14
|
+
Use Ennodia MCP to get a second opinion on this bug.
|
|
15
|
+
Give one available agent the failing test and our attempted fixes.
|
|
16
|
+
Request a different explanation and a concrete check for it.
|
|
17
|
+
Keep the review read-only and return the findings here.
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
A useful result names a different hypothesis and a way to test it.
|
|
21
|
+
Repeating the same suggestion is a result to record, not a reason to restart the whole conversation.
|
|
22
|
+
|
|
23
|
+
## A skill might help
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
Use Ennodia MCP to try an installed review skill on this change in a separate task.
|
|
27
|
+
Keep the review read-only. Bring back useful findings and unsupported suggestions.
|
|
28
|
+
Show which skill and model were requested and what remains unverified.
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Check native installation with your agent before the task starts.
|
|
32
|
+
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
|
+
|
|
35
|
+
## Two answers disagree
|
|
36
|
+
|
|
37
|
+
```text
|
|
38
|
+
Use Ennodia MCP to compare these two answers.
|
|
39
|
+
Identify the assumption behind each disagreement and the evidence for each side.
|
|
40
|
+
Recommend the smallest check that can settle it.
|
|
41
|
+
Keep useful partial findings even if neither answer solves the whole task.
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Compare adds a Judge pass and a Result Advisor pass.
|
|
45
|
+
Use it when those additional checks are useful for your next decision.
|
|
46
|
+
Your primary agent can directly inspect one short worker answer without Compare.
|
|
47
|
+
|
|
48
|
+
## Agent implementation notes
|
|
49
|
+
|
|
50
|
+
`ennodia_run` starts a tracked run. For one explicit attempt, use `mode: "single"`, a discovered `harnessId`, and `compare: false`.
|
|
51
|
+
Use `ennodia_get_run` to inspect the result.
|
|
52
|
+
The [tool reference](/docs/reference/mcp-tools/) contains exact parameters.
|
|
53
|
+
|
|
54
|
+
For independent work on the same files, use separate checkouts or `isolateCwd: true`.
|
|
55
|
+
Ennodia refuses symbolic links in copied directories. It deletes each temporary copy when the task ends.
|
|
56
|
+
Save required changes before relying on a temporary directory as an output artifact.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Troubleshooting
|
|
3
|
+
description: Resolve failed starts without confusing configuration errors with model quality.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# When an attempt cannot finish
|
|
7
|
+
|
|
8
|
+
Start with the task’s failure reason and captured output.
|
|
9
|
+
Use `ennodia_get_task` for details and `ennodia_list_harnesses` to inspect supported commands.
|
|
10
|
+
|
|
11
|
+
## The agent is listed, but cannot run the task
|
|
12
|
+
|
|
13
|
+
Discovery establishes command availability. It does not establish login state, available models, or remaining provider quota.
|
|
14
|
+
Run a small task to check the selected configuration.
|
|
15
|
+
|
|
16
|
+
For an expired login, sign in through the affected agent’s supported command-line interface (CLI).
|
|
17
|
+
For an unavailable model, check that agent’s model list and configured provider.
|
|
18
|
+
Do not interpret either failure as evidence that the model could not solve the task.
|
|
19
|
+
|
|
20
|
+
## The worker cannot read or edit
|
|
21
|
+
|
|
22
|
+
Codex workers use a read-only sandbox by default.
|
|
23
|
+
Other agents retain their native permission rules.
|
|
24
|
+
Non-interactive agents can deny operations that require an interactive permission prompt.
|
|
25
|
+
|
|
26
|
+
Use accessible source material and the agent’s normal permission configuration.
|
|
27
|
+
Request a proposed patch when direct editing is unavailable.
|
|
28
|
+
Do not disable permission checks to make an example appear successful.
|
|
29
|
+
|
|
30
|
+
## Isolation rejects a symbolic link
|
|
31
|
+
|
|
32
|
+
`isolateCwd: true` copies a working directory and rejects symbolic links before launch.
|
|
33
|
+
Use a small self-contained fixture or an explicit separate checkout when the project contains such links.
|
|
34
|
+
Ennodia deletes its temporary copied directory after the task ends.
|
|
35
|
+
Use a persistent separate checkout for implementation work that you need to integrate.
|
|
36
|
+
|
|
37
|
+
## A task reaches its timeout
|
|
38
|
+
|
|
39
|
+
Inspect the partial output first. It can contain useful findings or only setup activity.
|
|
40
|
+
Narrow the next request or change its execution configuration when appropriate.
|
|
41
|
+
More time is useful only when the progress supports that choice.
|
|
42
|
+
Cancel unwanted tasks explicitly with `ennodia_cancel_task` or `ennodia_cancel_run`.
|
|
43
|
+
|
|
44
|
+
## A skill was requested but did not load
|
|
45
|
+
|
|
46
|
+
Check `ennodia_list_skills` for the selected agent’s native installation.
|
|
47
|
+
Then inspect the worker’s tool access and output.
|
|
48
|
+
The `appliedSkills` field records the request. It does not independently verify every action inside the worker.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Understand results
|
|
3
|
+
description: Distinguish useful findings, disagreement, missing evidence, and failed execution.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Understand the result
|
|
7
|
+
|
|
8
|
+
Process completion is one signal. A useful answer also needs evidence that fits your task.
|
|
9
|
+
|
|
10
|
+
| Result | Meaning | Next step |
|
|
11
|
+
| --- | --- | --- |
|
|
12
|
+
| Useful finding | A concrete claim, correction, or test you can examine. | Verify it and integrate the useful part. |
|
|
13
|
+
| Disagreement | Different assumptions or conclusions remain. | Check the evidence that can distinguish them. |
|
|
14
|
+
| Unhelpful answer | The attempt ran but did not move the task forward. | Record the conditions and change the approach. |
|
|
15
|
+
| Failed login or unavailable model | The requested model could not be evaluated. | Repair access or select another available configuration. |
|
|
16
|
+
| Timeout | The attempt did not finish within its limit. | Inspect progress before narrowing or repeating it. |
|
|
17
|
+
| Missing tool permission | The worker could not perform a required operation. | Review normal tool permissions or provide accessible material. |
|
|
18
|
+
|
|
19
|
+
An unsuccessful attempt does not prove that every model would fail.
|
|
20
|
+
It can remove the need to repeat that same attempt under the same conditions.
|
|
21
|
+
|
|
22
|
+
## Compare is advice
|
|
23
|
+
|
|
24
|
+
Compare uses a Judge to examine answers and a Result Advisor to recommend a next answer.
|
|
25
|
+
Agreement is not proof of correctness.
|
|
26
|
+
The primary agent still checks code, sources, tests, and important assumptions.
|
|
27
|
+
|
|
28
|
+
When Judge output is unusable, the result exposes `analysisAvailable: false`.
|
|
29
|
+
The Result Advisor can continue with `basis: "candidates-only"`.
|
|
30
|
+
That result has less analysis behind it and needs corresponding scrutiny.
|
|
31
|
+
|
|
32
|
+
## Read the attempt record
|
|
33
|
+
|
|
34
|
+
Task records include the selected agent, requested skills, status, elapsed time, and bounded output.
|
|
35
|
+
Run history preserves terminal run snapshots locally.
|
|
36
|
+
It does not yet learn which model or skill to choose next.
|
|
37
|
+
|
|
38
|
+
`remainingMs` with `etaConfidence: "timeout-budget"` reports time left before the deadline.
|
|
39
|
+
It is not a prediction of model completion time.
|
|
40
|
+
Input-token estimates also exclude work inside the agent.
|
|
41
|
+
Unknown provider usage must remain unknown.
|
package/docs/index.md
CHANGED
|
@@ -1,104 +1,41 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: What is Ennodia?
|
|
3
|
-
description:
|
|
3
|
+
description: Try other agents, models, and skills while staying in your familiar conversation.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
Your primary artificial intelligence (AI) agent can request help from installed
|
|
8
|
-
agent command-line interfaces (CLIs).
|
|
6
|
+
# Keep your agent. Get another way forward.
|
|
9
7
|
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
Ennodia lets your primary artificial intelligence (AI) agent try another agent, model, or skill on a focused task.
|
|
9
|
+
The findings return to your existing conversation.
|
|
12
10
|
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
You can explore another explanation for a bug, test a skill, or examine conflicting advice.
|
|
12
|
+
Your primary agent keeps responsibility for checking and integrating the result.
|
|
13
|
+
Even an unsuccessful attempt can show which approach was tested under the recorded conditions.
|
|
15
14
|
|
|
16
|
-
|
|
17
|
-
diagnosis, or a comparison. A run usually takes minutes.
|
|
15
|
+
## Start here
|
|
18
16
|
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
- [Get your first result](/docs/getting-started/).
|
|
18
|
+
- [Choose a recipe](/docs/guides/recipes/).
|
|
19
|
+
- [Understand the result](/docs/guides/understand-results/).
|
|
20
|
+
- [Read a development case](/docs/evidence/building-ennodia/).
|
|
21
21
|
|
|
22
|
-
##
|
|
22
|
+
## Your existing tools
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
Ennodia runs as a local Model Context Protocol (MCP) server.
|
|
25
|
+
It connects to supported installed agents through their public command-line interfaces (CLIs).
|
|
26
|
+
Your configured providers supply the models. Existing subscriptions, usage limits, and permissions still apply.
|
|
26
27
|
|
|
27
|
-
|
|
28
|
-
|
|
28
|
+
Ennodia discovers native Agent Skills and can request a skill for a separate task.
|
|
29
|
+
A native agent can also choose unrequested skills from its environment.
|
|
29
30
|
|
|
30
|
-
|
|
31
|
-
Claude Code, Antigravity, and OpenCode. Ennodia makes their installed CLIs a
|
|
32
|
-
review panel for the primary agent.
|
|
31
|
+
## Learn more
|
|
33
32
|
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
- [Agent skills](/docs/guides/agent-skills/)
|
|
34
|
+
- [Troubleshooting](/docs/guides/troubleshooting/)
|
|
35
|
+
- [Data movement and history](/docs/concepts/data-governance/)
|
|
36
|
+
- [Examples and evidence](/docs/evidence/)
|
|
37
|
+
- [Roadmap](/docs/roadmap/)
|
|
38
|
+
- [Technical reference](/docs/reference/mcp-tools/)
|
|
36
39
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
separate explicit call must launch the validated plan.
|
|
40
|
-
- Model-led Compare uses a Judge for the disagreement map and a Result Advisor
|
|
41
|
-
for the recommended answer.
|
|
42
|
-
- One shared core discovers harnesses, plans routes, checks local preflight
|
|
43
|
-
limits, tracks tasks, and keeps the trace visible.
|
|
44
|
-
- The separate Ennodia IO package is an experimental appendix for apps.
|
|
45
|
-
|
|
46
|
-
## Why People Use It
|
|
47
|
-
|
|
48
|
-
Ennodia:
|
|
49
|
-
|
|
50
|
-
- discovers supported local harnesses automatically
|
|
51
|
-
- uses your installed CLIs, subscriptions, and model choices
|
|
52
|
-
- estimates preflight input-token budgets and enforces local caps on that
|
|
53
|
-
estimate
|
|
54
|
-
- keeps child task identifiers (IDs), status, estimated completion time,
|
|
55
|
-
output, failures, Compare state, and run
|
|
56
|
-
history visible
|
|
57
|
-
- can retain terminal receipts across server restarts
|
|
58
|
-
- lets a Judge inspect parallel answers and a Result Advisor combine the
|
|
59
|
-
findings
|
|
60
|
-
- uses native Agent Skills through harness-visible `SKILL.md` folders
|
|
61
|
-
|
|
62
|
-
Durable model and skill preference memory is roadmap work. By default, Ennodia
|
|
63
|
-
stores terminal run history under `~/.ennodia/history/`. Live in-progress state
|
|
64
|
-
remains process-local.
|
|
65
|
-
|
|
66
|
-
## Choose Your Path
|
|
67
|
-
|
|
68
|
-
| Task | Page |
|
|
69
|
-
| --- | --- |
|
|
70
|
-
| Request Ennodia installation from an agent | [Installation for Agents](./install/) |
|
|
71
|
-
| Install it manually or work from a checkout | [Quickstart](./getting-started/) |
|
|
72
|
-
| Estimate or limit a costly run | [Budgets and Limits](./guides/budgets-and-limits/) |
|
|
73
|
-
| Install or use `source-grounded-audit` and other skills | [Agent Skills](./guides/agent-skills/) |
|
|
74
|
-
| Understand the run lifecycle | [How Ennodia Works](./concepts/how-ennodia-works/) |
|
|
75
|
-
| Request a bounded team proposal before work | [How Ennodia Works](./concepts/how-ennodia-works/#plan-advisor) |
|
|
76
|
-
| Use panels for second opinions | [Second Opinions as Infrastructure](./concepts/second-opinions/) |
|
|
77
|
-
| Understand local storage and data movement | [Data Governance](./concepts/data-governance/) |
|
|
78
|
-
| Understand Core, <span class="agent-logo agent-logo--mcp" aria-hidden="true"></span>MCP, and experimental IO | [Interfaces and Core](./concepts/interfaces-and-core/) |
|
|
79
|
-
| Split a large review into smaller shards | [Compositional Audits](./concepts/compositional-audits/) |
|
|
80
|
-
| Call the exact <span class="agent-logo agent-logo--mcp" aria-hidden="true"></span>MCP tools | [MCP Tools](./reference/mcp-tools/) |
|
|
81
|
-
| Call Ennodia from a local web app | [Ennodia IO](./reference/ennodia-io/) |
|
|
82
|
-
| Check harness identifiers and installation notes | [Supported Harnesses](./reference/supported-harnesses/) |
|
|
83
|
-
| Use the ASD-STE100 rules and approved Ennodia terms | [Controlled English](./reference/controlled-english/) |
|
|
84
|
-
| Inspect benchmark receipts | [Benchmarks](./reference/benchmarks/) |
|
|
85
|
-
| Decide if Ennodia fits your workflow | [Comparisons](./comparisons/) |
|
|
86
|
-
| Get better output from model-led Compare | [Better Audits](./guides/running-better-audits/) |
|
|
87
|
-
|
|
88
|
-
## First Useful Run
|
|
89
|
-
|
|
90
|
-
1. Install Ennodia in your MCP client.
|
|
91
|
-
2. Call `ennodia_list_harnesses`.
|
|
92
|
-
3. Call `ennodia_estimate_budget` for the task.
|
|
93
|
-
4. Start `ennodia_run`.
|
|
94
|
-
5. Poll `ennodia_get_run` until it reaches `succeeded`, `failed`, or
|
|
95
|
-
`cancelled`.
|
|
96
|
-
|
|
97
|
-
The user does not normally need to grade each child answer. The trace remains
|
|
98
|
-
available for inspection.
|
|
99
|
-
|
|
100
|
-
For a team proposal, call `ennodia_start_plan_advice`. Then poll
|
|
101
|
-
`ennodia_get_plan_advice`. A ready result is only validated data.
|
|
102
|
-
|
|
103
|
-
Call `ennodia_start_advised_plan` with the returned plan digest once to start the
|
|
104
|
-
work.
|
|
40
|
+
General speed or token savings have not been established.
|
|
41
|
+
The examples distinguish useful contributions, incomplete attempts, and technical failures.
|
package/docs/install.md
CHANGED
|
@@ -3,8 +3,9 @@ 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
|
|
|
6
|
-
This page
|
|
7
|
-
|
|
6
|
+
This page gives setup instructions to the user's agent.
|
|
7
|
+
Install Ennodia as a local Model Context Protocol (MCP) server.
|
|
8
|
+
Then connect it to the user's preferred compatible client.
|
|
8
9
|
|
|
9
10
|
## Copy-Paste Prompt
|
|
10
11
|
|
|
@@ -12,6 +13,24 @@ Context Protocol (MCP) server. Then enable it in the user's MCP client.
|
|
|
12
13
|
try-ennodia.cherninlab.com
|
|
13
14
|
```
|
|
14
15
|
|
|
16
|
+
The user can send this address in a new or existing agent conversation.
|
|
17
|
+
The agent handles the setup steps below.
|
|
18
|
+
|
|
19
|
+
## Check the Environment
|
|
20
|
+
|
|
21
|
+
1. Identify the user's client and the machine where Ennodia will run.
|
|
22
|
+
2. Check that the client can launch a local standard input/output (stdio) MCP server.
|
|
23
|
+
3. Check for Bun `1.3.14` or newer in that environment.
|
|
24
|
+
4. Check for a supported agent command-line interface (CLI) with working provider access.
|
|
25
|
+
|
|
26
|
+
Use the client's supported configuration method and the tools' official installation instructions.
|
|
27
|
+
Preserve existing server entries and unrelated settings.
|
|
28
|
+
Use the client's normal permissions.
|
|
29
|
+
|
|
30
|
+
If the current client cannot launch a local MCP server, explain the missing capability.
|
|
31
|
+
Use a compatible local client for Ennodia.
|
|
32
|
+
See [Supported Harnesses](/docs/reference/supported-harnesses/) for the worker agents Ennodia can call.
|
|
33
|
+
|
|
15
34
|
## Install Command
|
|
16
35
|
|
|
17
36
|
Use the npm package for normal MCP client installation:
|
|
@@ -51,24 +70,38 @@ For a local Ennodia checkout, use:
|
|
|
51
70
|
}
|
|
52
71
|
```
|
|
53
72
|
|
|
54
|
-
|
|
73
|
+
The configuration above shows the server command and arguments.
|
|
74
|
+
Adapt its format to the client's documented configuration method.
|
|
75
|
+
Reload the tools or restart the client only when its setup instructions require this step.
|
|
76
|
+
Tell the user which step is needed before trying to call Ennodia.
|
|
77
|
+
|
|
78
|
+
## Get One Useful Result
|
|
79
|
+
|
|
80
|
+
After the client exposes Ennodia's tools, start with one small task:
|
|
81
|
+
|
|
82
|
+
1. Call `ennodia_list_harnesses` with `refresh: true`.
|
|
83
|
+
2. Choose one available worker for a focused, read-only check from the user's current task.
|
|
84
|
+
3. Call `ennodia_run` with `prompt`, `harnessId`, `mode: "single"`, `compare: false`, and the relevant `cwd`.
|
|
85
|
+
4. Poll `ennodia_get_run` with the returned `id` as `runId`.
|
|
86
|
+
5. Stop when the status is `succeeded`, `failed`, or `cancelled`.
|
|
87
|
+
6. Report the useful finding or the specific failure in the user's conversation.
|
|
55
88
|
|
|
56
|
-
|
|
89
|
+
For example, request a read-only check of one function or one documentation claim against its source.
|
|
90
|
+
Include the relevant files or task details in the worker prompt.
|
|
91
|
+
Request evidence the main agent can inspect.
|
|
57
92
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
4. `ennodia_run`
|
|
62
|
-
5. `ennodia_get_run`
|
|
93
|
+
Discovery checks installed commands, not active authentication, model access, or provider quota.
|
|
94
|
+
A successful small run verifies the selected worker's configuration.
|
|
95
|
+
If provider access is missing, identify the affected worker and its normal login or configuration step.
|
|
63
96
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
[
|
|
97
|
+
The first run does not require separate planning, budget estimation, or Compare calls.
|
|
98
|
+
These tools remain available for larger tasks.
|
|
99
|
+
See [MCP Tools](/docs/reference/mcp-tools/) for exact parameters and identifiers (IDs).
|
|
67
100
|
|
|
68
101
|
## Installed Components
|
|
69
102
|
|
|
70
103
|
Ennodia is a local MCP server. It lets the user's main agent request help from
|
|
71
|
-
other installed agent
|
|
104
|
+
other installed agent CLI programs during the same task.
|
|
72
105
|
|
|
73
106
|
The number of agents is not the primary benefit. Ennodia uses current local
|
|
74
107
|
installs, subscriptions, and model choices. It discovers supported CLI programs and
|
|
@@ -96,18 +129,18 @@ Use Ennodia when the user permits more model work to get a better answer than
|
|
|
96
129
|
one agent usually gives.
|
|
97
130
|
|
|
98
131
|
```text
|
|
99
|
-
Use Ennodia to request a review from multiple available agents.
|
|
132
|
+
Use Ennodia MCP to request a review from multiple available agents.
|
|
100
133
|
Compare the answers for this bug fix.
|
|
101
134
|
Name the disagreements and return the highest-risk issue first.
|
|
102
135
|
```
|
|
103
136
|
|
|
104
137
|
```text
|
|
105
|
-
Use Ennodia to plan this migration with Claude Code, OpenCode, and Antigravity.
|
|
138
|
+
Use Ennodia MCP to plan this migration with Claude Code, OpenCode, and Antigravity.
|
|
106
139
|
Compare the plans and tell me which assumptions each model made.
|
|
107
140
|
```
|
|
108
141
|
|
|
109
142
|
```text
|
|
110
|
-
Use Ennodia twice.
|
|
143
|
+
Use Ennodia MCP twice.
|
|
111
144
|
Use source-grounded-audit for the first run, but not for the second run.
|
|
112
145
|
Compare the results before you recommend the final documentation edit.
|
|
113
146
|
```
|
|
@@ -25,8 +25,8 @@ Keep this data exact, even when its text does not use controlled English.
|
|
|
25
25
|
- Define a necessary abbreviation at its first use on each independent page.
|
|
26
26
|
- Preserve exact product names, commands, paths, model IDs, and API fields.
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
Marketing headlines can change with the product positioning.
|
|
29
|
+
Keep supporting copy concrete and consistent with current product behavior.
|
|
30
30
|
|
|
31
31
|
Automated checks can find some defects, but they cannot certify compliance.
|
|
32
32
|
A human reviewer must confirm meaning, grammar, and correct technical use.
|
|
@@ -40,7 +40,6 @@ Use the listed meaning and part of speech.
|
|
|
40
40
|
| --- | --- | --- |
|
|
41
41
|
| Ennodia | technical noun | The software product in this repository. |
|
|
42
42
|
| artificial intelligence (AI) | technical noun | Software that produces or evaluates model output. |
|
|
43
|
-
| AI makes mistakes | approved tagline | The exact Ennodia landing-page headline. Keep this phrase unchanged. |
|
|
44
43
|
| Model Context Protocol (MCP) | technical noun | The protocol that exposes Ennodia tools to a compatible client. |
|
|
45
44
|
| command-line interface (CLI) | technical noun | A text interface that accepts commands. |
|
|
46
45
|
| application programming interface (API) | technical noun | A defined interface that software uses to exchange data. |
|