EasyNet Python SDK surface (MVP)
Project description
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
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:
create_ability()/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.
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file easynet_run_axon-0.36.9.tar.gz.
File metadata
- Download URL: easynet_run_axon-0.36.9.tar.gz
- Upload date:
- Size: 6.8 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1624bef396eb596386e4e7c1436410aa59efb634ae4fc53a252c5bc5906820f3
|
|
| MD5 |
feadeeed71857162181dd0f73a437f7d
|
|
| BLAKE2b-256 |
db0a565003ca861664b3623f3cbe005890cd0eeb2fc42345eef973411eec55ab
|
File details
Details for the file easynet_run_axon-0.36.9-py3-none-win_amd64.whl.
File metadata
- Download URL: easynet_run_axon-0.36.9-py3-none-win_amd64.whl
- Upload date:
- Size: 6.9 MB
- Tags: Python 3, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bd95ca8a0eb91610574d610d5ef0b430d40bb524c01d93a17014958cc1a33891
|
|
| MD5 |
b2ad6cea0380eb52d8e25d4ebc064bcd
|
|
| BLAKE2b-256 |
8e34ced74069d3fb5c35defe33613852d27aa41992e8f57c08743beeba0b6222
|
File details
Details for the file easynet_run_axon-0.36.9-py3-none-manylinux_2_17_x86_64.whl.
File metadata
- Download URL: easynet_run_axon-0.36.9-py3-none-manylinux_2_17_x86_64.whl
- Upload date:
- Size: 7.4 MB
- Tags: Python 3, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
df951e422fa1a1f1863951687bd542e4d78d6e5077fbc1b7fa2e344089320792
|
|
| MD5 |
672249e48deb295c8c0613f982ec8ca3
|
|
| BLAKE2b-256 |
3e18ce494f123d5235201f4fe689b1a6a67b28e5ba18032bf11e7b02cd333bae
|
File details
Details for the file easynet_run_axon-0.36.9-py3-none-macosx_11_0_arm64.whl.
File metadata
- Download URL: easynet_run_axon-0.36.9-py3-none-macosx_11_0_arm64.whl
- Upload date:
- Size: 7.1 MB
- Tags: Python 3, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bf1954a59d35bc20b14efd844ef8517016084d5433b269990d430d8d5f38f1de
|
|
| MD5 |
ee5866d27b74d6577ebd030e009e1cfb
|
|
| BLAKE2b-256 |
791b7b122a0e221116ebc6ce8f70561579f32c741861bc033d0e62062cefad6d
|