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 aonejudgemember's frames as its judge side. 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.5.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.5.0-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| onemessagebus_cli-0.5.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.5.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl | Python 3 | none | Linux glibc 2.17+ ARM64 | Details |
| onemessagebus_cli-0.5.0-py3-none-macosx_11_0_arm64.whl | Python 3 | none | macOS 11.0+ ARM64 | Details |
| onemessagebus_cli-0.5.0-py3-none-macosx_10_12_x86_64.whl | Python 3 | none | macOS 10.12+ x86-64 | Details |
Total release size: 20.7 MB
Release files / onemessagebus_cli-0.5.0-py3-none-win_amd64.whl
| Download URL | onemessagebus_cli-0.5.0-py3-none-win_amd64.whl |
|---|---|
| Size | 4.2 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
e9344e12ff42e9e78e55fd7180798208332592901143e9bfdec00dbef2276a99
|
|
BLAKE2b-256 checksum How to use checksums |
1aaf5b24051ee00072ebaccc610093eaa5a9bff797049ca0c352eeb6543b34ad
|
| 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.5.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | onemessagebus_cli-0.5.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 4.4 MB |
| Tags | Linux glibc 2.17+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
424400a2975fe702a8f88c049799b2c86c0e3807ee48fe686bb4216cee848830
|
|
BLAKE2b-256 checksum How to use checksums |
fb6f6f82e0060d11ee16dd29465ce95eaf326958b90a96501069cd88c2c8c2b7
|
| 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.5.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | onemessagebus_cli-0.5.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 |
77c629b0eb4122c92fcd31fc3ded6c7119451e327c7cee1678806c5f85da2751
|
|
BLAKE2b-256 checksum How to use checksums |
86a0868a6de1b3f51f5a4a2f93be516cc6186a66962afefbcbab161392073807
|
| 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.5.0-py3-none-macosx_11_0_arm64.whl
| Download URL | onemessagebus_cli-0.5.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 |
0da49bb7fd2594a866a1ddc567d71c775270a73f4732f123f08e3e43603eac2a
|
|
BLAKE2b-256 checksum How to use checksums |
18f7fb49f7f0765fe3ac6b9b2386880b4bd002def664825c7da44636aa9b9656
|
| 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.5.0-py3-none-macosx_10_12_x86_64.whl
| Download URL | onemessagebus_cli-0.5.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 |
3347dc679e1412be40f1b76fd83cbd13be1b249b86d1d84dc479cd36679213bb
|
|
BLAKE2b-256 checksum How to use checksums |
89bd98499438b215764b931cd19b6aa0c56e8c57468456dc9b1fe108d8137dea
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|