Frameworks

Nitro

Using Workflow Studio with Nitro

Overview

Workflow Studio supports Nitro applications with a config wrapper and server-side proxy helpers.

Configuration

nitro.config.ts
import { defineNitroConfig } from 'nitropack/config';
import { withWorkflowStudioNitro } from 'workflow-studio/nitro';

export default await withWorkflowStudioNitro(
  defineNitroConfig({}),
  {
    execution: { mode: 'remote' },
    mode: 'proxy-trigger',
  }
);

Configuration is placed under runtimeConfig.workflowStudio for server-side access:

{
  runtimeConfig: {
    workflowStudio: {
      WORKFLOW_COMPUTE_BASE_URL: "...",
      WORKFLOW_TARGET_WORLD: "workflow-studio/world-remote",
    }
  }
}

Server Helpers

Use these helpers in server routes:

server/api/workflow.post.ts
import { proxyTriggerFromNitro } from 'workflow-studio/nitro';

export default defineEventHandler(async (event) => {
  const body = await readBody(event);
  
  const result = await proxyTriggerFromNitro({
    payload: {
      workflowName: 'send-email',
      input: { userId: body.userId },
    },
  });
  
  return result;
});

Webhook Proxy

Forward webhooks to the remote worker:

server/api/webhooks/[provider].post.ts
import { proxyWebhookFromNitro } from 'workflow-studio/nitro';

export default defineEventHandler(async (event) => {
  const provider = getRouterParam(event, 'provider');
  const body = new Uint8Array(await readRawBody(event));
  
  return await proxyWebhookFromNitro({
    provider: provider!,
    body,
    headers: Object.fromEntries(event.headers.entries()),
  });
});

Production Checklist

  • Set WORKFLOW_TARGET_WORLD=workflow-studio/world-remote in deployment env
  • Configure WORKFLOW_COMPUTE_BASE_URL for worker URL
  • Configure WORKFLOW_COMPUTE_API_KEY for authentication
  • Run validate-ownership CLI check before first deployment