Skip to main content

a2a-cli

license python release tests artifacts

a2a-cli poster

File-based agent bus: mail, journal, thoughts, task board, locks, alerts, handoffs, presence (status/DND), synchronous RPC. Records are Markdown with YAML front matter on a shared POSIX filesystem; every command emits one JSON envelope. No daemon, no broker, no network.

RU Русский · English

Install

The PyPI project named a2a-cli is unrelated. Install from this repository only.

pip install git+https://github.com/lnfnt/a2a-cli.git
a2a --help

Dev checkout: git clone https://github.com/lnfnt/a2a-cli.git && cd a2a-cli && python -m venv .venv && .venv/bin/pip install -e . Python >= 3.10, PyYAML.

Quickstart: two profiles on one bus

export A2A_HOME=/tmp/a2a-demo
a2a onboard --profile alice
a2a onboard --profile bob

a2a --profile alice mail send --to bob --subject "ship it" --body "task 42 is ready"
a2a --profile bob mail check            # read-only unread peek (cron-safe)
a2a --profile bob mail list --inbox --unread
a2a --profile bob mail answer <id> "done, artifacts attached"

a2a --profile alice log "implemented bus schema" --artifacts ./SPEC.md
a2a --profile alice think "hypothesis: file bus beats a queue for 10 agents"

a2a --profile alice task new "release v1" --to bob
a2a --profile bob task claim <id>
a2a --profile bob task submit <id> --evidence ./build.log
a2a --profile alice task accept <id>

a2a --profile bob status set --state idle
a2a --profile alice fleet
a2a --profile alice ask --to bob --timeout 30 "where is v1?"

a2a doctor        # orphans, ACL drift, secret spikes, tamper baseline, version parity
a2a verify        # schema validation of every record

One JSON envelope per command: {"ok":…, "status":…, "reason":…, "data":…, "metadata":…}; rejections carry hint + example. Exit codes: 0 ok, 1 error, 2 degraded, 3 invalid record, 4 usage, 124 timeout.

Storage model

One directory tree, append-only records. Default store ~/.a2a, override A2A_HOME. Profile resolution: --profile > A2A_PROFILE > HERMES_PROFILE > HERMES_HOME dir name > ~/.hermes/active_profile > default. ACL per record: L1 private, L2 team, L3 public; fail-closed — invalid access is rejected or downgraded to the type default.

Integrity

  • Scrubber: secret shapes (sk-…, Bearer …, PEM, api_key=…, hex-32+) are redacted or hard-rejected with secret_detected; quarantine + a2a secrets report + doctor warnings.
  • Tamper detection: a2a snapshot --save records sha256; a2a doctor diffs (tamper_suspects).
  • Atomic writes (mkstemp + fsync + rename); interrupted bundles forward-recover via doctor.
  • Scope locks, DND policy, idempotency dedup, audit log (actions only, never content).
  • SQLite FTS5 search index — derived, rebuildable (a2a index --rebuild).

Limits

  • Single-UID trust model: anyone with write access to the directory can post as their own profile; the bus detects tampering, not identity fraud.
  • For more than ~dozens of agents or multiple machines, use a real message broker.
  • ask is bounded synchronous coordination (timeout + answer file), not chat.

Docs & tests

SPEC.md, SCHEMA.md, LIMITATIONS.md, NOTES.md, a2a cookbook. python -m pytest -q — 405 tests against temp A2A_HOME dirs. Apache-2.0 (LICENSE). Verify artifacts: sha256sum -c SHA256SUMS, gpg --verify *.asc.

Author and copyright holder: lnfnt.

Metadata

Release files for lnfnt-a2a 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for lnfnt-a2a 0.1.0
File Size Uploaded Provenance
lnfnt_a2a-0.1.0.tar.gz 614.5 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for lnfnt-a2a 0.1.0
File Interpreter ABI Platform
lnfnt_a2a-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 730.3 kB

Release files / lnfnt_a2a-0.1.0.tar.gz

Download URL lnfnt_a2a-0.1.0.tar.gz
Size 614.5 kB
Tags Source
SHA-256 checksum
How to use checksums
51ecf141fe3104a436028356901848676c731547d1ea98bd073ac48b0db47f67
BLAKE2b-256 checksum
How to use checksums
2a3e7e1d89d1dc03ca66048260852ed1f1c085e11f65647992b302ff8e5be722
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.16

Release files / lnfnt_a2a-0.1.0-py3-none-any.whl

Download URL lnfnt_a2a-0.1.0-py3-none-any.whl
Size 115.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
217c7bada6573609f019d09e38d4c1e987750c84b662386b56e8b17522650ff0
BLAKE2b-256 checksum
How to use checksums
60f2bfe24cf151196832f1989bc74950e3f73ef43787bed621b0b29e79ec5775
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.16

Security for lnfnt-a2a 0.1.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.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page