Repository navigation
v0.2.0 — the distributed release
The distributed release. ettle stopped being a single-host demo: a team can join a room with one command over a private git repo, see who's present, and — new here — take part without an API key of their own.
⚠️ Still an early design-stage proof-of-concept. The coordination engine runs; its accuracy is not validated.ettle evalis an inspectable smoke test on a tiny synthetic corpus, not a precision/recall measurement. Treat this as a thesis with a runnable skeleton.
Install
go install github.com/justinstimatze/ettle/cmd/ettle@v0.2.0Or clone if you want the bundled testdata/ the quickstart uses.
Highlights
ettle room— one-command join for distributed mode.room init <git-url>/room join <git-url>/room list/room status. A private git repo is the bus (via leat); the git URL is the invite. Each agent appends only its own lane, so pushes never conflict, a line whose author ≠ its lane is dropped, andgit logis the audit trail. Day-to-day use is juststandup --room <name>— no env vars, no paths.ettle room status— the presence view. Who's in the room and what each person is working on, read straight off the bus with no detection and no model call.- Client-side distillation — one API key per room, not one per person.
ettle_emitnow accepts already-typedatoms, and a newettle_distillMCP prompt hands your own agent the distillation rules. Anyone driving ettle from Claude Code or Cursor contributes with no key and no server-side model call. This strengthens the privacy boundary: raw notes never leave the person's machine at all, instead of crossing to the server and being dropped there. Client atoms are still sealed server-side (caps, secret scanner, privacy override) and attribution is forced by construction. - Renamed the core object
knot→tangle. A knot can be tied in a single thread; a tangle is several threads interfering — which is what the object actually is. - Verdict labels record the tangle's recurrence, so human
real/not_real/handledanswers are learnable when they accrue. The calibration loop itself remains deliberately unbuilt. - Prior art §10 — a close read of Dust's "pods": the same single-player→multiplayer diagnosis, answered with pooled shared state rather than bounded per-person state.
Full detail in CHANGELOG.md.