onemessagebus
A typed NDJSON message bus for agent communication — and for anything else that speaks in events. One envelope, one filter grammar, payload bounds and redaction, a schema registry with version read-sets, and an emitter and reader over streams, generic over the vocabulary a consumer declares.
Three artifacts:
onemessagebus— the core library. It knows the shape of an envelope and none of the words: which sources exist, which label keys are reserved and which top-level dimensions an envelope carries are aVocabulary's to declare.Openreserves nothing; a vocabulary of your own is proven through the same conformance table the agent one is.onemessagebus-agent— the agent profile: the sourcesagentgraph,vcs,pipeline; thephasedimension; the reserved labelsrun_id,round,node,step,member,persona; and the schema families the stack registers (agent.event-envelopeat[2, 1],agent.reply-envelopeat[3, 2]). Its types serialize to the bytesoneagentgraph,onevcsandonepipelinewrite today, which the recorded streams undercrates/onemessagebus-agent/tests/recorded/prove byte for byte.onemessagebus, the binary —schema list|check|gen|registerover the registry,schemaswithschemas clear|fetchover the cache of schema bundles a configuration links by URL,events merge|emitover streams with--profile agent(the default) or--profile open,deliverandinbox carriedover the inbox — a typed channel into a running process whose sender learns what the receiver did with each message — andsend,next,reply,subscribeandstatusover durable queues kept on a transport a configuration names, withtransportslisting the kinds a transport can be,askraising a question and waiting for the one reply that echoes its correlation,validatejudging a record by a queue's validators before anything is sent, andserveanswering a a configured member protocol's frames. The local transport keeps the planner channel's files byte-compatible withonepipeline, and a distributed one is a plugin rather than a consumer change.
Install the command line
pip install onemessagebus-cli # PyPI wheel, no toolchain needed
npm install -g onemessagebus-cli # npm launcher, no toolchain needed
cargo install --git https://github.com/nickderobertis/onemessagebus onemessagebus-cli --locked
$ echo '{"note":"hello"}' | onemessagebus events emit run.ndjson --kind note-left --stream s-1 --source vcs --label run_id=R
{"v":1,"ts":"2026-09-13T06:16:27.838Z","stream":"s-1","seq":1,"source":"vcs","kind":"note-left","labels":{"run_id":"R"},"payload":{"note":"hello"},"artifacts":[]}
$ onemessagebus events merge run.ndjson other.ndjson --filter '{"include":[{"source":"vcs"}]}' --format text
$ onemessagebus schema check agent.event-envelope@2 --file envelope.json
docs/cli.md is the whole command line; docs/wire.md
is the wire; docs/contract.md is the approved contract the
consumers restate from.
Use the library
use onemessagebus_agent::{Emitter, EventFilter, Labels, Source};
use serde_json::Map;
let emitter = Emitter::new("run-1", Source::Vcs, Box::new(std::io::stdout()))
.with_labels(Labels { run_id: Some("R".into()), ..Labels::default() })
.with_filter(EventFilter::parse(r#"{"exclude":[{"kind":"heartbeat"}]}"#)?);
let envelope = emitter.emit("push", Map::new());
assert_eq!(envelope.seq, 1);
Every wire value is a Rust type with serde and schemars derivations, and
the public API is stated in docs/contract.md.
Use the SDKs
pip install onemessagebus # Python: import onemessagebus
npm install @onemessagebus/sdk # TypeScript
Both are typed clients over the binary — one method per verb, message types
declared as a Pydantic model or with Zod's defineMessage, subscriptions over a
resident core — so a message defined in Python is validated by the Rust core and
read typed in TypeScript. docs/sdk.md is the whole story.
Develop
just bootstrap # from a clean clone
just check # the deterministic gate: format, lint, tests incl. the binary journeys, docs, coverage
just gate # check plus the diff-scoped LLM-judge tier; the bar before a push
AGENTS.md is the instruction layer; just --list is the command surface.
Metadata
Release files for onemessagebus-cli 0.7.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| onemessagebus_cli-0.7.0-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| onemessagebus_cli-0.7.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | Python 3 | none | Linux glibc 2.17+ x86-64 | Details |
| onemessagebus_cli-0.7.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl | Python 3 | none | Linux glibc 2.17+ ARM64 | Details |
| onemessagebus_cli-0.7.0-py3-none-macosx_11_0_arm64.whl | Python 3 | none | macOS 11.0+ ARM64 | Details |
| onemessagebus_cli-0.7.0-py3-none-macosx_10_12_x86_64.whl | Python 3 | none | macOS 10.12+ x86-64 | Details |
Total release size: 20.5 MB
Release files / onemessagebus_cli-0.7.0-py3-none-win_amd64.whl
| Download URL | onemessagebus_cli-0.7.0-py3-none-win_amd64.whl |
|---|---|
| Size | 4.1 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
bc3e18dc4b9b1b552a5fcdbf3afe76cc801d3340e389c7a8a2cbfa764f3447da
|
|
BLAKE2b-256 checksum How to use checksums |
0473a7e18ea40d3172b461302ff279bb82fe8947417eb8a0c9886b3d33749ae9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / onemessagebus_cli-0.7.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | onemessagebus_cli-0.7.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 4.3 MB |
| Tags | Linux glibc 2.17+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
cf34a7c6c6ae0decb97ce342b17b3c5c58e054a74cdc80c02b5cbe1a0e5c0fcd
|
|
BLAKE2b-256 checksum How to use checksums |
1d7ae49f9bc1403bbc315c530849c9d0b75d58ac0f143c6ec8e4c9ef4ac71438
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / onemessagebus_cli-0.7.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | onemessagebus_cli-0.7.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 4.0 MB |
| Tags | Linux glibc 2.17+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
052c48d1af5471fa0a4014213106fd7d0f8529551e4b5212703e366ed9679a6d
|
|
BLAKE2b-256 checksum How to use checksums |
57afaddf6a40986123fa7072437bb745b5c601625833b628e1f50033ce6c1570
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / onemessagebus_cli-0.7.0-py3-none-macosx_11_0_arm64.whl
| Download URL | onemessagebus_cli-0.7.0-py3-none-macosx_11_0_arm64.whl |
|---|---|
| Size | 3.9 MB |
| Tags | Python 3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
d5cfeaf8834b2faec324fd4faa191eb5e7266f422ef0d74a11b75ba0918e62ee
|
|
BLAKE2b-256 checksum How to use checksums |
09e2b0914f26dd139ec9eb0a56db958184243b5447212688bf9a501e13fb5ffa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / onemessagebus_cli-0.7.0-py3-none-macosx_10_12_x86_64.whl
| Download URL | onemessagebus_cli-0.7.0-py3-none-macosx_10_12_x86_64.whl |
|---|---|
| Size | 4.2 MB |
| Tags | Python 3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
2815930a16fcc3576a8b8078dde2fc9cfcca19a67eb8599f6c4af44df1a2148d
|
|
BLAKE2b-256 checksum How to use checksums |
3d9aa449d2ddc3920b782a0dc0dc4446db8775a9ff0c630276c28d97799064fb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|