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

Uploaded Python 3Windows x86-64

easynet_run_axon-0.40.11-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.11-py3-none-manylinux_2_17_aarch64.whl (7.5 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

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

Uploaded Python 3macOS 11.0+ ARM64

easynet_run_axon-0.40.11-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.11.tar.gz.

File metadata

  • Download URL: easynet_run_axon-0.40.11.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.11.tar.gz
Algorithm Hash digest
SHA256 61a7fa02acac33e42c9f56d70711748a6aa46c747c029e934533f46d007160e0
MD5 5088b6572bb633fa680351c1b3b81948
BLAKE2b-256 6c3e69c3ee6c8b96b66721280b589be3d08458ea17a77c62c8431eec2b6cfd94

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for easynet_run_axon-0.40.11-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 e94616a47098824f4ecd4099a9f885ab922e08803adb04242d2b0c3564b95022
MD5 7e736adbe884afa0fdaf65b17fd0b18c
BLAKE2b-256 cca26337a6997f2b7cca12ceab02d76d8d3869c93c08c9f2b65f9ab4bd564e2a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for easynet_run_axon-0.40.11-py3-none-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 598a93c6c3b58b6500c1c031f50e63c71ba7fc9979f9e25183c0fbcc206b6879
MD5 ceebd0229607bb6babe036650384241b
BLAKE2b-256 5b4d426c6c14c51944fe847a3e6bb0f9505684ab52481a2c22badc45cdb118db

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for easynet_run_axon-0.40.11-py3-none-manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 c82e4fd23dbb22d500f4514cd76a5774c1af3316d228ecf18d785c80eca335d9
MD5 b1a160891656e2ff9574c8b638fcb755
BLAKE2b-256 195e2daf01fc426e55d7678a6c904dc8af21819a83615a235e8e35616582ef1a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for easynet_run_axon-0.40.11-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9203b8192a81a37f17fa688d559ae9b4ebcf55eef1fa5c68a6e2ed6626c0ba05
MD5 ed8ff2ce21920f0baee9b7d11e6b0702
BLAKE2b-256 a379450c2c92cd74cee0a0b25c9fc83e9b51db2b7b23795ffaea93d29940f386

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for easynet_run_axon-0.40.11-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 092e99c23b644dee3fd356b4f2d8654e322852dda6bea82129cb88a7c7587a61
MD5 078f514ce6411dfffe40b61afab3ae30
BLAKE2b-256 8987fd1ec7db849069c25312b909ab60045c8855008da13c377bfdadba34fc48

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