Skip to content
Switchboard
Quickstart

Integrate once. Ship to fifty chains.

Five steps from empty project to a cross-chain read and write. Use the TypeScript SDK or the signed HTTPS API — both feed the same Core Engine. Prefer to run it yourself? The whole stack comes up with npm run docker:up.

  1. 1

    Install the SDK

    Add the TypeScript SDK to your project. It talks to the same Core Engine as the REST API, so anything you can do over HTTPS you can do from code.

    npm install @switchboard/sdk
    # or self-host the whole stack:
    git clone https://github.com/cryptuon/switchboard
    cd switchboard && npm run docker:up
    # Customer API on :3000, Core Engine on :3001
  2. 2

    Authenticate

    Create a client with your API key. The Customer API gateway handles auth, rate limiting, and request proxying; you never talk to chains directly.

    import { Switchboard } from '@switchboard/sdk';
    
    const sb = new Switchboard({
      apiKey: process.env.SWITCHBOARD_API_KEY,
      // point at the managed gateway, or your own :3000 when self-hosting
      endpoint: 'https://switchboard.cryptuon.com',
    });
  3. 3

    Read cross-chain state

    Issue one read against the coordinator’s finality clock. The same call covers every supported chain — adding a chain does not add integration code.

    // Read canonical state from any supported chain through one call.
    const state = await sb.read({
      chain: 'ethereum',
      contract: '0xA0b8…9F21',
      key: 'totalLiquidity',
    });
    
    console.log(state.value, state.finalizedAt);
  4. 4

    Write across chains

    Commit once to the Solana coordinator and fan out to every destination. A competing relayer pool races each destination transaction inside the 400ms budget.

    // Commit once, ship to many — p99 under 400ms.
    const receipt = await sb.write({
      from: 'ethereum',
      to: ['solana', 'arbitrum', 'base', 'sui'],
      payload: order,                 // arbitrary opaque bytes
      verifier: 'auto',               // light-client / BLS / zk per chain
      finalityPolicy: 'fail-closed',  // fail-open | fail-closed | fallback
    });
    
    console.log(receipt.routeId, receipt.p99Ms);
  5. 5

    Deploy and observe

    Ship it. On the managed service you get relayer ops, signing infrastructure, and observability out of the box; self-hosted, you run relayers and configure signers yourself.

    # managed: nothing more to run — the gateway is live.
    # self-hosted: bring up both services and point at your DB
    DATABASE_TYPE=postgresql npm run docker:up
    # then watch route p50/p99 per chain in the observability stack

Want the full picture first?

Read the architecture deep dive for the message lifecycle and verifier model, browse use cases, or skim the FAQ.