[{"data":1,"prerenderedAt":348},["ShallowReactive",2],{"content-query-hpFdRNX9rp":3},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"summary":9,"competitorName":10,"dimensions":11,"body":44,"_type":342,"_id":343,"_source":344,"_file":345,"_stem":346,"_extension":347},"\u002Fcompare\u002Fwindmill","compare",false,"","FastYoke vs Windmill — Compare","Windmill turns scripts into workflows, schedules, and internal UIs — code-first orchestration you self-host. FastYoke is a declarative multi-tenant app platform with an FSM state model, RBAC, and audit. Honest, side-by-side.","Windmill",[12,16,20,24,28,32,36,40],{"label":13,"competitor":14,"fastyoke":15},"Primary use case","Developer platform that turns scripts (Python, TypeScript, Go, SQL, Bash) into workflows, schedules, and internal UIs — code-first orchestration.","Declarative multi-tenant application platform — an FSM state model with entities, RBAC, and audit, not a script orchestrator.",{"label":17,"competitor":18,"fastyoke":19},"Local runtime \u002F dev loop","Self-host locally via Docker Compose; a CLI syncs scripts and flows to your instance.","`npx fastyoke init` runs the light engine with no Docker — FSM, entities, forms, realtime, and the append-only log on a local SQLite file. Same wire contract as production.",{"label":21,"competitor":22,"fastyoke":23},"Self-host & deployment","Self-host the open-source edition via Docker; the enterprise edition adds autoscaling, dedicated and agent workers, and a staging-to-prod deployment UI.","A single Rust binary — air-gapped On-Prem with literally no outbound, or a managed multi-node cloud. The same engine and contract across all three.",{"label":25,"competitor":26,"fastyoke":27},"Multi-tenancy","Workspaces separate teams inside one instance (the free edition caps workspaces and users); isolation is logical within shared infrastructure.","Each tenant gets its own database file, isolated at the operating-system layer — mechanical isolation rather than shared-instance scoping.",{"label":29,"competitor":30,"fastyoke":31},"Permissions \u002F RBAC","Roles and workspace-level access controls; SSO, SAML, SCIM, and finer-grained governance are enterprise-gated.","A granular permission catalog with system and custom roles and an append-only role-change audit ledger — shipped on every tier.",{"label":33,"competitor":34,"fastyoke":35},"Audit","Audit logs are an enterprise-edition feature.","An append-only event ledger on every tier, plus ed25519 sealed-PDF evidence any auditor can verify at a public endpoint.",{"label":37,"competitor":38,"fastyoke":39},"Workflow primitive","Flows are DAGs of script steps — imperative code with retries and branches. Powerful and flexible, and as verifiable as the code inside each step.","A strict FSM — named states and guarded transitions you can render, diff, and reason about — with self-loops and an admin override, every firing recorded.",{"label":41,"competitor":42,"fastyoke":43},"Pricing \u002F license","Open-source edition is AGPL-3.0 and free to self-host (free-edition caps ~50 users \u002F 3 workspaces); Enterprise from $120\u002Fmo self-hosted, plus per-seat ($20 developer \u002F $10 operator) and per-worker compute. Per windmill.dev\u002Fpricing, August 2026.","Every app is free; you pay for the platform above a hard-capped free tier — metered by transitions, storage, and egress with a spend cap you set. Enterprise Platform covers air-gap and custom needs. Per fastyoke.io\u002Fpricing, August 2026.",{"type":45,"children":46,"toc":335},"root",[47,55,117,165,185],{"type":48,"tag":49,"props":50,"children":54},"element","hero",{"eyebrow":51,"tagline":52,"title":53},"Compare","Windmill turns scripts into workflows and internal UIs — code-first orchestration you self-host. FastYoke is a declarative multi-tenant app platform with an FSM state model, RBAC, and audit. Both are self-hostable and fast — different mental models.","FastYoke vs Windmill",[],{"type":48,"tag":56,"props":57,"children":60},"marketing-section",{"band":58,"max-width":59},"white","3xl",[61,73],{"type":48,"tag":62,"props":63,"children":69},"h2",{"className":64,"id":68},[65,66,67],"text-2xl","font-semibold","text-[var(--brand-text-primary)]","what-windmill-is-good-for",[70],{"type":71,"value":72},"text","What Windmill is good for",{"type":48,"tag":74,"props":75,"children":80},"ul",{"className":76},[77,78,79,67],"mt-6","space-y-4","text-sm",[81,83,95,96,106,107],{"type":71,"value":82},"\n  ",{"type":48,"tag":84,"props":85,"children":86},"li",{},[87,93],{"type":48,"tag":88,"props":89,"children":90},"strong",{},[91],{"type":71,"value":92},"Scripts as first-class citizens.",{"type":71,"value":94}," If your team thinks in Python, TypeScript, Go, or Bash, Windmill turns those scripts into scheduled jobs, flows, and internal UIs with very little ceremony. Code-first to the core.",{"type":71,"value":82},{"type":48,"tag":84,"props":97,"children":98},{},[99,104],{"type":48,"tag":88,"props":100,"children":101},{},[102],{"type":71,"value":103},"Open source and fast.",{"type":71,"value":105}," An AGPL-3.0 core written in Rust, free to self-host via Docker. You own the deployment and can read the engine.",{"type":71,"value":82},{"type":48,"tag":84,"props":108,"children":109},{},[110,115],{"type":48,"tag":88,"props":111,"children":112},{},[113],{"type":71,"value":114},"Imperative flexibility.",{"type":71,"value":116}," Flows are DAGs of arbitrary script steps with retries and branching — when your logic is genuinely procedural, that flexibility is exactly right.",{"type":48,"tag":56,"props":118,"children":120},{"band":119,"max-width":59},"gray",[121,128],{"type":48,"tag":62,"props":122,"children":125},{"className":123,"id":124},[65,66,67],"what-fastyoke-is-good-for",[126],{"type":71,"value":127},"What FastYoke is good for",{"type":48,"tag":74,"props":129,"children":131},{"className":130},[77,78,79,67],[132,133,143,144,154,155],{"type":71,"value":82},{"type":48,"tag":84,"props":134,"children":135},{},[136,141],{"type":48,"tag":88,"props":137,"children":138},{},[139],{"type":71,"value":140},"A declarative state model, not a script graph.",{"type":71,"value":142}," FastYoke's primitive is a strict finite state machine — named states, guarded transitions, self-loops, an admin override — that you can render, diff, and reason about. Windmill's flows are imperative DAGs; FastYoke's workflows are state machines with formal properties.",{"type":71,"value":82},{"type":48,"tag":84,"props":145,"children":146},{},[147,152],{"type":48,"tag":88,"props":148,"children":149},{},[150],{"type":71,"value":151},"Multi-tenant by architecture.",{"type":71,"value":153}," Every tenant gets its own database file, isolated at the OS layer. Windmill separates teams by workspace inside shared infrastructure; FastYoke's boundary is the storage engine itself.",{"type":71,"value":82},{"type":48,"tag":84,"props":156,"children":157},{},[158,163],{"type":48,"tag":88,"props":159,"children":160},{},[161],{"type":71,"value":162},"Governance on every tier.",{"type":71,"value":164}," A granular RBAC catalog with custom roles, a role-change audit log, and an append-only event ledger ship in the base product — where Windmill gates audit logs and enterprise SSO behind the paid edition.",{"type":48,"tag":56,"props":166,"children":168},{"band":58,"max-width":167},"6xl",[169,176],{"type":48,"tag":62,"props":170,"children":173},{"className":171,"id":172},[65,66,67],"head-to-head",[174],{"type":71,"value":175},"Head-to-head",{"type":48,"tag":177,"props":178,"children":182},"p",{"className":179},[180,79,181],"mt-3","text-[var(--brand-text-secondary)]",[183],{"type":71,"value":184},"\n  Eight dimensions that distinguish the two products. Verdicts are\n  one sentence each — read the rows, judge for yourself.\n",{"type":48,"tag":56,"props":186,"children":187},{"band":119,"max-width":59},[188,195,307],{"type":48,"tag":62,"props":189,"children":192},{"className":190,"id":191},[65,66,67],"when-to-choose-which",[193],{"type":71,"value":194},"When to choose which",{"type":48,"tag":196,"props":197,"children":202},"div",{"className":198},[77,199,200,201],"grid","gap-6","sm:grid-cols-2",[203,204,258,259],{"type":71,"value":82},{"type":48,"tag":196,"props":205,"children":206},{},[207,209,217,218,257],{"type":71,"value":208},"\n    ",{"type":48,"tag":210,"props":211,"children":214},"h3",{"className":212,"id":213},[66,67],"choose-windmill-when",[215],{"type":71,"value":216},"Choose Windmill when…",{"type":71,"value":208},{"type":48,"tag":74,"props":219,"children":224},{"className":220},[180,221,222,223,79,67],"list-disc","space-y-2","pl-5",[225,227,232,233,238,239,244,245,250,251,256],{"type":71,"value":226},"\n      ",{"type":48,"tag":84,"props":228,"children":229},{},[230],{"type":71,"value":231},"your logic is genuinely procedural and lives in scripts",{"type":71,"value":226},{"type":48,"tag":84,"props":234,"children":235},{},[236],{"type":71,"value":237},"a code-first DAG of steps fits how your team works",{"type":71,"value":226},{"type":48,"tag":84,"props":240,"children":241},{},[242],{"type":71,"value":243},"an AGPL-3.0 engine you can read and fork matters",{"type":71,"value":226},{"type":48,"tag":84,"props":246,"children":247},{},[248],{"type":71,"value":249},"you want to orchestrate jobs across many languages",{"type":71,"value":226},{"type":48,"tag":84,"props":252,"children":253},{},[254],{"type":71,"value":255},"workspace-level separation is enough isolation for you",{"type":71,"value":208},{"type":71,"value":82},{"type":71,"value":82},{"type":48,"tag":196,"props":260,"children":261},{},[262,263,270,271,306],{"type":71,"value":208},{"type":48,"tag":210,"props":264,"children":267},{"className":265,"id":266},[66,67],"choose-fastyoke-when",[268],{"type":71,"value":269},"Choose FastYoke when…",{"type":71,"value":208},{"type":48,"tag":74,"props":272,"children":274},{"className":273},[180,221,222,223,79,67],[275,276,281,282,287,288,293,294,299,300,305],{"type":71,"value":226},{"type":48,"tag":84,"props":277,"children":278},{},[279],{"type":71,"value":280},"your business logic is a lifecycle — states and transitions",{"type":71,"value":226},{"type":48,"tag":84,"props":283,"children":284},{},[285],{"type":71,"value":286},"you want a workflow you can render and verify, not just run",{"type":71,"value":226},{"type":48,"tag":84,"props":289,"children":290},{},[291],{"type":71,"value":292},"you're shipping a multi-tenant platform with mechanical isolation",{"type":71,"value":226},{"type":48,"tag":84,"props":295,"children":296},{},[297],{"type":71,"value":298},"RBAC and audit have to be present on every tier",{"type":71,"value":226},{"type":48,"tag":84,"props":301,"children":302},{},[303],{"type":71,"value":304},"you need the same engine from local dev to an air-gapped deployment",{"type":71,"value":208},{"type":71,"value":82},{"type":48,"tag":196,"props":308,"children":316},{"className":309},[310,311,312,313,314,315],"mt-10","flex","flex-wrap","items-center","justify-center","gap-3",[317,324],{"type":48,"tag":318,"props":319,"children":323},"signup-cta",{"location":320,"size":321,"variant":322},"compare-windmill-bottom","lg","primary",[],{"type":48,"tag":325,"props":326,"children":329},"cta-button",{"size":321,"to":327,"variant":328},"mailto:sales@fastyoke.io?subject=FastYoke%20vs%20Windmill","ghost",[330],{"type":48,"tag":177,"props":331,"children":332},{},[333],{"type":71,"value":334},"Talk to sales",{"title":7,"searchDepth":336,"depth":336,"links":337},2,[338,339,340,341],{"id":68,"depth":336,"text":72},{"id":124,"depth":336,"text":127},{"id":172,"depth":336,"text":175},{"id":191,"depth":336,"text":194},"markdown","content:compare:windmill.md","content","compare\u002Fwindmill.md","compare\u002Fwindmill","md",1787521287746]