Overview

Zafeguard — visual crypto workflow automation with 80+ blockchain components, MPC key security, and real-time execution streaming.

Overview

Zafeguard is a crypto workflow automation platform that lets you build, automate, and scale on-chain operations without writing infrastructure code.

Design multi-step workflows on a visual canvas — connect blockchain protocols, APIs, and smart contracts with typed ports. Execute them on-demand via API, on a schedule, or triggered by a webhook.


What can you build?

Use caseKey components
Token swap automationGET_UNISWAP_SWAP_QUOTEBUILD_EVM_UNISWAP_SWAP_CALLDATABROADCAST_EVM_TRANSACTION
Safe treasury managementBUILD_EVM_GNOSIS_SAFE_DEPLOYMENT_CALLDATABUILD_EVM_GNOSIS_SAFE_SIGNATURESIGN_WITH_KEY_SHARE
On-chain data pipelinesREAD_EVM_CONTRACTDECODE_EVM_FUNCTION_RESULTAPI_CALL
Key generation workflowsGENERATE_KEY_SHARECOMPUTE_PUBLIC_KEYCOMPUTE_EVM_ADDRESS
Multi-chain batch processingFOR_EACHBUILD_EVM_TRANSACTIONSIGN_EVM_TRANSACTION

How it works

       Trigger   (API call · webhook · schedule)
                          |
                          v
+-------------------------------------------------------+
| Workflow Engine                                       |
|                                                       |
|   Component A  ->  Component B  ->  Component C       |
|        |                                              |
|        +-->  FOR_EACH  ->  Component D  ×N            |
+-------------------------------------------------------+
                          |
                          v
       Result + stage-by-stage breakdown (SSE stream)
  1. Define — drag components onto a canvas, connect ports, configure parameters.
  2. Trigger — call POST /v1/sdk/workflows with your workflow API key.
  3. Stream — subscribe to GET /v1/sdk/workflows/executions/:id/stream for live status.
  4. Inspect — view every stage's output, credit usage, and execution time.

Key concepts

Components

Self-contained executable units. Each component has typed inputs, typed outputs, and optional config fields. Components communicate results downstream via typed data connections.

Browse the component library

Workflows

Directed graphs of components connected by sequence edges (control flow) and data connections (typed values). The workflow engine executes the DAG, handling parallelism and iteration automatically.

Workspace

Your isolated tenant. Holds workflows, environment variables, members, an API key, and a credit balance. All API calls are scoped to a workspace.

Credits

The unit of consumption. Each component reports its credit cost (billing.amount). Credits are deducted after a run finalizes. Unused plan credits reset on a schedule.

→ See plan and rate-limit docs for details.


Getting started in 5 minutes

1. Get your API key

Go to Dashboard → Workspace → Settings → API Key and copy your workspace API key.

2. Execute a component

The easiest way is via the TypeScript SDK — pass your API key once and it injects the right header on every request:

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

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

const result = await workspace.call(ComponentModule.RANDOM_UUID, {}).promise();
console.log(result.uuid); // "a4c2e8f1-39b0-4d7a-83c6-1b5f2e9d0c77"

Direct REST calls require three headers: your API key, a Unix timestamp (X-Sdk-Timestamp), and an Ed25519 signature (X-Sdk-Signature) — see Authentication → for the signing implementation. The TypeScript SDK does not require signing.

Without waitForMs, POST /v1/sdk/components returns immediately with status: "CREATED" — the component runs asynchronously. Use .promise() (SSE-backed) or poll GET /executions/:id to retrieve the result.

3. Execute a workflow

const res = await fetch('https://api.zafeguard.com/v1/sdk/workflows/<workflowId>', {
  method: 'POST',
  headers: {
    'X-Api-Key': process.env.ZAFEGUARD_API_KEY!,
    'X-Sdk-Timestamp': String(Math.floor(Date.now() / 1000)),
    // X-Sdk-Signature: <Ed25519 signature> — see Authentication docs
  },
});
// The response is an array — one entry per ON_API_CALLED component on the workflow.
// Workflows usually have exactly one, so destructure [0].
const [{ runId }] = await res.json();

4. Stream the run status

const source = new EventSource(
  `https://api.zafeguard.com/v1/sdk/workflows/executions/${runId}/stream`,
  { headers: { 'X-Api-Key': process.env.ZAFEGUARD_API_KEY! } },
);
source.onmessage = (e) => {
  const update = JSON.parse(e.data);
  if (update.status === 'COMPLETED' || update.status === 'FAILED') source.close();
};
data: {"id":"9e4c...","status":"EXECUTING","output":{"pendingStageCount":3}}
data: {"id":"9e4c...","status":"EXECUTING","output":{"pendingStageCount":2}}
data: {"id":"9e4c...","status":"COMPLETED","output":{"totalUsage":14}}

Plans

PlanMonthly creditsRate limitUsage limit
Starter0 (pay-as-you-go)5 req/s
Growth200 / month10 req/s500 / month
Professional1,000 / month25 req/s2,500 / month
EnterpriseCustomCustomCustom
  • Rate limits are always enforced regardless of credit balance.
  • Usage limits gate only when your credit balance is zero — paid credits are unlimited.
  • Credits reset weekly (soft) and monthly (hard).

Next steps

SDK Quickstart → Execute components and workflows from code with @zafeguard/caller-sdk.

MPC SDK → Run threshold-MPC ceremonies client-side with @zafeguard/mpc-sdk — for embedded wallets and institutional custody.

Authentication → API keys, scopes, and signing.

Streaming → Real-time SSE status updates.

Component Library → All 80+ components with schemas.

On this page