Waiflo is a versionable JSON standard for multi-step AI workflows — with a visual editor, a REST API, and zero vendor lock-in. Ship AI features faster without losing control.
Define steps, wire them together, run the whole thing with a single API call. Every workflow is a plain .waiflo.json file you can commit, review, and deploy like any other artifact.
{ "lang_name": "support_triage", "steps": [ { "ws_name": "classify_ticket", "ws_type": "prompt", "ws_llm": { "provider": "anthropic", "model": "claude-sonnet-4-20250514", "temperature": 0 }, "ws_system_prompt": "You are a support triage expert. Classify tickets with high precision.", "ws_inputs_schema": { "required": ["ticket_body"], "properties": { "ticket_body": { "type": "string" } } }, "ws_output_schema": { "properties": { "priority": { "type": "string" }, "category": { "type": "string" } } } }, { "ws_name": "enrich_customer", "ws_type": "api", "ws_api": { "method": "GET", "url": "https://crm.internal/customers/" } }, { "ws_name": "draft_response", "ws_type": "prompt", "ws_llm": { "provider": "anthropic", "model": "claude-sonnet-4-20250514", "temperature": 0.3 } } ], "workflows": [ { "wf_name": "triage_and_respond", "wf_nodes": [...] } ] }
Three primitives. No magic, no hidden state, no framework to learn.
prompt, api, transform, tool, script), typed input/output schemas, and its full configuration. Reusable across pipelines.wf_nodes and depends_on. The runtime resolves execution order. You define the intent.POST /api/exec/step call with inputs. SSE streaming for prompt steps. JSON response for API steps. Your backend stays in control — Waiflo is the engine, not the owner.Every other approach forces a trade-off. Waiflo doesn't.
git diff your pipelinesPATCH endpoints use recursive deep merge — only the fields you send are updated. Built for autosave, inline editors, and AI-assisted pipeline builders that need to modify one field without touching the rest.
{ "ws_name": "classify", "ws_llm": { "provider": "anthropic", "model": "claude-sonnet", "temperature": 0 }, "ws_system_prompt": "You are an expert…" }
{ "workflow_name": "triage", "ws_name": "classify", "patch": { "ws_llm": { "temperature": 0.4 } } }
{ "ws_name": "classify", "ws_llm": { "provider": "anthropic", ✓ "model": "claude-sonnet", ✓ "temperature": 0.4 ← patched }, "ws_system_prompt": "You are…" ✓ }
Each step has a ws_type that determines runtime behavior, required fields, and execution semantics.
{{var}} template, typed output schema. Streams via SSE.{{input}} substitution. Returns parsed JSON or raw text.ws_tools array.Self-host with Docker. Zero external services — just a JWT secret and your Anthropic key.
Visual editor included. No signup to explore. Your API keys never leave your infrastructure.