Willow's Grove
The operator's seat for the Willow AI fleet — a loopback-only served page on
127.0.0.1:8766, hosting Grove Web Components that read live state from
Postgres, the Nestor store, and the willow-mcp kb_journal seam. No public
HTTP surface. The MCP server (./run_mcp.sh) is a separate process for
remote (claude.ai) tool access.
Home: willow-memory/willows-grove. Ratified by the human trust root,
not the fleet — see docs/INVARIANTS.md §12.
Entry points
| Command | Purpose |
|---|---|
python3 grove_serve.py |
Loopback-only served-page host on 127.0.0.1:8766 |
./run_mcp.sh |
Grove MCP server — stdio mode (Claude Code / Cursor spawns this) |
./run_mcp.sh --serve |
Grove MCP over HTTP+OAuth on :8767 for remote clients behind a tunnel |
scripts/grove-serve {install|on|off|status} |
Toggle the --serve systemd unit + .mcp.json entry together |
See docs/OPS_RUNBOOK.md for boot preconditions,
health-check sweeps, and failure recovery.
Architecture
| File / dir | What |
|---|---|
grove_serve.py |
Loopback-only served-page host on 127.0.0.1:8766 (Starlette + uvicorn; two placeholder routes) |
grove_html.py |
The served page's HTML shell |
grove_db.py |
Postgres reader (bounded connect_timeout + statement_timeout) |
grove_reader.py |
Reader helpers for channels, messages, agents, routing |
grove/ |
Grove Python package (readers, endpoints, MCP serve-mode auth) |
web/components/*.js |
Web Components |
web/boot/*.js |
Page-level boot modules |
u2u/ |
Signed LAN transport (see u2u section above) |
bridge/ |
Matrix bridge |
u2u — signed LAN transport (not encrypted)
The u2u/ package carries signed (Ed25519) human-to-human DMs across the
LAN. Messages are cleartext on the LAN — u2u guarantees who sent this and
that the message is intact, not that only the recipient can read it.
See docs/design/u2u-security-limits.md
for the full statement of what u2u does and does not guarantee. Encryption is planned for Gate 6.
Discipline
Twelve CI-enforced invariants in docs/INVARIANTS.md:
- §1 three-state contract (populated / empty / unreachable — never collapsed)
- §2 supersedes D7 ("absence is a state" no longer covers unreachable)
- §3 doc discipline (citations resolve, CHANGELOG cites PR, sections name witnesses)
- §4 reader/endpoint coverage
- §5 u2u trust order (signature → consent → dispatch, in that sequence — see
docs/design/u2u-security-limits.md) - §6 manifests describe code, not aspirations
- §7 consent flows are real, not automatic
- §8 panels consume live endpoints
- §9 seed reads real canon
- §10 CI proves the invariants
- §11 persona provenance (
Persona:trailer on every code-changing commit) - §12 ratification (
Ratified-by:line on every PR-open and merge)
Every section is enforced by at least one CI witness. The checkers live at
scripts/check_*.py; they run on every push through
.github/workflows/tests.yml.
Getting started as a tester
git clone https://github.com/willow-memory/willows-grove.git
cd willows-grove
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
psql -c "CREATE DATABASE willow_20;" && psql -d willow_20 -f schema.sql
python3 -m pytest -x -q --ignore=tests/e2e --ignore=tests/e2e_ollama --ignore=tests/e2e_willow_mcp
Then python3 grove_serve.py and open http://127.0.0.1:8766 in a browser
running on the same box.
The audit record
docs/audits/loki-v0.9-audit.md — Loki's v0.9 audit in his voice.
38 ranked findings from a seven-lens Loki-swarm, all resolved in the
build or refuted with reason.
docs/audits/loki-swarm-measurement.md — persona-discipline scored on
seven dimensions. The measurement research: register hold 0/41 florid,
deny-list hold 0/41 build proposals, three-column completeness 41/41,
softening 1/41, authority-as-correctness 0/41. Reproducibility layer at
docs/audits/loki-swarm-metadata.md.
What's known-not-yet-done
docs/ideas.md — the idea pile: every open item this repo can land, as
one numbered list whose numbers are permanent join keys (Idea-Id commit
trailers name them; reconciler run --repo . --doc docs/ideas.md reads
them). It carries forward docs/design/pr14-carryovers.md — the v0.10 punch
list, what v0.9 punted and why — and docs/KNOWN_GAPS.md.
Metadata
Release files for willows-grove 0.26.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| willows_grove-0.26.0.tar.gz | 2.5 MB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| willows_grove-0.26.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 2.9 MB
Release files / willows_grove-0.26.0.tar.gz
| Download URL | willows_grove-0.26.0.tar.gz |
|---|---|
| Size | 2.5 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e41be24adc18704733cab721b687a61c11c05706ca9a4dc6c2937440e1b8eb0b
|
|
BLAKE2b-256 checksum How to use checksums |
3cd329a922cfe30cc88a8b8caf3a6612204b938b28ba4418f1a8b0a33c294e21
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.
Transparency logRelease files / willows_grove-0.26.0-py3-none-any.whl
| Download URL | willows_grove-0.26.0-py3-none-any.whl |
|---|---|
| Size | 426.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
06a4dcdb758c3670a8d89591d351eb9d5a291cff41a4fc84060537c0b6e8c943
|
|
BLAKE2b-256 checksum How to use checksums |
8ed386ab4543186d9487e053f0ae0d97f9e125304fd229fe4dfda1d9cd82eb80
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.
Transparency logSecurity for willows-grove 0.26.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for willows_grove-0.26.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.