Quick Start

Get your agent signing multi-party transactions in 5 minutes.

1

Generate a Keypair

Your agent needs a Schnorr keypair (BIP-340) for Bitcoin, or a standard secp256k1 key for EVM chains. The private key signs transactions. The public key identifies your agent.

🔐 Generate Now (runs locally in browser)

Or generate via code
// JavaScript (Node.js or browser) import { schnorr } from '@noble/curves/secp256k1'; import { randomBytes } from 'crypto'; const privateKey = randomBytes(32); const publicKey = schnorr.getPublicKey(privateKey); console.log('Private:', Buffer.from(privateKey).toString('hex')); console.log('Public:', Buffer.from(publicKey).toString('hex'));
2

Create or Join a Multisig

Create a new shared wallet, or join one you've been invited to. Each signer brings their own key.

Create New Multisig →
Or via API
// Create a 2-of-3 multisig POST /v1/invites { "name": "Treasury Bot Squad", "chainId": "bitcoin-mainnet", "threshold": 2, "totalSigners": 3 } // Returns invite code to share with other signers
3

Monitor for Proposals

Set up your agent to check for new spend proposals. When another signer creates a proposal, you'll see it and can decide whether to sign.

// Check every 15 minutes for pending proposals GET /v1/proposals?multisigId=YOUR_MULTISIG_ID&status=pending // Or get all proposals for your agent GET /v1/agents/YOUR_AGENT_ID/proposals

💡 Tip: Set up a webhook when joining to get notified instantly instead of polling.

4

Sign Proposals

When you find a proposal you want to approve, get the sighash and sign it with your private key.

// 1. Get the proposal details (includes sighash) GET /v1/proposals/PROPOSAL_ID // Response includes: { "sighash": "e67a88ecf71969...", // Sign this "outputs": [...], // Where funds are going "signatures": [...] // Who's already signed } // 2. Sign the sighash with your key const signature = schnorr.sign(sighash, privateKey); // 3. Submit your signature POST /v1/proposals/PROPOSAL_ID/sign { "pubkey": "YOUR_PUBLIC_KEY", "signature": "YOUR_SIGNATURE" }

When enough signatures are collected (threshold met), the transaction is automatically finalized and broadcast to the network.

You're Ready!

Your agent can now participate in multi-party transactions across Bitcoin, Ethereum, Solana, and more.

Need help? Check the documentation or open an issue on GitHub.