Tectum
Tectum is a schema-driven event substrate. Nodes attached to a substrate exchange immutable events over NATS subjects, and the orchestration between them lives in declarative schema documents rather than in Python wiring.
The wiring is a document A Praxis schema document sits at the top left: a page headed praxis slash listening underscore mode dot yaml, listing the four nodes it requires and one of its bindings written out in full — from events dot sensation dot audio dot filtered, to agent dot persona underscore reflection. To its right and below, the substrate is four horizontal subject rails at descending heights with square Tectum nodes hung off them. audio dot gateway takes an arrow down from the transcript rail and sends one back up into the filtered rail. agent dot persona underscore reflection hangs off the filtered rail on the one red connector in the figure, squared off where it taps the rail: that connector is the binding the document declares. The agent publishes into two command rails, one carrying out dot speak down to effector dot speech and one carrying out dot journal underscore append down to effector dot journal underscore append, which writes into a hatched JMFTS documents slab. At the bottom left a second schema, praxis slash edge underscore asr underscore memory dot yaml, adds a disjoint pair of handset rails: agent dot edge underscore asr underscore memory subscribes the handset turn rail, holds a Tau pill labelled tau dash dash mode rpc inside it, deposits what its memory reflex keeps into the same documents slab, and publishes back out onto a device-scoped speak rail. tectum praxis/listening_mode.yaml name: listening_mode requires: nodes: - audio.gateway - agent.persona_reflection - effector.speech - effector.journal_append bindings: - from: events.sensation.audio.filtered to: agent.persona_reflection events.sensation.audio.transcript audio.gateway events.sensation.audio.filtered agent.persona_reflection one binding written out in the file events.workspace.persona_reflection.out.speak effector.speech events.workspace.persona_reflection.out.journal_append effector.journal_append jmfts documents the only durable thing here praxis/edge_asr_memory.yaml a second schema, additive events.sensation.handset.turn agent.edge_asr_memory tau --mode rpc tau memory_reflex events.workspace.edge_asr.out.speak.handset A Praxis schema names the nodes it requires and the subjects that reach them; applying it brings those nodes up, ref-counted, and installs the bindings. Every arrowhead that lands on a node here is a binding some schema declared — the red one is the pair of lines written out in the file at the top left. An arrowhead on the rail means the opposite, that the node published, because a node never subscribes to the bus itself. A second schema hangs the handset rails off the same substrate without touching the first, and the mind inside that node is a persistent tau process rather than more Python. Events carry an expiry hint and sessions compact; the documents slab is what is left afterwards.
Where to start
The four categories below are a crosswalk, not a sequence. Pick the
cell you are actually in.
Acquisition
Application
Action
Action × Acquisition
A guided build that teaches the concepts as you go. Start at the quickstart and keep going.
Action × Application
Recipes for one specific job, for someone who already knows the basics and wants the steps without the narration.
Cognition
Cognition × Acquisition
How the system is deployed and operated, and why it is shaped that way. Read this before you run it in anger.
Cognition × Application
API surface, config, schemas, invariants. Built for search and lookup, not for reading start to finish.