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

Uploaded Python 3Windows x86-64

a2al-0.2.3-py3-none-manylinux2014_x86_64.whl (5.9 MB view details)

Uploaded Python 3

a2al-0.2.3-py3-none-manylinux2014_aarch64.whl (5.5 MB view details)

Uploaded Python 3

a2al-0.2.3-py3-none-macosx_11_0_x86_64.whl (6.0 MB view details)

Uploaded Python 3macOS 11.0+ x86-64

a2al-0.2.3-py3-none-macosx_11_0_arm64.whl (6.0 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: a2al-0.2.3.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.3.tar.gz
Algorithm Hash digest
SHA256 25c61fdfeb52ff8e0dce9da9b34bcb2e675e9a7e09d480738f014db7aa9c09e8
MD5 906ed83a40abd52b5e06e9ecad681a51
BLAKE2b-256 7d43f81deaf7da94449c6dca6a2d9f725406ad28e36fc929dc3415ffe94fae46

See more details on using hashes here.

File details

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

File metadata

  • Download URL: a2al-0.2.3-py3-none-win_amd64.whl
  • Upload date:
  • Size: 12.0 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.3-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 446fc72c3666bc3e2c918ac13e49533549f2218de1b7f913b44de2744ebdf01b
MD5 55437357c144bcbb2ce3b8914dc73c9a
BLAKE2b-256 4517f99ce4177f0b04b0206e110adb49602298472625951e8d2400861b005459

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for a2al-0.2.3-py3-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5c89520769c0e4164d2beedfadbf15585712b60cef4e9905982bc65f1188d647
MD5 cd5b13202093833624e871ccc2289819
BLAKE2b-256 a9264560b9fffd721759bf96400561bb075bbb134b50501be504abc3d8f4cb7a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for a2al-0.2.3-py3-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 149997c30eb1c71952a14c1cec01c09a2dd55962f1904ac437aeb4598353ae32
MD5 90b0139a2dae16e519cfb0d367bcef86
BLAKE2b-256 dd00012b2ac1754032eb67186448456859174267c21081c1d3b65eed9c4725ab

See more details on using hashes here.

File details

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

File metadata

  • Download URL: a2al-0.2.3-py3-none-macosx_11_0_x86_64.whl
  • Upload date:
  • Size: 6.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.3-py3-none-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 4f3251788c9d8d92e5a7fdacbe1d7c23ce4be23b26e0f60c0fcf245eb6f18220
MD5 f38f1cdfd043ba8b9fcc6629fb667708
BLAKE2b-256 11c738b593151b5a0c8aa20cd1fdcfd86f0936db38df170f59519a6daf105916

See more details on using hashes here.

File details

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

File metadata

  • Download URL: a2al-0.2.3-py3-none-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 6.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.3-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b5f6584166b99e6cd9ef31a38c8c3e6066f39a52904572ca43e30e482a172da2
MD5 da77e43d67800f5e79dd185ec9f3a3a1
BLAKE2b-256 e9e894379ba80ce9e6d86c9ff95db37100e8111677ad378d7ae8b66304b1e3e1

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