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
Metadata
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 | Provenance | Actions |
|---|---|---|---|---|
| synap_protocol-0.2.0.tar.gz | 29.3 kB | Without provenance | Details for synap_protocol-0.2.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| synap_protocol-0.2.0-py3-none-any.whl | Python 3 | none | any | Details for synap_protocol-0.2.0-py3-none-any.whl |
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}
|
Security for synap-protocol 0.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.