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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3

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

Uploaded Python 3

a2al-0.2.8-py3-none-macosx_11_0_x86_64.whl (5.7 MB view details)

Uploaded Python 3macOS 11.0+ x86-64

a2al-0.2.8-py3-none-macosx_11_0_arm64.whl (5.7 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: a2al-0.2.8.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.8.tar.gz
Algorithm Hash digest
SHA256 0436b57644cec8550236212d1676cb3620b79c19261c3d5d4b6edbbb9d549764
MD5 cf2d6709a27b95f48dc279ec0bcb0786
BLAKE2b-256 633a2aee25dbe95d48193ca2abe47078574d2af4568ff32a4dddba82d3ff692a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: a2al-0.2.8-py3-none-win_amd64.whl
  • Upload date:
  • Size: 11.9 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.8-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 bb5281d729398e431bea041554261ec6312ff160bdc7639ed4d05fa849751cc5
MD5 070aac0526e3f3004db28cc12c608023
BLAKE2b-256 15710bf6653f7096fd09c620fcc70ca909bf257e58e9a6033dfdd5986a07510e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for a2al-0.2.8-py3-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 378bc458fc19ec7fd7512d71a783b3ec91b4ae766128e7a2a7d4ec7fc4f2ab2d
MD5 e9e0677ad8269efd7e5c8a228ac3ef48
BLAKE2b-256 31febdd3e25b14d1f4bded3b53b9f1777ec06c306653344191a3c1a15d998c68

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for a2al-0.2.8-py3-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1299b83446cf81390162bef879212f2fb6960ce3000eeba927ed84ea660e6672
MD5 b3d8e77f147df494b472886ba4dc1217
BLAKE2b-256 61a8179a9754f0f0cd8d302c051f3179e68d92629fb8d69da33d0c2e3aaf0841

See more details on using hashes here.

File details

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

File metadata

  • Download URL: a2al-0.2.8-py3-none-macosx_11_0_x86_64.whl
  • Upload date:
  • Size: 5.7 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.8-py3-none-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 6ac7f0e1992f2b0415b5e97d603640cadb08683a2288db8f362e3ba4cb0c40db
MD5 9c8755c29f01ad93469d917c0e15cbc4
BLAKE2b-256 b5898c5904cd9f1e16bc3a692582de5f8969c74bc87f2577bd38ed7d7d216ca9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: a2al-0.2.8-py3-none-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 5.7 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.8-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9bb2e15301fe5c54230e1854a012bbe2592250007b10aa112ddec217f73bb506
MD5 2bd5e9f765a4c14db0caa1d836568241
BLAKE2b-256 0d68e2680b64e0a2f14ba64d3e10a60071f6efd143a5928c019b7878fcfbc238

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