Getting Started
Get Started
Send your first encrypted decision in under 10 minutes. Create an app, install one Agent SDK and one Client SDK, and route a test decision end-to-end.
1. Create your Noxy app
Go to Create App, sign in with your email, and create a new application. You receive three values from the dashboard:
| Value | Used by | Where to put it |
|---|---|---|
APP_TOKEN | Agent SDKs (backend) | Bearer token sent to the relay as Authorization: Bearer … |
APP_ID | Client SDKs (Browser, iOS, Android, Telegram) | Identifies your application to the relay during device registration |
APP_SIGNING_SECRET | Client SDKs | Used to HMAC the one-time device registration signature |
Keep them separate. APP_TOKEN stays on your backend. APP_ID and APP_SIGNING_SECRET are shipped with your client app. They are designed to be bundled with mobile and web clients without leaking the right to route decisions.
2. Install an Agent SDK
Choose the language your agent backend already uses:
# Node.js
npm install @noxy-network/node-sdk
# Python
pip install noxy-sdk
# Go
go get github.com/noxy-network/go-sdk
# Rust
cargo add noxy-sdkSend a decision (Node.js example)
import { initNoxyAgentClient, NoxyHumanDecisionOutcome } from '@noxy-network/node-sdk';
const client = await initNoxyAgentClient({
endpoint: 'https://relay.noxy.network',
authToken: process.env.NOXY_APP_TOKEN,
decisionTtlSeconds: 600,
});
const resolution = await client.sendDecisionAndWaitForOutcome(
'user@example.com',
{
kind: 'propose_tool_call',
tool: 'transfer_funds',
args: { to: '0x000…dEaD', amountWei: '1' },
title: 'Transfer 1 wei to the burn address',
summary: 'The agent wants to send 1 wei to the burn address.',
},
);
if (resolution.outcome === NoxyHumanDecisionOutcome.APPROVED) {
// Run the proposed action
} else {
// REJECTED or EXPIRED — do not run, branch to a fallback
}The agent SDKs share the same shape across languages — see the SDKs page for Python, Go, and Rust equivalents.
3. Install a Client SDK
Pick the surface where your users will see the decision. The Client SDK registers the user's device once, then receives, decrypts, and answers decisions.
| Surface | Package | Docs |
|---|---|---|
| Web | @noxy-network/browser-sdk | Browser SDK |
| iOS | NoxySDK (Swift Package) | iOS SDK |
| Android | network.noxy:android-sdk | Android SDK |
| Telegram bot | @noxy-network/telegram-bot-sdk | Telegram Bot SDK |
Receive a decision (Browser example)
import {
createNoxyClient,
NoxyDecisionOutcomeValues,
NOXY_IDENTITY_TYPE,
} from '@noxy-network/browser-sdk';
const noxy = await createNoxyClient({
identity: {
identityType: NOXY_IDENTITY_TYPE.EMAIL,
identityId: 'user@example.com',
},
network: {
relayNodesUrl: 'wss://relay.noxy.network',
appId: import.meta.env.VITE_NOXY_APP_ID,
appSigningSecret: import.meta.env.VITE_NOXY_APP_SIGNING_SECRET,
},
});
await noxy.on(async (decisionId, decision) => {
const approved = await showConfirmDialog(decision);
await noxy.submitDecisionOutcome({
decisionId,
outcome: approved
? NoxyDecisionOutcomeValues.APPROVE
: NoxyDecisionOutcomeValues.REJECT,
receivedAt: Date.now(),
});
});4. Run the loop
- Open the client app on a phone or browser and let it register (one-time, automatic).
- Trigger the agent script — the decision arrives almost instantly.
- Approve or reject in the client. The agent's
sendDecisionAndWaitForOutcomereturns the outcome and you can branch your workflow.
Common next steps
- Choose your identity type — wallet, email, phone, or your own user id.
- Tune TTL and polling for synchronous vs background flows.
- Read the security model before going to production.
- Production checklist for retries, idempotency, and observability.