Get Started

Start building with Noxy in three simple steps. Create your app, send decision requests from your agent, route them to users, and execute based on their response.

01 Create & Fund Your App

Create & Fund Your App

Visit the Fund App page to create your app and fund it to get your unique API token.

02 Setup Backend SDK

Integrate Agent SDK

Install the Agent SDK (Node.js, Python, Go, or Rust) in your backend or agent system.

03 Integrate Frontend SDK

Integrate Client SDK

Add the Client SDK to your app (web, mobile, or bot).

Get Your API Token

Get Your API Token First

Before integrating any SDK, you must create and fund your app to receive your API token. This token is required for all agent SDKs to send decision requests.

Create & Fund App
Send
Agent SDKs For sending decision requests from your agent system
Receive
Client SDKs For subscribing and receiving decision requests in your app
How It Works
  • 1

    Agent Triggers Decision Request

    Your agent detects a condition and proposes an action.

  • 2

    Noxy Routes the E2E Decision Request

    Noxy delivers the request across channels: push, bot, other channels.

  • 3

    User Approves or Rejects

    User receives a clear, actionable request: Approve → action proceeds, Reject → action is canceled.

  • 4

    Response Returns to Agent

    The decision is sent back instantly to your agent, signed and verified.

  • 5

    Agent Executes Based on Outcome

    Your agent executes action (if approved) or cancels/fallbacks (if rejected or timed out).

Example Integration

Agent (Node.js) - Sends decision requests

        const noxy = await initNoxyClient({
          endpoint: 'https://relay.noxy.network',
          authToken: '__your-api-token__',
          notificationTtlSeconds: 86400,
        });

        const proposedAction = {
          kind: 'propose_tool_call',
          tool: 'transfer_funds',
          args: { to: '__your-burn-address__', amountWei: '1' },
          title: 'Transfer 1 wei to the burn address',
          summary: 'The agent is requesting approval to send 1 wei to the burn address.',
        };

        const resolution = await noxy.sendDecisionAndWaitForOutcome(__your-wallet-address__, proposedAction, {
          maxWaitMs: 5 * 60 * 1000,
        });
        if (resolution?.outcome === NoxyHumanDecisionOutcome.APPROVED) {
          // your agent should proceed the action
        } else {
          // your agent should abort the action
        }
      
Client (Browser) - Receives decision requests

        const noxy = await createNoxyClient({
          identity: {
            type: 'eoa',
            address: account.address,
            signer: async (data) =>
              account.signMessage({ message: { raw: data } }),
          },
          network: {
            relayNodesUrl: 'wss://relay.noxy.network',
            appId: '__your-app-id__',
          },
        });

        await noxy.on(async (decisionId, decision) => {
          // show actionable decision requests in the UI
          const isApproved = await showConfirmDialog(decision);

          // send decision outcome to Noxy, which will be orchestrated to your agent
          await noxy.submitDecisionOutcome({
            decisionId,
            outcome: isApproved ? NoxyDecisionOutcomeValues.APPROVE : NoxyDecisionOutcomeValues.REJECT,
            receivedAt: Date.now(),
          });
        });