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

Uploaded Python 3Windows x86-64

a2al-0.2.9-py3-none-manylinux2014_x86_64.whl (6.2 MB view details)

Uploaded Python 3

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

Uploaded Python 3

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

Uploaded Python 3macOS 11.0+ x86-64

a2al-0.2.9-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.9.tar.gz.

File metadata

  • Download URL: a2al-0.2.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.2.9.tar.gz
Algorithm Hash digest
SHA256 97efe76350a4f01893dc11368c89d9f377d9a9e8e39999e2de6a2141fbb62b3b
MD5 4907576df7201ba2df6e881b5fd804bd
BLAKE2b-256 ffda2822c034437b5682e2d6b4293210207348f30dd2b17802cece180c6a55ef

See more details on using hashes here.

File details

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

File metadata

  • Download URL: a2al-0.2.9-py3-none-win_amd64.whl
  • Upload date:
  • Size: 13.3 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.9-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 ee521f0000323fd589791cbfb404197fae2541893ce09f055bcfe1e2edc96088
MD5 7b29905b963d552c29aeab409613d140
BLAKE2b-256 b3d22deb09ea8b7a02f79ee73cc89075604f748b2c5f563eee4def8cc24de38f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for a2al-0.2.9-py3-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a4840b1dc794c25b96398e4a09f66bd401917a21ed71db620b664b3f0b16de7d
MD5 8ab6345e59ffed5557513f2f506d550c
BLAKE2b-256 dc9eb63553cb5df440fdb06a7604ac7b58caa2889db792c76d88f46bcbe09e1a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for a2al-0.2.9-py3-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 202b7d1a326a24e94dbdd823e25fa991f79a9c189088faa94083f4aa4f4e3065
MD5 d90c91caf0e128d3852feccde509123d
BLAKE2b-256 c22e3afdcfd97f1c40ee2920fed10129da2cb38322da11e85dbf49bc3ba482d5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: a2al-0.2.9-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.9-py3-none-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 e70f0739cd345e40a790f56f738ab4eb68d85c6ed9c90a68ef060f80a048c773
MD5 cd27e938549abde051a4b71c3d3ab209
BLAKE2b-256 e727cecf690a3b131b8208dc34789c48fe3ecaaeb118815280f75ed12344dad9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: a2al-0.2.9-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.9-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a5fff2dbeb6f3076ef6cad6faa1d180e2d83777709a60121ab2113579cad7586
MD5 14c08562f8e3d14ba5dbcce1a8747a32
BLAKE2b-256 6078aef0a9a1affa7d72619e493551713106226a4b43b3272a4936de4bc98ddc

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