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

Uploaded Python 3Windows x86-64

easynet_run_axon-0.41.5-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.41.5-py3-none-manylinux_2_17_aarch64.whl (7.6 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

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

Uploaded Python 3macOS 11.0+ ARM64

easynet_run_axon-0.41.5-py3-none-macosx_10_9_x86_64.whl (16.6 MB view details)

Uploaded Python 3macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: easynet_run_axon-0.41.5.tar.gz
  • Upload date:
  • Size: 7.0 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.41.5.tar.gz
Algorithm Hash digest
SHA256 44690d96e18334edc87fa289f3915656d4b0c56722f6c6df618b8b04bcb9a824
MD5 04489d6def1924089124f370a131f672
BLAKE2b-256 d4c039996eaffaac20bfe3a4b133abf8d99284a5f6bfd2d48e27b4dbfffa5637

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for easynet_run_axon-0.41.5-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 fa92e19f0b93d804e05bc6a80e225e8a508c09216e414a1dd96c4767b6bdd905
MD5 dedfa876117051967b7c255ceca0a8c7
BLAKE2b-256 7a98a8ce5c79dfed26c0671b8fb1ef62ab9fd24b8441793182da97bf4b14aaac

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for easynet_run_axon-0.41.5-py3-none-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 aa7813f6297cd212c3e975802556759adfcf4f8f7381982510f698c3c8409559
MD5 eabd98dbf1753259a13c626a88241025
BLAKE2b-256 4cbb59c3b2049f2c0457ffcdec2e48c19f9d1f785c0493e3b4812b46c74053f7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for easynet_run_axon-0.41.5-py3-none-manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 a96a9378f1e20526b420cdea4ccad356583e92eee490d0aa9008cece812a31b4
MD5 0c6a526b5c303a70661e1f6401936bfb
BLAKE2b-256 3876369ce9fd68bd7ee70e69ad8712dc6da9128321898bc82e9de64464277b16

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for easynet_run_axon-0.41.5-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5875029d920ebc04c64de015bb832a7c9e1b6f9e136230a804cfed70d4fdadf8
MD5 e700e21d8819fa675c160a5459e9d780
BLAKE2b-256 26938be7c1bea07638e314b9677a6fbd0fd20aa4b6a6266823ac4931d38196d5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for easynet_run_axon-0.41.5-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c6208fe34f4e5eebac501ef0f21a7f3a13d5093b157e81a8b164856582157236
MD5 0903919e89bfb1ac174d4a9f9936d264
BLAKE2b-256 0ee54ea24ce44d3ea6989c27c8ed11a5dbdd6ab2ef318157d424aebb93cc6b05

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