jschoubben 81972a4995 A module answers the word the mesh asks: prepare
The runtime gains `prepare`, which brings this module's state to the shape this version needs and
exits (novox/hq ADR 0135). The entrypoints come from MESH_PREPARE, which a module's own image names
beside the entrypoints it already lists there — the module knows which of its files prepares its
state and nothing else could. No broker is connected: preparation runs before the version that would
use it. An empty list fails rather than passing quietly, because the mesh asks this only of a module
whose manifest says it prepares something, and exiting 0 would let that version serve against a
state nobody shaped.
2026-09-28 12:45:00 +02:00

mesh-tools

The Novox Mesh tool runtime — the per-node process that makes a module's tools actually serve.

A module ships its tools (built on @novox/mesh-sdk); this runtime is what loads them and puts them on the mesh. It:

  1. connects the mesh broker (novox/hq ADR 0001) — a concrete AMQP implementation of the sdk's Broker contract;
  2. imports the assigned modules' compiled tool entrypoints, each of which registers its tools as it loads;
  3. serves them through the sdk's serveTools harness, answering tools.invoke over the broker.

Everything hard — dispatch, collection, duplicate-name safety — is the sdk's. This is the thin wrapper that binds the broker and loads the modules. Keeping the AMQP client here, out of the sdk, is deliberate: a broker-client change never rebuilds a module (ADR 0039).

Running it

MESH_BROKER_URL     amqp://…              the mesh broker
MESH_TOOL_MODULES   /a/tools/index.js,…   the assigned modules' compiled tool entrypoints

node dist/main.js, or the container (Dockerfile). On a node the host resolves both variables and starts it like any other supervised workload.

Verified

npm test stands up LavinMQ (the mesh's broker) and proves the whole path over real AMQP: the runtime serves a registered tool, a separate connection invokes it by name and gets the result, and an unknown tool is refused over the wire.

S
Description
Novox Mesh — the tool runtime. Binds the mesh broker (AMQP) and serves the assigned modules' tools through the sdk harness.
Readme
254 KiB
Languages
TypeScript 78%
JavaScript 17.8%
Dockerfile 4.2%