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:

ValueUsed byWhere to put it
APP_TOKENAgent SDKs (backend)Bearer token sent to the relay as Authorization: Bearer …
APP_IDClient SDKs (Browser, iOS, Android, Telegram)Identifies your application to the relay during device registration
APP_SIGNING_SECRETClient SDKsUsed 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-sdk

Send 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.

SurfacePackageDocs
Web@noxy-network/browser-sdkBrowser SDK
iOSNoxySDK (Swift Package)iOS SDK
Androidnetwork.noxy:android-sdkAndroid SDK
Telegram bot@noxy-network/telegram-bot-sdkTelegram 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

  1. Open the client app on a phone or browser and let it register (one-time, automatic).
  2. Trigger the agent script — the decision arrives almost instantly.
  3. Approve or reject in the client. The agent's sendDecisionAndWaitForOutcome returns the outcome and you can branch your workflow.

Common next steps