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

Uploaded Python 3Windows x86-64

a2al-0.1.9-py3-none-manylinux2014_x86_64.whl (5.7 MB view details)

Uploaded Python 3

a2al-0.1.9-py3-none-manylinux2014_aarch64.whl (5.3 MB view details)

Uploaded Python 3

a2al-0.1.9-py3-none-macosx_11_0_x86_64.whl (5.8 MB view details)

Uploaded Python 3macOS 11.0+ x86-64

a2al-0.1.9-py3-none-macosx_11_0_arm64.whl (5.8 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: a2al-0.1.9.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.1.9.tar.gz
Algorithm Hash digest
SHA256 0f790f74aa4a91eafd52bb1237e2dfab8d2a3dd110b8076ea19f6c35e5baa41d
MD5 f5eee599931d578e3c46c2ee2625769e
BLAKE2b-256 8c73018556083ffc596d5cdcf817f57090cf3b7152ea26fafa7a62670116695a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: a2al-0.1.9-py3-none-win_amd64.whl
  • Upload date:
  • Size: 11.6 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.1.9-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 ad86c39f1684bcd87722dd9d7dbd0cc53dd8fbd371dfccd4dadf8f0216ea0416
MD5 7da5e189eacf1ef815d01f9332c6ce6d
BLAKE2b-256 41fdf16d7f8e006d06f35b01b2c9e3a77b9d22671e9775167d0b05a4efb24da2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for a2al-0.1.9-py3-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b10ef8025d654bf66e3121105d157676c048442bd09331ea93cc624e20373f89
MD5 c7fafbbf10f81ace8a4fc19d6d90e13f
BLAKE2b-256 6d6df57805cb44f440d78371a07f7df63c9d9fa0143028dcbd7905a09d36a174

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for a2al-0.1.9-py3-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a210688245d9dd6029bfbc36031e5749905d8f341286ecd2fd5665a744bf5934
MD5 cdc6108b986190f1151062c7b16ab09e
BLAKE2b-256 3f0f5da0d14a60e5a1131b576335410da1fae8cb025e2e9bd8a7255a63d7b1be

See more details on using hashes here.

File details

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

File metadata

  • Download URL: a2al-0.1.9-py3-none-macosx_11_0_x86_64.whl
  • Upload date:
  • Size: 5.8 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.1.9-py3-none-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 58164a6e70e73ef6300158373d30e03b0a752f776a8e2a08a235c8fd80fbcce0
MD5 2a948bfdc66daff90861a6fe1ffd4184
BLAKE2b-256 b5f6247c7e77332370f2b6975e4c840eff2a5d807ab0e39d8caefe5e37fd0caa

See more details on using hashes here.

File details

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

File metadata

  • Download URL: a2al-0.1.9-py3-none-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 5.8 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.1.9-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bc70c0e666f8d554cd0989995794495a012836583be8bc62209db3a3288319e3
MD5 26b4e4340ae6e1e60a5c4e2c21bb70c7
BLAKE2b-256 aeda5f843a14cfc40c6422b4a96e3d1e71ee3162188f7f4489c00fff71d6c996

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