axonsdk.dev · PyPI · Roadmap · GitHub
One SDK. Any compute. Route AI inference to the fastest, cheapest backend — cloud, edge, or your own infrastructure.
AxonSDK is a universal AI compute routing layer. Stop rewriting integrations every time you switch providers, hit rate limits, or find a cheaper GPU. Point AxonSDK at any backend — GPU clusters, container clouds, serverless functions, TEE enclaves, or your own servers — and it handles routing, failover, and cost optimisation automatically.
AxonSDK is to AI compute what httpx is to HTTP — one client, any backend.
| Provider | Status | Nodes | Runtime | Cost |
|---|---|---|---|---|
| io.net | ✅ Live | GPU clusters (A100, H100, RTX) | nodejs, python | ~$0.40/hr GPU spot |
| Akash Network | ✅ Live | Container compute marketplace | nodejs, docker | Pay-per-use |
| Acurast | ✅ Live | 237k+ mobile TEE nodes | nodejs, wasm | Pay-per-execution |
| Fluence | ✅ Live | Serverless function compute | nodejs | Pay-per-ms |
| Koii | ✅ Live | Distributed task nodes | nodejs | Pay-per-task |
| Provider | Status | Services | Runtime |
|---|---|---|---|
| AWS | ✅ Live | Lambda, ECS / Fargate, EC2 | python, nodejs, docker |
| Google Cloud | ✅ Live | Cloud Run, Cloud Functions | python, nodejs, docker |
| Azure | ✅ Live | Container Instances, Functions | python, nodejs, docker |
| Cloudflare Workers | ✅ Live | Workers, R2, AI Gateway | nodejs, wasm |
| Fly.io | ✅ Live | Fly Machines | python, nodejs, docker |
Provider health dashboard: Real-time status and latency for all networks → status.axonsdk.dev
pip install axonsdk-py # core SDK (mirrors the axonsdk-ts npm packages)
pip install "axonsdk-py[inference]" # + FastAPI OpenAI-compatible server
pip install "axonsdk-py[aws]" # + boto3
pip install "axonsdk-py[gcp]" # + google-auth
pip install "axonsdk-py[azure]" # + azure-identity + azure-mgmt-containerinstance
pip install "axonsdk-py[all]" # everythingNote: Install as
axonsdk-py, import asaxon.from axon import AxonClient, AxonRouter(The PyPI distribution name differs from the import name — same pattern as
beautifulsoup4→from bs4 import.)
Why
axonsdk-pyinstead ofaxonsdk? Theaxon,axonpy, andaxon-sdknames on PyPI are held by unrelated projects, andaxonsdkis blocked by PyPI's name-similarity rule.axonsdk-pymirrors theaxonsdk-tsrepo naming convention (-pyfor Python,-tsfor TypeScript) while the import path staysimport axonunchanged.
from axon import AxonClient, AxonRouter, RoutingStrategy, DeploymentConfig, RuntimeType
config = DeploymentConfig(
name="my-inference-job",
entry_point="src/worker.py",
runtime=RuntimeType.PYTHON,
memory_mb=512,
timeout_ms=30_000,
replicas=1,
)
# Single provider
async with AxonClient(provider="ionet", secret_key="...") as client:
estimate = await client.estimate(config)
print(f"Estimated: {estimate.amount} {estimate.token}/hr")
deployment = await client.deploy(config)
await client.send(deployment.id, {"prompt": "Hello"})
# Multi-provider with automatic routing
async with AxonRouter(
providers=["ionet", "akash", "acurast"],
secret_key="...",
strategy=RoutingStrategy.LATENCY,
) as router:
deployment = await router.deploy(config)
await router.send({"prompt": "Hello"})axon init # interactive project setup
axon auth ionet # configure credentials
axon deploy # deploy your workload
axon status # list active deployments
axon send <id> <msg> # send a test message
axon teardown <id> # delete deployment and free resources| Command | Description |
|---|---|
axon init |
Interactive setup — generates axon.json, .env, and template files |
axon auth [provider] |
Credential wizard — generates and stores keys for the selected provider |
axon deploy |
Bundle and register your deployment |
axon run-local |
Run locally with a mock provider runtime |
axon status |
List deployments, processor IDs, and live status |
axon send <id> <msg> |
Send a test message to a processor node |
axon teardown <id> |
Delete a deployment and free provider resources |
axon template list |
Show available built-in templates |
Supported providers: ionet, akash, acurast, fluence, koii, aws, gcp, azure, cloudflare, flyio
AxonRouter routes requests across multiple providers simultaneously, picking the best one on every call based on real-time latency, cost, and availability.
from axon import AxonRouter, RoutingStrategy
async with AxonRouter(
providers=["ionet", "akash", "acurast", "aws", "gcp"],
secret_key="...",
strategy=RoutingStrategy.LATENCY,
failure_threshold=3,
recovery_timeout_ms=30_000,
max_retries=2,
) as router:
deployment = await router.deploy(config)
# Automatically picks the highest-scoring provider
await router.send({"prompt": "Hello"})
# Health snapshot
for h in await router.health():
print(h.provider, h.latency_ms, h.status)| Strategy | Best for |
|---|---|
LATENCY |
Interactive workloads — always picks the fastest provider |
AVAILABILITY |
High uptime — prefers the most reliable provider |
COST |
Batch jobs — routes to the cheapest option |
BALANCED |
General purpose — equal weight on availability, latency, cost |
ROUND_ROBIN |
Even load distribution |
axon[inference] is a drop-in replacement for the OpenAI API that routes requests to the fastest available backend. Switch your existing OpenAI integration in two lines:
import uvicorn
from axon.inference import AxonInferenceHandler
handler = AxonInferenceHandler(
secret_key="...",
ionet_endpoint="...",
akash_endpoint="...",
strategy="cost", # 'cost' | 'latency' | 'balanced'
)
uvicorn.run(handler.app, host="0.0.0.0", port=8000)Then point any OpenAI client at http://localhost:8000:
import openai
client = openai.OpenAI(
base_url="http://localhost:8000/v1",
api_key=AXON_SECRET_KEY,
)
response = client.chat.completions.create(
model="axon-llama-3-70b",
messages=[{"role": "user", "content": "Explain edge AI in one paragraph."}],
)| Model ID | Backend | Notes |
|---|---|---|
axon-llama-3-70b |
io.net | A100 GPU — best quality |
axon-mistral-7b |
io.net | GPU, most cost-efficient |
axon-llama-3-8b |
Akash | Container compute, moderate cost |
axon-tee-phi-3-mini |
Acurast | TEE node — private execution |
pip install axonsdk-py[aws]Set env vars (or use IAM role / ~/.aws/credentials):
export AWS_ACCESS_KEY_ID=...
export AWS_SECRET_ACCESS_KEY=...
export AWS_DEFAULT_REGION=us-east-1pip install axonsdk-py[gcp]export GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json
export GCP_PROJECT_ID=my-project
export GCP_REGION=us-central1pip install axonsdk-py[azure]export AZURE_TENANT_ID=...
export AZURE_CLIENT_ID=...
export AZURE_CLIENT_SECRET=...
export AZURE_SUBSCRIPTION_ID=...
export AZURE_RESOURCE_GROUP=my-rgexport CF_API_TOKEN=...
export CF_ACCOUNT_ID=...export FLY_API_TOKEN=... # flyctl auth token
export FLY_APP_NAME=... # flyctl apps create <name>- Secrets never leave
.env— the auth wizard generates keys locally and stores them withchmod 600. Never logged or transmitted. - SSRF protection — all HTTP calls validate URLs against a private-IP blocklist and enforce HTTPS.
- DNS rebinding defence — resolves hostnames to IPs before opening connections, then re-validates the IP.
- Prototype pollution prevention — remote JSON payloads are parsed with key blocklisting; environment maps use
Object.create(null). - Response size caps — all provider clients enforce a 1 MiB response cap; mock runtime enforces 4 MiB.
- Input validation —
processorIdand deployment names validated for control characters and path traversal sequences. - Secret filtering — environment variables with
_KEY,_SECRET,_TOKEN,_PASSWORD,_MNEMONIC, or_PRIVATE_KEYsuffixes are stripped before bundle injection.
axon/
├── src/
│ └── axon/
│ ├── providers/
│ │ ├── ionet.py # io.net GPU provider
│ │ ├── akash.py # Akash Network provider
│ │ ├── acurast.py # Acurast TEE provider
│ │ ├── fluence.py # Fluence serverless provider
│ │ ├── koii.py # Koii task node provider
│ │ ├── aws.py # AWS Lambda / ECS provider
│ │ ├── gcp.py # Google Cloud Run provider
│ │ ├── azure.py # Azure Container Instances provider
│ │ ├── cloudflare.py # Cloudflare Workers provider
│ │ └── fly.py # Fly.io Machines provider
│ ├── inference/ # OpenAI-compatible FastAPI server
│ ├── cli/ # axon CLI (Typer)
│ └── utils/ # retry, security helpers
└── tests/
└── providers/ # unit tests for all 10 providers
git clone https://github.com/deyzho/axonsdk.git
cd axon
pip install -e ".[all,dev]"
pytest
mypy src/Pull requests are welcome. See CONTRIBUTING.md to get started.
High-impact areas:
- Integration tests against live provider sandboxes
- Additional provider support
- Template library
This is the Python AxonSDK. If you're building with TypeScript / Node.js, React Native, or deploying via a CLI, see the companion repositories:
| Package | Description |
|---|---|
@axonsdk/sdk |
TypeScript SDK — same providers, same routing strategies |
@axonsdk/mobile |
React Native / Expo SDK for iOS & Android |
@axonsdk/cli |
CLI — axon init, axon deploy, axon status |
@axonsdk/inference |
OpenAI-compatible inference handler for Next.js |
axonsdk.dev — full documentation for the TypeScript ecosystem.
Apache-2.0 — see LICENSE.
axonsdk.dev · deyzho@me.com · Apache-2.0
AxonSDK is not affiliated with io.net, Akash Network, Acurast, Fluence, or Koii. Provider names and trademarks belong to their respective owners.