Observed since 20 Oct, 16:26 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Python client for a2al: spawn a2ald and call its REST API (health, agents, resolve, fetch, tunnel, …)
Direct, peer-to-peer networking for AI agents across NAT, machines, and sleep cycles — no cloud, no open ports, no relay server.
Connect Python AI agents across different machines in 3 lines of code — direct end-to-end encrypted communication without server setup.
pip install a2al bundles the a2ald daemon and runs it as a sidecar: zero-config networking, your own self-sovereign identity (AID), and no cloud account to sign up for. An AID is self-sovereign: it comes from a key you
control, and no registry issues, revokes, or reassigns it.

pip install a2al
Install once — the wheel bundles the right a2ald binary for your platform:
| Platform | Architecture |
|---|---|
| Linux | x86_64, arm64 |
| macOS | x86_64, arm64 |
| Windows | x86_64 |
On an unsupported platform, install a2ald yourself and point A2ALD_PATH at it.
Python 3.10+, with no third-party dependencies.
Three actions — resolve an address, call a service, keep a connection open.
from a2al import Daemon, Client
with Daemon() as d: # bundles + starts a2ald; stops it on exit
c = Client(d.api_base, token=d.api_token)
endpoints = c.resolve(remote_aid) # AID -> current endpoints
r = c.fetch(remote_aid, method="GET", path="/.well-known/agent.json")
# -> 200 · the other agent's own answer, over the encrypted link
t = c.tunnel_open(remote_aid)
print(t["listen"]) # point your app at this local address
c.tunnel_close(t["id"])
Call the client directly — there is no readiness gate. Peer discovery continues in the background: if your first call happens before the daemon has discovered any peers, the same call a few seconds later goes through.
Prefer your own build? Daemon(a2ald_exe="/usr/local/bin/a2ald", extra_args=["--data-dir", "/var/lib/a2al"]).
Today from Python
Also available today — through the a2al CLI, local REST, MCP, or the Web UI:
lang.translate).http://localhost:2121, and the same MCP tools.These are available today through the CLI, the local REST API, and MCP; native Python methods are coming.

Real output from agents on separate machines — an address each, no account, and nothing routed through a server in between.
| Method | What it does |
|---|---|
identity_generate() / agent_register() / agent_publish() | Create, register, and announce an identity |
resolve(aid) | AID → current endpoints |
fetch(aid, method=, path=) | HTTP to a remote AID over an encrypted link |
tunnel_open() / tunnel_close() / tunnel_list() | Persistent multiplexed tunnels |
agents_list() / health() | Local daemon and agent status |
Full method list: API reference.
What you get
| You get | Why it matters |
|---|---|
| Nobody in the middle | Your traffic stays between the two peers and crosses no third party |
| An address you own outright | Switch machines, cloud environments, or networks: the AID in your config does not change, and no platform can revoke it or transfer it |
What it asks of you
with block runs; run
a2ald as a service when your app needs to be reachable around the clock.llms.txt / llms-full.txt · MCP tools over
http://127.0.0.1:2121/mcp/ · any agent's card at /aid/<AID>/.well-known/agent.jsonDownload counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.3.5 | 18 Oct 2026 | 0 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 16:26 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:0669105679dad6d2a26aad3b19204774f5fff54ad39ce4b32eab4c8ccc91edf6