Cloud Features

Optional cloud features that extend your local-first workflows with managed infrastructure.

Cloud features are completely optional. RelayPlane works fully offline by default. Enable cloud features only when you need them.

Why Cloud?

While RelayPlane is designed for local-first execution, some use cases benefit from managed cloud services:

  • Webhooks - Trigger workflows from external services without running your own server
  • Scheduled Execution - Run workflows on a schedule without managing cron jobs
  • KV Store - Share state between workflow runs without managing a database
  • Telemetry - Track usage, costs, and performance without building dashboards

Enabling Cloud Features

Enable cloud features by configuring the SDK with your access token:

1import { relay } from "@relayplane/sdk";
2
3// Enable cloud features
4relay.configure({
5 cloud: {
6 enabled: true,
7 accessToken: process.env.RELAYPLANE_ACCESS_TOKEN,
8 }
9});
10
11// Now you can use cloud features
12await relay.workflow("my-workflow")
13 .webhook("/api/process") // Webhook trigger
14 .schedule("0 9 * * *") // Cron schedule
15 .step("process")
16 .with("openai:gpt-4o")
17 .run(input);

Getting Access

Get your access token from the RelayPlane dashboard:

1# Login to get your access token
2npx relay login
3
4# Or set it directly
5export RELAYPLANE_ACCESS_TOKEN=your_token_here

Available Features

Webhooks →

Trigger workflows via HTTP endpoints. Connect to GitHub, Stripe, Slack, or any service that supports webhooks.

Scheduled Execution →

Run workflows on a schedule using cron expressions. Daily reports, weekly summaries, hourly data sync.

KV Store →

Persistent key-value storage with TTL support. Cache results, store configuration, share state between runs.

Telemetry →

Track token usage, latency, and costs. Monitor workflow performance with built-in dashboards.

Local vs Cloud Execution

FeatureLocalCloud
Workflow execution
Multi-provider support
Retry logic
Webhooks
Scheduled execution
KV Store
Telemetry dashboard

Ready to get started? Set up your first webhook →