SynAP — the Synaptic Agent Protocol
A semantic control plane for inter-agent communication — toward a narrow waist for the Internet of Agents.
Paper (v1.0, July 2026): doi.org/10.5281/zenodo.21176725 · source in paper/
SynAP defines an eleven-performative mandatory semantic floor with negotiated dialects above it (typed → embeddings → same-model latent exchange, degrading gracefully to natural language), and five wire-level control-plane mechanisms: comprehension-conditioned ACK with dialect-downgrade retransmission, delegation-depth TTL with cycle detection, context-window flow control with multi-hop budget decomposition and QoS classes, a VERIFY performative returning graded grounded verdicts, and a HANDOVER performative with admission control and dialect-encoded state transfer.
Reference implementation
pip install synap-protocol # core: wire models + control plane (pydantic only)
pip install "synap-protocol[net]" # + signed HTTP transport & DID identity
python -m synap_protocol.demo
Core — the wire models (datagram, eleven-performative floor, dialect ladder), the control-plane guards (TTL, cycle detection, receive windows, budget decomposition), the semantic-ACK policy with ladder-descent retransmission, and an in-memory runtime.
[net] extra — Ed25519 self-certifying DIDs, datagram signing, and a fail-closed
HTTP/ASGI transport (SynapServer/SynapClient). The network surface went through the
project's security cadence — audit → fix → three red-team rounds → verify. See
SECURITY.md for the trust model and guarantees.
Measurement harness — synap_protocol.measure quantifies the dialect ladder's
token/latency/fidelity trade-off; python examples/measure_demo.py runs an illustrative
(synthetic, clearly-labeled) study. Real numbers require a live model backend.
Real captured demo output:
== 1. comprehension control: downgrade to understanding ==
opened at d1 -> misunderstood -> re-expressed -> d0.nl [understood, score=0.96]
receiver's proof-of-understanding: 'caller wants the Q3 revenue variance summarized by region'
== 2. delegation safety: cycles and depth on the wire ==
cycle attempt -> REFUSE basis=cycle
ttl=0 attempt -> REFUSE basis=depth-exhausted
== 3. budget soundness: over-grant rejected before the wire ==
parent 10000tok/$2.00 -> grant 4000tok/$0.50 -> remainder 6000tok/$1.50
over-grant 9000tok -> REJECTED: token grant 9000 exceeds remaining 6000
PASS: all three control-plane mechanisms enforced.
Development
uv sync --extra net
uv run ruff check src tests && uv run mypy && uv run pytest
— amitpatole
Release files for synap-protocol 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| synap_protocol-0.2.0.tar.gz | 29.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| synap_protocol-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 57.6 kB
Release files / synap_protocol-0.2.0.tar.gz
| Download URL | synap_protocol-0.2.0.tar.gz |
|---|---|
| Size | 29.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7dc0eec383df29e56eb6c055ffb913636b7d5a4b9c3d62e75cc535502ba678fd
|
|
BLAKE2b-256 checksum How to use checksums |
8945556abf7d96f705b7a6d18709ce4b8207805915ff11305fe189edaefc7bd0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Rocky Linux","version":"9.5","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / synap_protocol-0.2.0-py3-none-any.whl
| Download URL | synap_protocol-0.2.0-py3-none-any.whl |
|---|---|
| Size | 28.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e3bcaacd39d21c86bb21fa906dd48cc238267e8781699699469cb64ea0ef562e
|
|
BLAKE2b-256 checksum How to use checksums |
8c44782f670efa4d55de4d614503087db075118b47d9add912d840466fe3770f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Rocky Linux","version":"9.5","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|