Conversation-native messaging.
The space between — where messages are in transit, where state is uncertain, where the interesting things happen. Liminal sits between services the way conversation sits between people.
What is Liminal
The messaging system that lets everything in the stack talk to each other. When agents, workflows, and services need to communicate, this is how they do it — with messages that survive crashes and never get lost.
What Liminal does
Pub/sub, event streams, and real-time service communication built on beamr. Not a message queue bolted onto a runtime — a messaging system that speaks BEAM natively. Every channel is a process. Every subscription is a monitor. Backpressure is supervision, not configuration.
Why it needs to exist
Agent communication
Autonomous agents need to talk to each other, to workflows, and to humans — all at once, all durably. Liminal provides the conversation layer that makes multi-agent coordination possible.
BEAM-native channels
Every message channel is a lightweight BEAM process on beamr. Channels crash-isolate from each other. A misbehaving subscriber can't take down the bus. The runtime handles the hard parts.
Event sourcing built in
Every message is an event. Replay a channel from any point. Build projections, audit trails, and debug sessions from the same stream. No separate event store required.
Real-time by default
BEAM distribution and a TypeScript SDK out of the box. Services on the same node communicate via process messages. Services across nodes communicate via distribution. Browser and Node clients connect via the SDK.
Where it fits
Liminal is the connective tissue of the stack. Aion workflows emit events through Liminal. Conversation durability is backed by Haematite. It is not a product you deploy separately — it is the messaging layer that lets the other layers talk to each other.
AGPL-3.0 licensed. View on GitHub →