Files
mesh-sdk/go
jschoubben 16984aafc6
mesh/merge-gate pass: builds mesh-sdk, sent nowhere; no bus step; every machine composes with the change as it did without (4 of 4 compose)
mesh/repo-check pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (typescript), go/merge-check.sh (go)
mesh/delivery covered after its stop: a later walk that contains it was delivered: plan-1791659640519725407 (novox/mesh-sdk at 19cfe0ef into main, done, …
mesh/delivery-group group feat/asks-answered-on-any-channel delivered: every member is delivered
Refuse a warrant for an ask with no expiry, and one that says no time (the confirmation review of 2026-10-09)
For skipped the expiry check when the warrant carried no time, and an ask with a zero expiry was
answered at any time. Neither can be shown to be in time, so neither is acted on.
2026-10-09 13:58:50 +02:00
..

mesh-sdk for Go

stdio.Serve("", tools) speaks MCP over stdio to the node's tool runtime, as the module the runtime names (novox/hq ADR 0188, ADR 0193). A Tool is a name, a description, an argument schema and a function; calls run concurrently. A tool named <seat>.<verb> is the seat's implementation. stdio.Emit(type, body) publishes an event as the module, stdio.Subscribe(pattern, handler) receives the module's events (taken when the handler returns nil, offered again when it returns an error — the one rule is in the repository README, "Taking an event") and stdio.Ask(key, body) calls a tool, and stdio.State(name) gets, puts, deletes, lists and watches the module's declared state — all through the runtime (novox/hq ADR 0193, 0198, 0201). Standard library only.

Installing

GOPRIVATE=git.novox.be go get git.novox.be/novox/mesh-sdk/go@latest

Releases are tagged go/vX.Y.Z in this repository, the subdirectory form Go's module system expects, at the same version as the TypeScript package.

What it holds, under ADR 0039's test: the stdio loop and the tool type, and cli, the local protocol mesh-cli speaks to the node-engine on its machine (novox/hq ADR 0272): the socket's path and one request and one answer. Nothing else — no bus, no client, nothing of any module's. go build ./example and pipe a tools/list request into it.