SDKs
SDKs Overview
Two families: Agent SDKs route encrypted decisions from your backend, and Client SDKs receive them on user-facing surfaces. Pick one of each.
Connectors
Already building with LangGraph or LangChain? Skip the boilerplate — the connectors wrap the Python Agent SDK as a graph node or HITL middleware so your agent pauses on interrupt(), fans the approval out to every registered device, and resumes from a webhook.
LangGraph Connector
noxy-langgraph — drop-in HITL node for any LangGraph state graph.
LangChain Connector
noxy-langchain — HITL middleware for create_agent tool calls.
Prefer to wire decisions yourself? Pick an Agent SDK below and call send_decision directly.
Agent SDKs
Agent SDKs live on your server. They wrap the relay's Agent API with idiomatic types, perform the per-device post-quantum encryption locally, and provide a one-call sendDecisionAndWaitForOutcome helper.
Node.js SDK
@noxy-network/node-sdk — Node 22+, ESM. Server agents and serverless functions.
Python SDK
noxy-sdk on PyPI — Python 3.10+. LangChain, LlamaIndex, custom orchestrators.
Go SDK
github.com/noxy-network/go-sdk — Go 1.21+, CGO for the PQ primitives.
Rust SDK
noxy-sdk on crates.io — Tokio async runtime.
All Agent SDKs share the same surface:
| Method | Purpose |
|---|---|
initNoxyAgentClient(config) | Construct the client. Loads the post-quantum primitives. |
sendDecision(identityId, payload) | Route an encrypted decision to every device of the identity. |
getDecisionOutcome({decisionId, identityId}) | Single outcome poll. |
waitForDecisionOutcome(options) | Backoff loop until terminal or timeout. |
sendDecisionAndWaitForOutcome(identityId, payload, options?) | Convenience — send + wait in one call. |
getQuota() | Current quota for your application. |
Client SDKs
Client SDKs live on user-facing surfaces. They register a device once with the relay using your APP_SIGNING_SECRET, then receive encrypted decisions on an open stream and submit outcomes back.
Browser SDK
@noxy-network/browser-sdk — WebSocket transport, IndexedDB + Web Crypto storage.
iOS SDK
Swift Package — gRPC + Keychain storage. Optional APNs wake-up.
Android SDK
Kotlin / Android 7.0+ — gRPC + EncryptedSharedPreferences. Optional FCM wake-up.
Telegram Bot SDK
@noxy-network/telegram-bot-sdk — Node 18+, pairs with GrammY / Telegraf.
All Client SDKs share the same shape:
| Method | Purpose |
|---|---|
createNoxyClient(options) / initialize() | Load or create the device, connect, authenticate. |
on(handler) | Receive decrypted decisions; handler decides UI. |
submitDecisionOutcome / sendDecisionOutcome | Publish APPROVE or REJECT for a decision id. |
rotateKeys() | Generate fresh device keys, publish new public keys. |
revokeDevice() | Remove the device from the relay. |
close() | Disconnect cleanly. |
Example projects
- Liquidation Sentinel Agent — 24/7 Aave v3 health-factor watchdog. When your position drifts into danger, Anthropic drafts a rescue plan and Noxy asks you to approve before any repay or supply transaction is broadcast.
- Yield Rebalancer Agent — Cross-protocol lending yield scanner. It compares net APY after gas and friction, then routes a rebalance proposal through Noxy and only moves funds on-chain after you approve.
Picking the right pair
| If your agent is in… | And your users are on… | Recommended pair |
|---|---|---|
| Node.js / TypeScript | Web | Node.js SDK + Browser SDK |
| Python | iOS / Android | Python SDK + iOS SDK / Android SDK |
| Go / Rust | Telegram | Go SDK or Rust SDK + Telegram Bot SDK |
| Anything | Multiple surfaces | Any Agent SDK; install Client SDKs on each surface — outcomes are unified per identity. |