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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3

a2al-0.2.7-py3-none-manylinux2014_aarch64.whl (5.7 MB view details)

Uploaded Python 3

a2al-0.2.7-py3-none-macosx_11_0_x86_64.whl (7.0 MB view details)

Uploaded Python 3macOS 11.0+ x86-64

a2al-0.2.7-py3-none-macosx_11_0_arm64.whl (7.0 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: a2al-0.2.7.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.7.tar.gz
Algorithm Hash digest
SHA256 69718dbcf2f7e8030a0563c6b829819c844be8c6ea71a3637b916aa19d7497c8
MD5 3036ddec4b4781e236e06ec5b092fc9b
BLAKE2b-256 5451274342f1b1a85d1b094395695eebddf6d277bb86021886a11b544c0ea8d8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: a2al-0.2.7-py3-none-win_amd64.whl
  • Upload date:
  • Size: 13.2 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.7-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 c228a0c2cf3e4022d38ab8a34f9b83babd679bb07d648b48b18d634321dc8ca7
MD5 60de859c811c6aa8f8647e3fcac7c630
BLAKE2b-256 2ced36040119735dcd4104d135c66800f4215031976aaaa703850290e5e16495

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for a2al-0.2.7-py3-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a542f4fc8292f37a91740f8ae85451263e480a4fd4f5c774a47cf137feac7ade
MD5 3b7da82600deb1aa2087506172b3bb31
BLAKE2b-256 00ea12e93821e63e989f3741deafd61418c54d21dcda9ce47521bfdc383ee307

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for a2al-0.2.7-py3-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 780a12149fcc5d40415e0ca75e4f7ac9505da3cb1e04fbdb7c3c96f3283bea60
MD5 b0d90129c16cd7ce118ba88be73e784c
BLAKE2b-256 4c27853b1ef8971c27833355baaea4a8e14841057c4a86965c615730c1faeb6b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: a2al-0.2.7-py3-none-macosx_11_0_x86_64.whl
  • Upload date:
  • Size: 7.0 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.7-py3-none-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 0b5165824cf820126ab270a601adc773eb243bb65df3855c89be17690d48cfda
MD5 4e1d6f73194bb079ab395e339fdff4d0
BLAKE2b-256 7880c9f14fad2a09f37ec1cf3d4c4279f77272395731f30c657f3cffb57b7274

See more details on using hashes here.

File details

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

File metadata

  • Download URL: a2al-0.2.7-py3-none-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 7.0 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.7-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 663333ae6b161f894f696d50d475e5905ea80faab7c6c35ab509413986fb27fe
MD5 c788e177f5341d8a1bd6fcacd966cec5
BLAKE2b-256 c197522b003dc6c724aa4f965eaa6c95619b18d1b1a0a9aa120604ee652ffddb

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