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

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:

  • create_ability() / 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.

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

Uploaded Python 3Windows x86-64

easynet_run_axon-0.27.14-py3-none-manylinux_2_17_x86_64.whl (7.4 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

easynet_run_axon-0.27.14-py3-none-macosx_11_0_arm64.whl (7.0 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: easynet_run_axon-0.27.14.tar.gz
  • Upload date:
  • Size: 6.7 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.27.14.tar.gz
Algorithm Hash digest
SHA256 531d9f6b66f1e1fde8edd74dd96c312385b6f345d3e7d80f9715a3b6998dfb1e
MD5 4efbdeff46fa3045b4db252dff2d5a69
BLAKE2b-256 685d7dab523c416f2c1c49709dae2528668460f7119351d423483f43804a8b6b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for easynet_run_axon-0.27.14-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 e1aadd8d52eed602cae8b7aa39b618b34fbac64a6711ba8601f37cff11bd87e6
MD5 33fd44102199bd099ed7a7c52490e646
BLAKE2b-256 6010a357dcdf6fa7e8bd466babd1f1ac18e2da858074de7f2c0a682ef56fbfe8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for easynet_run_axon-0.27.14-py3-none-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 c10e9cc4bcc990adce4fe1b034ca835282431d1e0aaa3cf8324e136cc536724f
MD5 f24e2b776de534add81112c55cb12274
BLAKE2b-256 daa9b22a3dfa8c0c19a425e6a0b1d47c800a9ffe75f7488408402a8a8816f00b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for easynet_run_axon-0.27.14-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7157453f83f0fe3f8aec70e4a7a1366e149be304fa11ffcd7a70e84b9749c453
MD5 e9cd28154c08c18421eb07f8d9979129
BLAKE2b-256 0424774038eb0b1c5feb6abc58feaeb76335ead06fc52cde27f86ae9d428ff92

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