Skip to main content

EasyNet Python SDK surface (MVP)

Project description

EasyRemote

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 install on 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.gz
    • sdk-packs-aarch64-apple-ios.tar.gz
    • sdk-packs-x86_64-apple-ios.tar.gz
    • sdk-packs-x86_64-unknown-linux-gnu.tar.gz
    • sdk-packs-aarch64-unknown-linux-gnu.tar.gz
    • sdk-packs-aarch64-linux-android.tar.gz
    • sdk-packs-x86_64-pc-windows-msvc.tar.gz
    • sdk-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 to 0.1.0)
    • EASYNET_DENDRITE_BRIDGE_PLATFORM=ios|android|linux|windows|macos
    • EASYNET_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=local to 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 bridgeDendriteBridge loads the platform C ABI via ctypes; all Axon gRPC shapes (unary, server-stream, client-stream, bidi-stream) are available without gRPC codegen.
  • Semantic DSLSemanticBridge and @ability_call decorator 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 schemas
  • deploy_to_node() — install + activate on target nodes
  • list_abilities() / invoke_ability() / uninstall_ability()
  • forget_all() — bulk removal of all deployed abilities

MCP & A2A Protocols

  • MCP serverStdioMcpServer hosts JSON-RPC 2.0 tool endpoints over stdio.
  • MCP operationsdeploy_mcp_list_dir(), list_mcp_tools(), call_mcp_tool_with_args(), update_mcp_list_dir()
  • A2A agent protocollist_a2a_agents(), get_a2a_agent_card(), send_a2a_task() for inter-agent task dispatch.
  • Tool adapterAbilityToolAdapter converts 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.
  • FederationCaseKit for cross-network orchestration workflows.
  • Federated node discovery, heartbeat, and invocation dispatch.
  • Preset status: FederationCaseKit is 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 / RemoteOrchestratorFactory for subprocess template building and capability deployment workflows.
  • Bundle reading, media persistence, CLI argument handling.

License

Apache-2.0 — see LICENSE.

Author

Silan Hu · silan.hu@u.nus.edu

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

easynet_run_axon-0.40.3.tar.gz (6.9 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

easynet_run_axon-0.40.3-py3-none-win_amd64.whl (7.0 MB view details)

Uploaded Python 3Windows x86-64

easynet_run_axon-0.40.3-py3-none-manylinux_2_17_x86_64.whl (7.6 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

easynet_run_axon-0.40.3-py3-none-manylinux_2_17_aarch64.whl (7.5 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

easynet_run_axon-0.40.3-py3-none-macosx_11_0_arm64.whl (16.5 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

easynet_run_axon-0.40.3-py3-none-macosx_10_9_x86_64.whl (16.5 MB view details)

Uploaded Python 3macOS 10.9+ x86-64

File details

Details for the file easynet_run_axon-0.40.3.tar.gz.

File metadata

  • Download URL: easynet_run_axon-0.40.3.tar.gz
  • Upload date:
  • Size: 6.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for easynet_run_axon-0.40.3.tar.gz
Algorithm Hash digest
SHA256 11335ca89849afb772743f0d7b68ca8e490cbc972d185eaefc5de64cfc7df219
MD5 e038f8c522679593c80f6af9a3135545
BLAKE2b-256 357701e17e4da28c44215dd6b8c3b9f65d2466fcaba331be1572e0f988aece5d

See more details on using hashes here.

File details

Details for the file easynet_run_axon-0.40.3-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for easynet_run_axon-0.40.3-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 d7d3767733b4e3acb3b1ffb8bfe5bef6c030d7d341bf4335fec82ab6903db043
MD5 1964fa1870112163123473925da2ad31
BLAKE2b-256 56346675851031e61dd48a261c383fd29aae2ae568b84c084a50f9211dae22e9

See more details on using hashes here.

File details

Details for the file easynet_run_axon-0.40.3-py3-none-manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for easynet_run_axon-0.40.3-py3-none-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 6c36bcf71b947cc4a446fd93083c560f51c15028295d45c795b7739a76c40ba6
MD5 7cc91f11adf72314fc33e16d5376b221
BLAKE2b-256 2a8a6bf088407f353035b4dce316a8eac4493a7ee850222322f7888dc7187866

See more details on using hashes here.

File details

Details for the file easynet_run_axon-0.40.3-py3-none-manylinux_2_17_aarch64.whl.

File metadata

File hashes

Hashes for easynet_run_axon-0.40.3-py3-none-manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 764374bee562ac330660cd22678c12e6d847c55cebe2039f0e288ebcbb55701e
MD5 939cb35b111ee4bc3b34cfe7913346ab
BLAKE2b-256 2d2c319b56dc7007e475d8c10329b303ff66b724cb0801ecc6ae5d34aad2e722

See more details on using hashes here.

File details

Details for the file easynet_run_axon-0.40.3-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for easynet_run_axon-0.40.3-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 04e52ff450ae520ff0bd423f25ee2aa37baf1f7df17197939ab0259c69843cb7
MD5 a7a11c154b4ea1e4785a41ec55834b21
BLAKE2b-256 62c0e9e85af1927469a4cc804025f7562f3856b8e3665233354b0f5084ed8d58

See more details on using hashes here.

File details

Details for the file easynet_run_axon-0.40.3-py3-none-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for easynet_run_axon-0.40.3-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e0d13bf4acc88e04f11f00b81a297210be936911c43c6f4cd8564f866d762038
MD5 95b33415a06766874eea82ec56ca79c3
BLAKE2b-256 9ca6736f9ac100d909f64ad0b62e6870f82f8654a9b88bebd2bac7c33fc5fa6a

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