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.6.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.6-py3-none-win_amd64.whl (11.8 MB view details)

Uploaded Python 3Windows x86-64

a2al-0.2.6-py3-none-manylinux2014_x86_64.whl (6.1 MB view details)

Uploaded Python 3

a2al-0.2.6-py3-none-manylinux2014_aarch64.whl (5.6 MB view details)

Uploaded Python 3

a2al-0.2.6-py3-none-macosx_11_0_x86_64.whl (5.6 MB view details)

Uploaded Python 3macOS 11.0+ x86-64

a2al-0.2.6-py3-none-macosx_11_0_arm64.whl (5.6 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: a2al-0.2.6.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.6.tar.gz
Algorithm Hash digest
SHA256 253d115dd81554b9e39b93836fb6edb5d3eb83b12d82ea09529aa1a9d7f81b59
MD5 ce5a9eb41a90e70f36a80237295e06c4
BLAKE2b-256 7ff32ec30c9075188152b3575efe4c6e6be2400eed29e0104031ab5305e324ae

See more details on using hashes here.

File details

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

File metadata

  • Download URL: a2al-0.2.6-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.6-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 6d15336dce2125523177cb4971f99f0d5d6ce22b9ba1d1e7d7bb41c3df51187e
MD5 1eaf0c9c919f3a5683066cfccc3273a0
BLAKE2b-256 0819a9acc8841630a0fe413aa51d796059f95536d666830d17b697557d876df9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for a2al-0.2.6-py3-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d6d9660ede72f02162b2148d97c8d12818fa0484e6d2e78030c5aa53fabf2fcb
MD5 ef162a28e0d7dabed86e38b5663ad802
BLAKE2b-256 e9ba2eb7ca8d17c84176b4fef42604ab5270d96f0bbeed23ff51b60eb2aeed38

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for a2al-0.2.6-py3-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9bebf4592453dd408f519966ecc7f28329ce1324c9a3325b796f428185375b38
MD5 4804d18c4d662536b002ee1fa5a5fc1e
BLAKE2b-256 deb8946a1fe676b360cf1d3e8ce131dc5fbfe9bf6ff45b72d83680d11db48212

See more details on using hashes here.

File details

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

File metadata

  • Download URL: a2al-0.2.6-py3-none-macosx_11_0_x86_64.whl
  • Upload date:
  • Size: 5.6 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.6-py3-none-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 0420656cde699fe4ec9f0c9bd6437e96e113c91ff547cb973708d7773ab41f46
MD5 035819028edfe0fddec4e590bdfe6c25
BLAKE2b-256 b5adfbfd3209ff3a3be1ce35678e09a5336f9426e46d8aae53b0dbf3242e9da6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: a2al-0.2.6-py3-none-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 5.6 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.6-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 20e56cd959646d5f0f17c1fdea9938dca910b074142d04172be2b6f444ddee6a
MD5 1bd0acc760e109d0c5d16eb47577da2e
BLAKE2b-256 d12bf03d9f415a4902de507256edb1ad76db9436740c0e3a450879e410a440ae

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