Skip to main content

Python client for a2al: spawn a2ald and call its REST API (health, agents, resolve, fetch, tunnel, …)

Project description

a2al (Python)

Python client for A2AL — decentralized agent networking. Spawns a local a2ald daemon as a sidecar and exposes a typed REST helper covering the full API surface: identity, publish, discover, resolve, fetch, and multiplexed persistent tunnels.

Full API: doc/api-reference.md

Installation

pip install a2al

Pre-built a2ald binaries are bundled inside platform wheels:

Platform Architecture
Linux x86_64, arm64
macOS x86_64, arm64
Windows x86_64

On unsupported platforms, install a2ald manually and set A2ALD_PATH to the executable path.

Quick Start

from a2al import Daemon, Client

with Daemon() as d:
    c = Client(d.api_base, token=d.api_token)

    # 1 — Check daemon health
    print(c.health())

    # 2 — Send an HTTP request to a remote agent (encrypted QUIC, no local port needed)
    result = c.fetch(
        remote_aid,
        method="GET",
        path="/.well-known/agent.json",
    )
    # result = {"status": 200, "headers": {...}, "body": "<base64>", "truncated": False}

    # 3 — Open a persistent tunnel (multiple concurrent TCP connections)
    tunnel = c.tunnel_open(remote_aid)
    local_addr = tunnel["listen"]   # e.g. "127.0.0.1:58320"
    tunnel_id  = tunnel["id"]       # e.g. "tun_abc123"

    # ... connect your application to local_addr ...

    c.tunnel_close(tunnel_id)

Client API

Method REST endpoint Description
health() GET /health Daemon liveness check
resolve(aid) POST /resolve/{aid} Look up a remote agent's endpoints
connect(aid, *, local_aid) POST /connect/{aid} One-shot tunnel — single TCP session, closes automatically
fetch(aid, *, method, path, headers, body_base64, local_aid) POST /fetch/{aid} HTTP request over QUIC; returns {status, headers, body(base64), truncated}
tunnel_open(aid, *, local_aid, idle_timeout_sec) POST /tunnel/{aid} Persistent tunnel — accepts many concurrent connections; returns {id, listen}
tunnel_close(id) DELETE /tunnel/{id} Close a persistent tunnel
tunnel_list() GET /tunnel List active persistent tunnels
tunnel_status(id) GET /tunnel/{id} Status of one tunnel
agents_list() GET /agents List locally registered agents
identity_generate() POST /identity/generate Create a new Ed25519 AID
agent_register(payload) POST /agents Register a generated identity
agent_publish(aid) POST /agents/{aid}/publish Announce agent to the Tangled Network

Daemon Context Manager

Daemon() starts a2ald as a subprocess and stops it when the with block exits.

from a2al import Daemon, Client

# Default: auto-locate a2ald binary, random API port, temp data dir
with Daemon() as d:
    c = Client(d.api_base, token=d.api_token)
    ...

# Custom binary path and extra daemon flags
with Daemon(
    a2ald_exe="/usr/local/bin/a2ald",
    extra_args=["--data-dir", "/var/lib/a2al", "--fallback-host", "1.2.3.4"],
) as d:
    c = Client(d.api_base, token=d.api_token)
    ...

Environment Variables

Variable Description
A2ALD_PATH Override path to the a2ald executable
A2AL_API_TOKEN Bearer token when the daemon enforces authentication

Requirements

  • Python 3.10+
  • No third-party dependencies (standard library only)

Links

License

MPL-2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

a2al-0.2.0.tar.gz (5.9 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

a2al-0.2.0-py3-none-win_amd64.whl (11.8 MB view details)

Uploaded Python 3Windows x86-64

a2al-0.2.0-py3-none-manylinux2014_x86_64.whl (5.9 MB view details)

Uploaded Python 3

a2al-0.2.0-py3-none-manylinux2014_aarch64.whl (5.4 MB view details)

Uploaded Python 3

a2al-0.2.0-py3-none-macosx_11_0_x86_64.whl (5.9 MB view details)

Uploaded Python 3macOS 11.0+ x86-64

a2al-0.2.0-py3-none-macosx_11_0_arm64.whl (5.9 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

File details

Details for the file a2al-0.2.0.tar.gz.

File metadata

  • Download URL: a2al-0.2.0.tar.gz
  • Upload date:
  • Size: 5.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for a2al-0.2.0.tar.gz
Algorithm Hash digest
SHA256 218137e50e9e611dafecd6fef6a924a53085f3f764d6ba0a4560c478f3b0d4db
MD5 80f4082a4eb726c4c377137ceff47ea9
BLAKE2b-256 c9ab04c3e0b2cd1799f80408a9bbdf2045851c3f8ccc8399c5588f9c1accbde1

See more details on using hashes here.

File details

Details for the file a2al-0.2.0-py3-none-win_amd64.whl.

File metadata

  • Download URL: a2al-0.2.0-py3-none-win_amd64.whl
  • Upload date:
  • Size: 11.8 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for a2al-0.2.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 4c8caf7354cd61891dc3e707e6e38a510beb614cbbf2dec86a33fc9c2d3147f2
MD5 665b379114964c65c829ef7e61024c13
BLAKE2b-256 53e9581d602bb7b2468a1df2dea8c92191af4e03e3bad24806346fd89ea7ca22

See more details on using hashes here.

File details

Details for the file a2al-0.2.0-py3-none-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for a2al-0.2.0-py3-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0fd2531b29e11288ccb2af9ede7e7cb4e8df23568bd44e506078bcb3bb6160f2
MD5 19507c8f433881695da65fb90ee77bae
BLAKE2b-256 44cbf34dd82004b31c9eb021b7b5855d684e6150a7691884ea6a9f7e36bb98f3

See more details on using hashes here.

File details

Details for the file a2al-0.2.0-py3-none-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for a2al-0.2.0-py3-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f36920c521aa3e852182864cc1632df36e4b97c8148a60fea9ac52ae3daefe5f
MD5 84aacd891cf963ef09d5f5d391a1363b
BLAKE2b-256 9cc1840fa7d8e9ed5c799e06608201cc6035f89b8d10643273ffd5cbc4267389

See more details on using hashes here.

File details

Details for the file a2al-0.2.0-py3-none-macosx_11_0_x86_64.whl.

File metadata

  • Download URL: a2al-0.2.0-py3-none-macosx_11_0_x86_64.whl
  • Upload date:
  • Size: 5.9 MB
  • Tags: Python 3, macOS 11.0+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for a2al-0.2.0-py3-none-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 bfe9563420153a19d13210fa1be50990d54cee789aff95f6c191dfa259fd1014
MD5 6e6b41357b7bf508a5e1e3d9d59c6c80
BLAKE2b-256 4561de2da52c067d97b5a5a5f5efb33d1d5fde378df72935973c15479af3aea6

See more details on using hashes here.

File details

Details for the file a2al-0.2.0-py3-none-macosx_11_0_arm64.whl.

File metadata

  • Download URL: a2al-0.2.0-py3-none-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 5.9 MB
  • Tags: Python 3, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for a2al-0.2.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cbe5c85fd2b7c3b6a883ec2ebd2fd8c03fae80be43ef9f7b5ee0c3b91a6c6029
MD5 45d4e20cab9e28784f1dd48efc98568c
BLAKE2b-256 b64b94f38c4fa0ea07c050e540b47a790554254a7ae3f551f023c6c8947e0bcc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page