Skip to main content
Now in public beta

State machines, deployed

Define finite state machines in JSON, publish versioned definitions, spin up instances via API, and watch state transitions in real-time. Zero servers. Edge-native. Usage-metered.

// 1. Define a machine
const sdk = new OrcheateClient({ apiKey: 'orch_...' });

const machine = await sdk.machines.publish({
  slug: 'order-flow',
  definition: {
    initial: 'pending',
    states: {
      pending:  { on: { CONFIRM: 'confirmed', CANCEL: 'cancelled' } },
      confirmed: { on: { SHIP: 'shipped' } },
      shipped:  { on: { DELIVER: 'delivered' } },
      delivered: { type: 'final' },
      cancelled: { type: 'final' },
    }
  }
});

// 2. Create an instance
const instance = await sdk.instances.create({ machineSlug: 'order-flow' });

// 3. Send events
await sdk.instances.send(instance.id, { type: 'CONFIRM' });

// 4. Subscribe to live state
sdk.instances.subscribe(instance.id, (state) => {
  console.log('Current state:', state.value);  // 'confirmed'
});

Everything a state machine needs

โšก

Edge-native runtime

Each instance runs as a Cloudflare Durable Object. Sub-millisecond event processing, globally consistent state.

๐Ÿ”„

Versioned definitions

Publish new machine versions without breaking running instances. Each instance pins to its published version.

๐Ÿ”

Live inspector

Subscribe to state transitions via WebSocket. Watch your machines run in real-time from the console.

๐Ÿ“Š

Usage analytics

Per-org dashboards for transitions, active instances, and API call volume โ€” all from Analytics Engine.

๐Ÿ”‘

API-key + JWT issuance

Issue scoped API keys for your team and Ed25519-signed end-user JWTs for embedding runtime in your app.

๐Ÿข

Team collaboration

Org-level access with owner/admin/editor/viewer roles. Invite teammates, manage permissions.

Ready to orchestate?

Free tier includes 100 instances and 10,000 transitions per month. No credit card required.

Create your free account