Zafeguard Developer Docs

Crypto workflows.
Threshold-MPC keys.
One platform.

100+ components across nine blockchains for visual workflow automation — paired with a client-side MPC SDK for self-custodial signing, and an OAuth 2.0 identity provider for end-user sign-in. Hosted, with the option to self-host every layer.

Two SDKs, one platform

Use them independently or together. The Caller SDK triggers workflows and components on the platform; the MPC SDK lets your application be one of the parties in a threshold-MPC ceremony.

@zafeguard/caller-sdk

Trigger workflows & components

WorkspaceClient and WorkflowClient for executing on-platform automation. Pick .execute() for webhook delivery or .promise() to block on the SSE stream — no polling.

import { WorkspaceClient, ComponentModule } from '@zafeguard/caller-sdk';

const workspace = new WorkspaceClient({
  apiKey: process.env.ZAFEGUARD_API_KEY!,
  apiSecret: process.env.ZAFEGUARD_API_SECRET!,
});

// Wait for typed result via SSE
const { balance } = await workspace
  .call(ComponentModule.GET_EVM_ACCOUNT_BALANCE, {
    jsonRpcUrl: 'https://eth-mainnet.g.alchemy.com/v2/KEY',
    tokenAddress: '0x0000000000000000000000000000000000000000',
    account: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045',
  })
  .promise();

@zafeguard/mpc-sdk

Hold an MPC share client-side

EmbeddedSigner for warm-cold wallets (device + N cloud agents at any threshold), or AgentCluster for raw cluster access. Native binaries on Node.js, WebAssembly everywhere else — same API across browser, Expo, Workers.

import { EmbeddedSigner, Curve, RecoveryKind } from '@zafeguard/mpc-sdk';

const signer = new EmbeddedSigner({
  agent: [{ baseUrl: 'https://node-1.example', apiKey: '...' }],
  threshold: 2,
  curve: Curve.Secp256k1,
});

const loaded = await signer.create({ signerId, recovery: { kind: RecoveryKind.Noop } });
const sig    = await loaded.sign({ messageHash });