All docs
Docs · Channels
Protocols
every channel, one envelope
How each wire protocol becomes (or consumes) the chassis's JSON envelope. The conceptual story is ingress; these pages are the per-channel facts.
Whatever arrives, the head that received it stamps _txc.src and its
own namespace (@web.req.*, @lmtp.*, @cron.*, @tcp.*) onto one
envelope, and the same rules engine takes it from there. Outbound is
symmetric: rules dispatch out over HTTP, MCP, or SMTP.
| Channel | Direction | Page |
|---|---|---|
| HTTP | in (+ responses, streaming) | web.md |
| Email — receiving | in | lmtp.md |
| Email — sending | out | sendmail.md |
| Cron | in (time as a channel) | cron.md |
| TCP | in (line-delimited JSON) | tcp.md |
| MCP (agent tools) | out (in: see page) | mcp.md |
| DNS | authoritative answers for delegated zones | dns.md |
Before any rule fires, the router decides which tenant and stack an event belongs to — hostname bindings in the DB (live, no restart) or a static YAML file: routing.md.
Heads are enabled per chassis with --personalities (default cron,tcp,web,admin; lmtp and dns are opt-in) — see the runtime reference.