Skip to content

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 documentA 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.tectumpraxis/listening_mode.yamlname: listening_moderequires:  nodes:    - audio.gateway    - agent.persona_reflection    - effector.speech    - effector.journal_appendbindings:  - from: events.sensation.audio.filtered    to: agent.persona_reflectionevents.sensation.audio.transcriptaudio.gatewayevents.sensation.audio.filteredagent.persona_reflectionone bindingwritten out in the fileevents.workspace.persona_reflection.out.speakeffector.speechevents.workspace.persona_reflection.out.journal_appendeffector.journal_appendjmftsdocumentsthe only durable thing herepraxis/edge_asr_memory.yamla second schema, additiveevents.sensation.handset.turnagent.edge_asr_memorytau --mode rpctaumemory_reflexevents.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

Tutorials

Action × Acquisition

A guided build that teaches the concepts as you go. Start at the quickstart and keep going.

Cookbook

Action × Application

Recipes for one specific job, for someone who already knows the basics and wants the steps without the narration.

Cognition

DevOps Manual

Cognition × Acquisition

How the system is deployed and operated, and why it is shaped that way. Read this before you run it in anger.

Reference

Cognition × Application

API surface, config, schemas, invariants. Built for search and lookup, not for reading start to finish.