easynet-run-axon
Python SDK for EasyNet Axon — the Capability Control Plane for agent-native distributed execution.
What is this?
This is the Python surface for Axon, a protocol-level control plane that treats agent capabilities as first-class network objects — not raw RPC endpoints. Every ability you expose carries its own schema, trust posture, scheduling contract, and tenant isolation rules, enforced atomically at invocation time.
Why this matters: In traditional architectures, policy evaluation, node selection, rate limiting, and concurrency admission happen in separate systems with separate state. That creates a race window — OPA approves a call against nodes {A,B,C}, but the load balancer routes to Node D added between decisions. Axon collapses all six checks (tenant isolation, rate limit, policy, node selection, concurrency, circuit breaker) into a single atomic decision against the same state snapshot.
Note: The wheel is platform-tagged (not
any) because it ships a native Dendrite bridge binary — the same C ABI that powers protocol-complete Axon gRPC calls without reimplementing protobuf encoding or streaming semantics in Python.
Install
pip install easynet-run-axon
Platform / Native Bundle Notes
The Python wheel contains native runtime + bridge payload and is therefore target-specific.
- Wheels are published to PyPI per target.
pip installon a host automatically selects the matching wheel. - For explicit cross-target workflows (CI + dev), use matching GitHub Release packs:
sdk-packs-aarch64-apple-darwin.tar.gzsdk-packs-aarch64-apple-ios.tar.gzsdk-packs-x86_64-apple-ios.tar.gzsdk-packs-x86_64-unknown-linux-gnu.tar.gzsdk-packs-aarch64-unknown-linux-gnu.tar.gzsdk-packs-aarch64-linux-android.tar.gzsdk-packs-x86_64-pc-windows-msvc.tar.gzsdk-packs-x86_64-apple-darwin.tar.gz
- If auto selection is not available (e.g., offline/air-gapped), install from pack file directly:
pip install /path/to/dist/sdk-packs/<version>/python/easynet_run_axon-<version>-cp*.whl
- CI/source cross-target hints:
SDK_VERSION=<version>(optional; resolver checks this value and then falls back to0.1.0)EASYNET_DENDRITE_BRIDGE_PLATFORM=ios|android|linux|windows|macosEASYNET_DENDRITE_BRIDGE_LIB=/abs/path/libaxon_dendrite_bridge.<ext>EASYNET_DENDRITE_BRIDGE_HOME=/path/to/sdk-packs-<target>.tar.gz/extracted/package(例如dist/sdk-packs/<version>/python或其父级的统一目录)EASYNET_DENDRITE_BRIDGE_SOURCE=localto auto-bind from source-tree release output (core/runtime-rs/dendrite-bridge/target/...) when running from repository checkout.
Quick Start
Expose an ability
from easynet_axon import ability, serve
@ability("easynet:///r/org/reg/agent.quote-bot/abilities/order.quote@1?tenant_id=tenant-test")
def quote(ctx, sku: str, qty: int = 1):
return {"sku": sku, "price": 19.9 * qty}
serve("agent.quote-bot")
Invoke an ability
from easynet_axon import client
res = (
client()
.tenant("tenant-test")
.ability("easynet:///r/org/reg/agent.quote-bot/abilities/order.quote@1?tenant_id=tenant-test")
.call({"sku": "A1", "qty": 2})
)
Bootstrap a local runtime behind NAT
No public IP required. The SDK spawns a local Axon runtime that joins a federation Hub over outbound gRPC only:
from easynet_axon import start_server
srv = start_server(
hub="axon://hub.easynet.run:50084",
hub_tenant="tenant-test",
hub_label="alice-macbook",
)
Capabilities
Core Protocol
- Fluent builders —
.tenant()→.principal()→.ability()→.call()are immutable and chainable. - Native Dendrite bridge —
DendriteBridgeloads the platform C ABI via ctypes; all Axon gRPC shapes (unary, server-stream, client-stream, bidi-stream) are available without gRPC codegen. - Semantic DSL —
SemanticBridgeand@ability_calldecorator for ergonomic protocol invocation. - Subject binding —
.principal(...)scopes invocation to a subject identity with automatic URI visibility mapping (pub/prv/org).
Ability Lifecycle
Full lifecycle management — not just invocation:
build_ability_descriptor()/export_ability()— define and register abilities with schemasdeploy_to_node()— install + activate on target nodeslist_abilities()/invoke_ability()/uninstall_ability()forget_all()— bulk removal of all deployed abilities
MCP & A2A Protocols
- MCP server —
StdioMcpServerhosts JSON-RPC 2.0 tool endpoints over stdio. - MCP operations —
deploy_mcp_list_dir(),list_mcp_tools(),call_mcp_tool_with_args(),update_mcp_list_dir() - A2A agent protocol —
list_a2a_agents(),get_a2a_agent_card(),send_a2a_task()for inter-agent task dispatch. - Tool adapter —
AbilityToolAdapterconverts Axon abilities to OpenAI/Anthropic tool definitions with local handler registration.
Voice & Media Signaling
First-class voice call lifecycle and transport negotiation:
- Call management: create, join, leave, end, watch events, report metrics
- Transport sessions: create, set description, add ICE candidates, refresh lease
- Codec profile negotiation
Federation
start_server()spawns a local Axon runtime and joins the Hub — all traffic is outbound.FederationCaseKitfor cross-network orchestration workflows.- Federated node discovery, heartbeat, and invocation dispatch.
- Preset status:
FederationCaseKitis currently the only first-party high-level federation preset helper; other SDKs expose federation through lower-level runtime/client surfaces only.
Remote Control & Orchestration
OrchestratorFactory/RemoteOrchestratorFactoryfor subprocess template building and capability deployment workflows.- Bundle reading, media persistence, CLI argument handling.
License
Apache-2.0 — see LICENSE.
Author
Metadata
Release files for easynet-run-axon 0.43.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| easynet_run_axon-0.43.3.tar.gz | 6.9 MB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| easynet_run_axon-0.43.3-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| easynet_run_axon-0.43.3-py3-none-manylinux_2_17_x86_64.whl | Python 3 | none | Linux glibc 2.17+ x86-64 | Details |
| easynet_run_axon-0.43.3-py3-none-manylinux_2_17_aarch64.whl | Python 3 | none | Linux glibc 2.17+ ARM64 | Details |
| easynet_run_axon-0.43.3-py3-none-macosx_11_0_arm64.whl | Python 3 | none | macOS 11.0+ ARM64 | Details |
| easynet_run_axon-0.43.3-py3-none-macosx_10_9_x86_64.whl | Python 3 | none | macOS 10.9+ x86-64 | Details |
Total release size: 61.9 MB
Release files / easynet_run_axon-0.43.3.tar.gz
| Download URL | easynet_run_axon-0.43.3.tar.gz |
|---|---|
| Size | 6.9 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3515da7d955eb1957924dfe2f5760bfd5335c1235122c0ce21b2be5c02a95363
|
|
BLAKE2b-256 checksum How to use checksums |
234d6c36453636738bc1bbd8b3a7b0bf646e8b39af167b32176917fb28dfe05d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / easynet_run_axon-0.43.3-py3-none-win_amd64.whl
| Download URL | easynet_run_axon-0.43.3-py3-none-win_amd64.whl |
|---|---|
| Size | 6.9 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
3ffd4a7047242193d245e8801f3a12db5e85313caf7c22c78038bce79ccdae1b
|
|
BLAKE2b-256 checksum How to use checksums |
fac1806f6f21eea4c6451f345c3dff2be7dc443bcfb808687081f61221d50403
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / easynet_run_axon-0.43.3-py3-none-manylinux_2_17_x86_64.whl
| Download URL | easynet_run_axon-0.43.3-py3-none-manylinux_2_17_x86_64.whl |
|---|---|
| Size | 7.5 MB |
| Tags | Linux glibc 2.17+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
64a737efa6cd2a3c2931d6d6d3fe997279711014dc1cb98f02c929bb1f761066
|
|
BLAKE2b-256 checksum How to use checksums |
969d15a1796b684041a8594fe6beca29158c6686bc5a44e90ceb7af2fb094ef9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / easynet_run_axon-0.43.3-py3-none-manylinux_2_17_aarch64.whl
| Download URL | easynet_run_axon-0.43.3-py3-none-manylinux_2_17_aarch64.whl |
|---|---|
| Size | 7.5 MB |
| Tags | Linux glibc 2.17+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
898c27d9ad9203f02b1886ce59d15ce1cebaccc78672044197bf9a244364e481
|
|
BLAKE2b-256 checksum How to use checksums |
a7b62f0a4e6fbf2d1c3e16654d1afb5514e3350c1a0f202560ab37f0aa2e5ab9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / easynet_run_axon-0.43.3-py3-none-macosx_11_0_arm64.whl
| Download URL | easynet_run_axon-0.43.3-py3-none-macosx_11_0_arm64.whl |
|---|---|
| Size | 16.5 MB |
| Tags | Python 3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
7ad03ebff90f8acc7bba42c9ab7273756169b41cfdc9ca8254e81d2ef97d6702
|
|
BLAKE2b-256 checksum How to use checksums |
9634245ea4af90a58af53f2c1f78cd0cca9cd958c02eefa188cef0f465577889
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / easynet_run_axon-0.43.3-py3-none-macosx_10_9_x86_64.whl
| Download URL | easynet_run_axon-0.43.3-py3-none-macosx_10_9_x86_64.whl |
|---|---|
| Size | 16.6 MB |
| Tags | Python 3 macOS 10.9+ x86-64 |
|
SHA-256 checksum How to use checksums |
2beadf03d9069a085908480794f569f839fffb7b9d07955a67bf0f3b936ab545
|
|
BLAKE2b-256 checksum How to use checksums |
1abc3bd9848b0a8e285f6a4db1a65930d9574abe14cc233c2881078bef205afb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|