Frameworks
Nitro
Configure Workflow Studio with Nitro
Overview
This guide configures Workflow Studio for Nitro applications.
Two settings control behavior:
execution.modecontrols local vs remote execution.- adapter
modecontrols ingress behavior (passthroughorproxy-trigger).
Mode matrix
| execution.mode | adapter mode | Behavior |
|---|---|---|
remote | passthrough | Standard start(...) routes remain unchanged; execution runs on remote compute worker with production reroute env. |
remote | proxy-trigger | Remote execution plus optional app-host proxy routes for trigger/webhook ingress. |
local | passthrough | Local/default execution behavior. |
local | proxy-trigger | Local execution with optional proxy ingress routes. |
Default remote setup
import { defineNitroConfig } from 'nitropack/config';
import { withWorkflowStudioNitro } from 'workflow-studio/nitro';
export default await withWorkflowStudioNitro(defineNitroConfig({}), {
execution: { mode: 'remote' },
mode: 'passthrough',
});Set production reroute in deployment environment:
WORKFLOW_TARGET_WORLD=workflow-studio/world-remoteOptional proxy-trigger routes
import { defineNitroConfig } from 'nitropack/config';
import { withWorkflowStudioNitro } from 'workflow-studio/nitro';
export default await withWorkflowStudioNitro(defineNitroConfig({}), {
execution: { mode: 'remote' },
mode: 'proxy-trigger',
});import { proxyTriggerFromNitro } from 'workflow-studio/nitro';
export default defineEventHandler(async (event) => {
const body = await readBody(event);
return await proxyTriggerFromNitro({
payload: {
workflowName: 'send-email',
input: { userId: body.userId },
},
});
});import { proxyWebhookFromNitro } from 'workflow-studio/nitro';
import { getHeaders, getRouterParam, readRawBody } from 'h3';
export default defineEventHandler(async (event) => {
const provider = getRouterParam(event, 'provider');
const rawBody = await readRawBody(event, false);
const body =
typeof rawBody === 'string'
? new TextEncoder().encode(rawBody)
: new Uint8Array(rawBody ?? []);
return await proxyWebhookFromNitro({
provider: provider!,
body,
headers: getHeaders(event),
});
});Required production settings
WORKFLOW_TARGET_WORLD=workflow-studio/world-remoteWORKFLOW_COMPUTE_BASE_URLWORKFLOW_COMPUTE_API_KEY