|
1 | | -# Grainulator |
| 1 | +<p align="center"> |
| 2 | + <a href="https://grainulator.app"><img src="site/glitchy.png" alt="Glitchy — the Grainulator mascot" width="200"></a> |
| 3 | +</p> |
2 | 4 |
|
3 | | -Evidence and verification for the model you already use. |
| 5 | +<h1 align="center">Grainulator</h1> |
4 | 6 |
|
5 | | -Grainulator gives model-assisted work a local evidence ledger, checks for contradictions and weak support, and turns the remaining gaps into concrete next actions. Use it for research, engineering, or a managed command loop with a verifier that measures your task. |
| 7 | +<p align="center"><strong>Evidence and verification for the model you already use.</strong></p> |
6 | 8 |
|
7 | | -**Grainulator 2.0.0** is distributed through the [v2.0.0 GitHub release](https://github.com/grainulation/grainulator/releases/tag/v2.0.0). This GitHub release is not published to npm. Use the tagged source and [dogfood guide](docs/DOGFOOD.md) to run it locally; existing repository history and stars are preserved. |
| 9 | +<p align="center"> |
| 10 | + Keep the evidence. Challenge the answer. Know what to do next.<br> |
| 11 | + A shared workflow for research, engineering, and model-assisted work. |
| 12 | +</p> |
8 | 13 |
|
9 | | -## Start locally |
| 14 | +<p align="center"> |
| 15 | + <a href="https://grainulator.app/playground/"><img src="https://img.shields.io/badge/explore_the_playground-grainulator.app-98f3ef?style=for-the-badge" alt="Explore the Grainulator playground"></a> |
| 16 | +</p> |
10 | 17 |
|
11 | | -Requires Node.js 24 or later; Node 25 is the local default: |
| 18 | +<p align="center"> |
| 19 | + <a href="https://github.com/grainulation/grainulator/releases"><img src="https://img.shields.io/github/v/release/grainulation/grainulator?label=release" alt="Latest GitHub release"></a> |
| 20 | + <a href="https://github.com/grainulation/grainulator/actions/workflows/ci.yml"><img src="https://github.com/grainulation/grainulator/actions/workflows/ci.yml/badge.svg?branch=main" alt="CI on main"></a> |
| 21 | + <a href="docs/INSTALLATION.md"><img src="https://img.shields.io/badge/node-%E2%89%A524-339933?logo=nodedotjs&logoColor=white" alt="Node.js 24 or later"></a> |
| 22 | + <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-green" alt="MIT license"></a> |
| 23 | + <a href="https://deepwiki.com/grainulation/grainulator"><img src="https://deepwiki.com/badge.svg" alt="Docs on DeepWiki"></a> |
| 24 | +</p> |
| 25 | + |
| 26 | +<p align="center"> |
| 27 | + <a href="#quick-start">Quick start</a> · |
| 28 | + <a href="docs/INSTALLATION.md">Installation</a> · |
| 29 | + <a href="docs/TOOLS.md">Tools</a> · |
| 30 | + <a href="docs/PLUGIN-TESTING.md">Agent setup</a> · |
| 31 | + <a href="CHANGELOG.md">Changelog</a> |
| 32 | +</p> |
| 33 | + |
| 34 | +--- |
| 35 | + |
| 36 | +## What it adds |
| 37 | + |
| 38 | +Good models still need a way to keep track of evidence, revisit assumptions, and verify their work. Grainulator gives them that process, with a local ledger that stays with the task as it moves between models and sessions. |
| 39 | + |
| 40 | +| Capability | What it gives you | |
| 41 | +| --- | --- | |
| 42 | +| **Evidence that stays with the work** | Typed claims, sources, evidence tiers, and provenance that survive edits and exports. | |
| 43 | +| **A check on the answer** | Conflict detection, weak-support signals, and explicit gaps to investigate. | |
| 44 | +| **Clear next actions** | Two lists: what the agent can continue automatically, and what needs your input. | |
| 45 | +| **Sessions you can carry forward** | Configurable research, stop/resume, reusable context, and credential-free exports. | |
| 46 | +| **Verification for your task** | A managed command loop that can use a verifier you provide. | |
| 47 | + |
| 48 | +**One package, one MCP server.** Use the CLI, connect an MCP-compatible agent, or load the bundled Claude Code or Codex plugin. The consolidated components are included; separate ecosystem installations are not required. |
| 49 | + |
| 50 | +## Quick start |
| 51 | + |
| 52 | +Requires **Node.js 24+**. Node 25 is the development default. |
12 | 53 |
|
13 | 54 | ```sh |
14 | 55 | git clone --branch v2.0.0 https://github.com/grainulation/grainulator.git |
15 | 56 | cd grainulator |
16 | 57 | npm ci --ignore-scripts |
17 | 58 | node bin/grainulator.js doctor |
18 | | -node bin/grainulator.js init --dir ./sprints/example \ |
19 | | - --question 'Can this change meet our requirements?' \ |
20 | | - --audience engineers --constraints 'Preserve existing user data' \ |
21 | | - --done 'Implemented and verified, with remaining limits documented' |
22 | | -node bin/grainulator.js connect --dir ./sprints/example |
| 59 | +node bin/grainulator.js preview |
23 | 60 | ``` |
24 | 61 |
|
25 | | -`connect` prints configuration for one **grainulator** MCP server. It changes no host settings. Load that configuration in your host, or keep using the CLI. The portable [Grainulator workflow](skills/grainulator/SKILL.md) can be read by any agent; Claude Code also supports the bundled skills and hooks. |
| 62 | +Open **[localhost:4517/playground/](http://127.0.0.1:4517/playground/)** to choose your model, configure the workflow, and run research with your provider key. |
26 | 63 |
|
27 | | -## Call tools |
| 64 | +Want to look around first? The **[public playground](https://grainulator.app/playground/)** lets you explore the controls and export a setup. Model execution happens in your local installation. |
28 | 65 |
|
29 | | -The public server is `grainulator`. Tool names describe the operation: |
| 66 | +> **Distribution:** v2.0.0 is a [GitHub release](https://github.com/grainulation/grainulator/releases/tag/v2.0.0), not an npm registry release. For a separate local installation, follow the [archive installation guide](docs/INSTALLATION.md). |
30 | 67 |
|
31 | | -```js |
32 | | -// MCP server: grainulator, tool: add_claim |
33 | | -{ |
34 | | - "dir": ".", |
35 | | - "id": "r001", |
36 | | - "type": "constraint", |
37 | | - "topic": "delivery", |
38 | | - "content": "Do not tag the release before required CI checks pass.", |
39 | | - "evidence": "stated" |
40 | | -} |
| 68 | +### Connect your agent |
| 69 | + |
| 70 | +From the project you want Grainulator to access: |
| 71 | + |
| 72 | +```sh |
| 73 | +node /path/to/grainulator/bin/grainulator.js connect --dir "$PWD" |
41 | 74 | ``` |
42 | 75 |
|
43 | | -In host interfaces that combine server and tool names, this appears as `grainulator.add_claim` or `mcp__grainulator__add_claim`. |
| 76 | +Register the printed MCP configuration in your host, then restart its connection. The command prints configuration; it does not change your host settings. |
44 | 77 |
|
45 | | -| Capability | Tools | |
46 | | -| --- | --- | |
47 | | -| Evidence | `init`, `add_claim`, `compile`, `search`, `status`, `resolve` | |
48 | | -| Memory | `memory_search`, `memory_store`, `memory_list`, `memory_pull` | |
49 | | -| Exports | `exports_convert`, `exports_formats`, `exports_preview` | |
| 78 | +For bundled skills, agents, and hooks, use the **[native plugin setup guide](docs/PLUGIN-TESTING.md)**. Native Codex requires an absolute `GRAINULATOR_WORKSPACE` in its process environment. CLI and direct MCP access remain available to other hosts. |
50 | 79 |
|
51 | | -The CLI equivalent is `grainulator add --dir <sprint> ...`. See [host setup](docs/HOSTS.md) and the [adapter contract](docs/ADAPTERS.md). External connectors are optional; local evidence operations do not require them. |
| 80 | +## Put it to work |
52 | 81 |
|
53 | | -## How work progresses |
| 82 | +With Grainulator connected, give your agent the outcome you need: |
54 | 83 |
|
55 | | -1. Investigate the question that matters to the requested outcome. Record supported findings with their sources and evidence tiers. |
56 | | -2. Compile the ledger to surface material conflicts, weak evidence and missing perspectives. Resolve what can be resolved, and preserve honest limitations. |
57 | | -3. Implement and verify the requested artifact. Run another investigation only when it can change a decision or close a relevant gap. |
| 84 | +> Use Grainulator to investigate whether we should migrate this service. Record the evidence, challenge the assumptions, implement the agreed changes, and verify them. Keep the remaining next steps split into Auto and Manual. |
58 | 85 |
|
59 | | -There are no fixed research-pass or claim-count quotas. A compiler result is evidence about the ledger, not proof that every claim is true or that the whole task is complete. Independent tests establish only what they actually check. |
| 86 | +The work follows a simple cycle: |
60 | 87 |
|
61 | | -Next actions appear as two concise lists: |
| 88 | +1. **Record** findings with their sources and evidence tiers. |
| 89 | +2. **Check** for conflicts, weak support, and missing perspectives. |
| 90 | +3. **Act** on the gaps that matter, then verify the requested result. |
| 91 | +4. **Continue** from the saved ledger or export the session to another workflow. |
62 | 92 |
|
63 | | -**Auto** |
| 93 | +There are no fixed claim-count or research-pass quotas. **Auto** lists work the agent can continue within your authorization. **Manual** lists decisions, access, or actions that need you. When you ask only for next steps, those two lists are the entire response. |
64 | 94 |
|
65 | | -- Work the agent can continue under existing authorization. |
| 95 | +<details> |
| 96 | +<summary><strong>Example: record a claim from the terminal</strong></summary> |
66 | 97 |
|
67 | | -**Manual** |
| 98 | +```sh |
| 99 | +node bin/grainulator.js init --dir ./sprints/migration \ |
| 100 | + --question 'Should we migrate this service?' \ |
| 101 | + --audience engineers --constraints 'Preserve existing user data' \ |
| 102 | + --done 'A verified plan with remaining risks documented' |
68 | 103 |
|
69 | | -- Decisions, access or actions that require you; `None.` when there are none. |
| 104 | +node bin/grainulator.js add --dir ./sprints/migration \ |
| 105 | + --id r001 --type constraint --topic migration \ |
| 106 | + --content 'Existing user data must remain readable.' --evidence stated |
70 | 107 |
|
71 | | -The agent continues authorized Auto work. Compiler suggestions never grant permission or override the task’s scope. When you ask for next steps only, those two lists are the entire response. |
| 108 | +node bin/grainulator.js compile --dir ./sprints/migration |
| 109 | +``` |
72 | 110 |
|
73 | | -## Playground and managed sessions |
| 111 | +The equivalent MCP tool is **`add_claim`** on the **`grainulator`** server. See the [tool reference](docs/TOOLS.md) for evidence, memory, export, analytics, and orchestration operations. |
74 | 112 |
|
75 | | -Run `npm run dev` and open the printed local URL. The research playground supports model and provider configuration, evidence controls, and portable session export/resume. See [research sessions](docs/RESEARCH.md) for configuration and continuation. |
| 113 | +</details> |
76 | 114 |
|
77 | | -`node bin/grainulator.js demo` exercises a deterministic adapter and verifier offline. It demonstrates the execution protocol; it is not evidence that a model produces better answers. See [evaluation results](docs/EVALUATION.md) for measured model behavior and limits. |
| 115 | +## Explore the docs |
78 | 116 |
|
79 | | -## Repository |
| 117 | +| Guide | Start here for… | |
| 118 | +| --- | --- | |
| 119 | +| [Installation](docs/INSTALLATION.md) | Tagged source, isolated archives, and verified build identity. | |
| 120 | +| [Agent setup](docs/PLUGIN-TESTING.md) | Claude Code, Codex, and actual plugin acceptance checks. | |
| 121 | +| [Research sessions](docs/RESEARCH.md) | Models, feature controls, credentials, export, and resume. | |
| 122 | +| [Tools](docs/TOOLS.md) | The canonical CLI and MCP interface. | |
| 123 | +| [Execution adapters](docs/ADAPTERS.md) | Attaching a model command and a task-specific verifier. | |
| 124 | +| [Architecture](docs/STRUCTURE.md) | The workspace layout and internal modules. | |
| 125 | +| [Evaluation](docs/EVALUATION.md) | What has been measured and what remains unproven. | |
| 126 | +| [Contributing](CONTRIBUTING.md) | Development setup, tests, and changes to the project. | |
80 | 127 |
|
81 | | -```text |
82 | | -bin/ Public CLI |
83 | | -lib/ Research, providers and execution loop |
84 | | -packages/ |
85 | | - evidence/ Claims and compilation |
86 | | - memory/ Source context and retrieval |
87 | | - exports/ Documents and presentations |
88 | | - analytics/ Sprint metrics and reports |
89 | | - orchestration/ Sprint dependencies |
90 | | - runtime/ Managed execution and verification |
91 | | - shared/ Common utilities |
92 | | - legacy-cli/ Compatibility commands |
93 | | -skills/ Portable workflows |
94 | | -agents/ Agent instructions |
95 | | -hooks/ Host evidence reminders and write guard |
96 | | -site/ Product site and playground |
97 | | -scripts/ Previews and acceptance checks |
98 | | -test/ Plugin and integration regressions |
99 | | -evals/ Model evaluations |
100 | | -``` |
| 128 | +## Verification and limits |
101 | 129 |
|
102 | | -The permission dashboard has been removed. Native hosts own permissions and remote access. Grainulation’s organization site lives in its separate checkout. Retained internal package identifiers and accepted legacy tool aliases support existing integrations; they are not separate products. [Source provenance](docs/source-imports.json) records the imports. |
| 130 | +CI checks Node 24 and 25, isolated package installation, plugin contracts, Rust runtime conformance, lint, and the static playground in a browser. Native host and live-provider acceptance have separate [verification guides](docs/READINESS.md). |
103 | 131 |
|
104 | | -The single Grainulator package includes the consolidated components; separate ecosystem installations are not required. |
| 132 | +The compiler checks the structure and support recorded in the ledger; it does not establish that a source is true. Evaluations do not establish a general accuracy or efficiency gain, and per-pass limits are not a whole-session spending cap. Keep those distinctions when interpreting results. |
105 | 133 |
|
106 | | -## Verify from a source checkout |
| 134 | +<details> |
| 135 | +<summary><strong>Run the development checks</strong></summary> |
107 | 136 |
|
108 | 137 | ```sh |
109 | 138 | npm test |
110 | 139 | npm run test:install |
111 | 140 | npm run lint |
112 | 141 | ``` |
113 | 142 |
|
114 | | -See the [dogfood guide](docs/DOGFOOD.md) for browser and runtime checks, and [readiness](docs/READINESS.md) for release acceptance. The GitHub release and locally packed archives do not publish an npm package. |
| 143 | +Browser and runtime prerequisites are in [CONTRIBUTING.md](CONTRIBUTING.md). The offline `node bin/grainulator.js demo` exercises the adapter/verifier protocol without a provider account. |
115 | 144 |
|
116 | | -## License |
| 145 | +</details> |
117 | 146 |
|
118 | | -MIT. See [LICENSE](LICENSE). |
| 147 | +--- |
119 | 148 |
|
120 | | -Local dogfood uses Node 25 (`.nvmrc` / `.node-version`); Node 24 is the minimum supported runtime. |
| 149 | +<p align="center"> |
| 150 | + Built by <a href="https://grainulation.com">Grainulation</a> · |
| 151 | + <a href="LICENSE">MIT licensed</a> · |
| 152 | + <a href="https://github.com/grainulation/grainulator/issues">Issues & ideas</a> |
| 153 | +</p> |
0 commit comments