How Windmill’s scores are calculated
The full audit trail, recomputed from the verdict data at build time through the same code that produced the leaderboard: verdict × quality × story weight per cell, cells sum to dimension scores, dimensions blend into the PA Score. Every number on the product page is reproducible from this page alone; for why the formula looks like this, see the methodology.
verdict factors: full ×1.0 · partial ×0.6 · disputed ×0.3 · none ×0.0 · n/a excluded from both sides · cell points = weight × quality × factor · cell max = weight × 10
PA Score42/100
Agent-ready 45.8 × 0.30 = 13.74
API quality 0.0 × 0.20 = 0.00
Openness 59.0 × 0.20 = 11.80
Built-in AI 43.1 × 0.15 = 6.46
Automation 64.5 × 0.15 = 9.67
(13.74 + 0.00 + 11.80 + 6.46 + 9.67) ÷ (0.30 + 0.20 + 0.20 + 0.15 + 0.15) = 41.68 ÷ 1.00 = 41.7
Scores are stored to 1 decimal; the product page’s pills round to whole numbers for display. Each dimension below shows the stories, verdicts, and cited evidence behind its number.
Agent-ready45.8/100×0.30 of the PA blend
Outside-in: can YOUR agent reach and drive this product — API, MCP, CLI, headless runs, agent docs.
Point an agent at llms.txt or agent-oriented docsweight 2
2 (weight) × 9 (quality) × 1.0 (full) = 18.0 of 20 max
- [probe] https://www.windmill.dev/llms.txt“PROBE llms.txt: HTTP 200 at https://www.windmill.dev/llms.txt # Windmill > Windmill is an open-source and self-hostable workflow engine and developer platform to build, orchestrate,”
- [probe] https://www.windmill.dev/docs/intro.md“PROBE docs-md: HTTP 200 at https://www.windmill.dev/docs/intro.md # What is Windmill? > What is Windmill? An open-source workflow engine and developer platform to build endpoints, workf”
Run the product headlessly / in CI for automationweight 2
2 (weight) × 8 (quality) × 1.0 (full) = 16.0 of 20 max
- [claimed-docs] https://www.windmill.dev/docs/advanced/cli.md“The Windmill CLI, `wmill` allows you to interact with Windmill instances right from your terminal.”
- [claimed-docs] https://www.windmill.dev/docs/advanced/git_sync.md“Each time an item is deployed, Windmill will create and push a commit to the specified repository. ... Windmill can automatically deploy new commits from the repository into the workspace”
- [claimed-docs] https://www.windmill.dev/docs/triggers.md“How do I trigger scripts and flows in Windmill? Use schedules, webhooks, emails, HTTP routes, websockets, Kafka, Postgres, NATS, SQS, MQTT, GCP, Azure Event Grid and more.”
- [claimed-docs] https://www.windmill.dev/docs/core_concepts/webhooks.md“Flows additionally expose version-pinned webhook endpoints that target a specific flow version by its numeric version ID instead of the latest deployment.”
- [claimed-docs] https://www.windmill.dev/docs/advanced/self_host.md“For small setups, use Docker and Docker Compose on a single instance. For larger and production use-cases, use our Helm chart to deploy on Kubernetes.”
- [probe] https://www.windmill.dev/docs/advanced/cli“official CLI documented at https://www.windmill.dev/docs/advanced/cli”
Plug MCP servers into this product so it can use their toolsweight 3
3 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 30 max
- [claimed-docs] https://www.windmill.dev/docs/core_concepts/mcp.md“With MCP, you can connect your favorite LLMs (like Claude, Cursor, or any MCP compatible client) to Windmill, allowing you to trigger your scripts and flows from your client chat.”
- [probe] https://www.windmill.dev/docs/core_concepts/mcp“official MCP server documented at https://www.windmill.dev/docs/core_concepts/mcp”
- [claimed-docs] https://www.windmill.dev/docs/core_concepts/ai_agents.md“AI Agents steps allow you to integrate AI agents directly into your Windmill flows. They provide an interface to connect with various AI providers and models”
Connect an agent via an official MCP serverweight 3
3 (weight) × 8 (quality) × 1.0 (full) = 24.0 of 30 max
- [claimed-docs] https://www.windmill.dev/docs/core_concepts/mcp.md“With MCP, you can connect your favorite LLMs (like Claude, Cursor, or any MCP compatible client) to Windmill, allowing you to trigger your scripts and flows from your client chat.”
- [probe] https://www.windmill.dev/docs/core_concepts/mcp“official MCP server documented at https://www.windmill.dev/docs/core_concepts/mcp”
Use an official CLIweight 2
2 (weight) × 8 (quality) × 1.0 (full) = 16.0 of 20 max
- [claimed-docs] https://www.windmill.dev/docs/advanced/cli.md“The Windmill CLI, `wmill` allows you to interact with Windmill instances right from your terminal.”
- [claimed-docs] https://www.windmill.dev/docs/advanced/git_sync.md“Each time an item is deployed, Windmill will create and push a commit to the specified repository. ... Windmill can automatically deploy new commits from the repository into the workspace”
- [probe] https://www.windmill.dev/docs/advanced/cli“official CLI documented at https://www.windmill.dev/docs/advanced/cli”
Drive the product through a documented public APIweight 3
3 (weight) × 5 (quality) × 0.6 (partial) = 9.0 of 30 max
- [claimed-docs] https://www.windmill.dev/docs/advanced/cli.md“The Windmill CLI, `wmill` allows you to interact with Windmill instances right from your terminal.”
- [claimed-docs] https://www.windmill.dev/docs/triggers.md“How do I trigger scripts and flows in Windmill? Use schedules, webhooks, emails, HTTP routes, websockets, Kafka, Postgres, NATS, SQS, MQTT, GCP, Azure Event Grid and more.”
- [claimed-docs] https://www.windmill.dev/docs/core_concepts/webhooks.md“Flows additionally expose version-pinned webhook endpoints that target a specific flow version by its numeric version ID instead of the latest deployment.”
- [claimed-docs] https://www.windmill.dev/docs/core_concepts/mcp.md“With MCP, you can connect your favorite LLMs (like Claude, Cursor, or any MCP compatible client) to Windmill, allowing you to trigger your scripts and flows from your client chat.”
- [probe] https://www.windmill.dev/openapi.json“PROBE openapi: all candidate paths 404 (https://www.windmill.dev/openapi.json, https://www.windmill.dev/swagger.json, https://www.windmill.dev/api/openapi.json, https://www.windmill.dev/.well-known/openapi.json)”
- [probe] https://www.windmill.dev/docs/core_concepts/mcp“official MCP server documented at https://www.windmill.dev/docs/core_concepts/mcp”
- [probe] https://www.windmill.dev/docs/advanced/cli“official CLI documented at https://www.windmill.dev/docs/advanced/cli”
Issue scoped/least-privilege API credentials for an agentweight 2
2 (weight) × 6 (quality) × 0.6 (partial) = 7.2 of 20 max
- [claimed-docs] https://www.windmill.dev/docs/core_concepts/user_tokens.md“Tokens can be scoped to restrict access to specific resources and actions, following the principle of least privilege.”
- [claimed-docs] https://www.windmill.dev/docs/core_concepts/roles_and_permissions.md“Windmill provides a roles and permissions system that allows you to control access and manage permissions within your instance and workspaces.”
- [claimed-docs] https://www.windmill.dev/docs/core_concepts/mcp.md“With MCP, you can connect your favorite LLMs (like Claude, Cursor, or any MCP compatible client) to Windmill, allowing you to trigger your scripts and flows from your client chat.”
- [probe] https://www.windmill.dev/docs/core_concepts/mcp“official MCP server documented at https://www.windmill.dev/docs/core_concepts/mcp”
Build against official SDKsweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
- [claimed-docs] https://www.windmill.dev/docs/advanced/cli.md“The Windmill CLI, `wmill` allows you to interact with Windmill instances right from your terminal.”
- [claimed-docs] https://www.windmill.dev/docs/core_concepts/mcp.md“With MCP, you can connect your favorite LLMs (like Claude, Cursor, or any MCP compatible client) to Windmill, allowing you to trigger your scripts and flows from your client chat.”
- [probe] https://www.windmill.dev/openapi.json“PROBE openapi: all candidate paths 404 (https://www.windmill.dev/openapi.json, https://www.windmill.dev/swagger.json, https://www.windmill.dev/api/openapi.json, https://www.windmill.dev/.well-known/openapi.json)”
- [probe] https://www.windmill.dev/docs/advanced/cli“official CLI documented at https://www.windmill.dev/docs/advanced/cli”
Subscribe to events via webhooksweight 2
2 (weight) × 5 (quality) × 0.6 (partial) = 6.0 of 20 max
- [claimed-docs] https://www.windmill.dev/docs/triggers.md“How do I trigger scripts and flows in Windmill? Use schedules, webhooks, emails, HTTP routes, websockets, Kafka, Postgres, NATS, SQS, MQTT, GCP, Azure Event Grid and more.”
- [claimed-docs] https://www.windmill.dev/docs/core_concepts/webhooks.md“Flows additionally expose version-pinned webhook endpoints that target a specific flow version by its numeric version ID instead of the latest deployment.”
Agent-ready = 96.2 ÷ 210 × 100 = 45.8
API quality0.0/100×0.20 of the PA blend
The programmable surface once an agent is there — machine-readable spec, interactive docs, sandbox, versioning discipline.
Explore an interactive API reference with runnable examplesweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
- [probe] https://www.windmill.dev/openapi.json“PROBE openapi: all candidate paths 404 (https://www.windmill.dev/openapi.json, https://www.windmill.dev/swagger.json, https://www.windmill.dev/api/openapi.json, https://www.windmill.dev/.well-known/openapi.json)”
Download a machine-readable API spec (OpenAPI or equivalent)weight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
- [probe] https://www.windmill.dev/openapi.json“PROBE openapi: all candidate paths 404 (https://www.windmill.dev/openapi.json, https://www.windmill.dev/swagger.json, https://www.windmill.dev/api/openapi.json, https://www.windmill.dev/.well-known/openapi.json)”
Test against a sandbox environment without touching production dataweight 1
1 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 10 max
- [community] https://news.ycombinator.com/item?id=35920082“My first questions with any new tool of this kind: Can I run/validate branch versions non-destructively as part of pre-merge checks? Can I run my scripts locally without a lot of drama? If the answer to either is no, then the tool is the moral equivalent of directly editing PHP files on the prod machine.”
Rely on versioned APIs with a documented deprecation policyweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
- [claimed-docs] https://www.windmill.dev/docs/core_concepts/webhooks.md“Flows additionally expose version-pinned webhook endpoints that target a specific flow version by its numeric version ID instead of the latest deployment.”
- [probe] https://www.windmill.dev/openapi.json“PROBE openapi: all candidate paths 404 (https://www.windmill.dev/openapi.json, https://www.windmill.dev/swagger.json, https://www.windmill.dev/api/openapi.json, https://www.windmill.dev/.well-known/openapi.json)”
API quality = 0.0 ÷ 70 × 100 = 0.0
Openness59.0/100×0.20 of the PA blend
Can you leave, inspect, or self-host — data export, open source, portability.
Do everything through the API that I can do in the UIweight 2
2 (weight) × 6 (quality) × 0.6 (partial) = 7.2 of 20 max
- [claimed-docs] https://www.windmill.dev/docs/advanced/cli.md“The Windmill CLI, `wmill` allows you to interact with Windmill instances right from your terminal.”
- [claimed-docs] https://www.windmill.dev/docs/advanced/git_sync.md“Each time an item is deployed, Windmill will create and push a commit to the specified repository. ... Windmill can automatically deploy new commits from the repository into the workspace”
- [claimed-docs] https://www.windmill.dev/docs/triggers.md“How do I trigger scripts and flows in Windmill? Use schedules, webhooks, emails, HTTP routes, websockets, Kafka, Postgres, NATS, SQS, MQTT, GCP, Azure Event Grid and more.”
- [claimed-docs] https://www.windmill.dev/docs/core_concepts/webhooks.md“Flows additionally expose version-pinned webhook endpoints that target a specific flow version by its numeric version ID instead of the latest deployment.”
- [claimed-docs] https://www.windmill.dev/docs/core_concepts/mcp.md“With MCP, you can connect your favorite LLMs (like Claude, Cursor, or any MCP compatible client) to Windmill, allowing you to trigger your scripts and flows from your client chat.”
- [probe] https://www.windmill.dev/docs/core_concepts/mcp“official MCP server documented at https://www.windmill.dev/docs/core_concepts/mcp”
- [probe] https://www.windmill.dev/docs/advanced/cli“official CLI documented at https://www.windmill.dev/docs/advanced/cli”
- [probe] https://www.windmill.dev/openapi.json“PROBE openapi: all candidate paths 404 (https://www.windmill.dev/openapi.json, https://www.windmill.dev/swagger.json, https://www.windmill.dev/api/openapi.json, https://www.windmill.dev/.well-known/openapi.json)”
Export all of my data in open formats and leaveweight 3
3 (weight) × 6 (quality) × 0.6 (partial) = 10.8 of 30 max
- [claimed-docs] https://www.windmill.dev/docs/advanced/cli.md“The Windmill CLI, `wmill` allows you to interact with Windmill instances right from your terminal.”
- [claimed-docs] https://www.windmill.dev/docs/advanced/git_sync.md“Each time an item is deployed, Windmill will create and push a commit to the specified repository. ... Windmill can automatically deploy new commits from the repository into the workspace”
- [claimed-docs] https://www.windmill.dev/docs/core_concepts/workflows_as_code.md“Workflows as code let you define orchestration logic directly in TypeScript or Python, using familiar language constructs like functions, conditionals, and loops, while Windmill handles checkpointing, parallelism, and fault tolerance.”
- [probe] https://www.windmill.dev/docs/advanced/cli“official CLI documented at https://www.windmill.dev/docs/advanced/cli”
- [claimed-docs] https://www.windmill.dev/docs/advanced/self_host.md“For small setups, use Docker and Docker Compose on a single instance. For larger and production use-cases, use our Helm chart to deploy on Kubernetes.”
Read the product's source under an open licenseweight 2
2 (weight) × 7 (quality) × 1.0 (full) = 14.0 of 20 max
- [probe] https://www.windmill.dev/llms.txt“PROBE llms.txt: HTTP 200 at https://www.windmill.dev/llms.txt # Windmill > Windmill is an open-source and self-hostable workflow engine and developer platform to build, orchestrate,”
- [probe] https://www.windmill.dev/docs/intro.md“PROBE docs-md: HTTP 200 at https://www.windmill.dev/docs/intro.md # What is Windmill? > What is Windmill? An open-source workflow engine and developer platform to build endpoints, workf”
- [github] https://github.com/windmill-labs/windmill“Scripts are turned into sharable UIs automatically, and can be composed together into flows or used into richer apps built with low-code.”
- [community] https://news.ycombinator.com/item?id=31272793“This looks pretty neat! Once the FOSS self-hostable version is out I might try it out for my local hackerspace, it seems like it might be useful for those little things that are too small to warrant standing up infrastructure at our small scale.”
Self-host the core productweight 3
3 (weight) × 9 (quality) × 1.0 (full) = 27.0 of 30 max
- [claimed-docs] https://www.windmill.dev/docs/advanced/self_host.md“For small setups, use Docker and Docker Compose on a single instance. For larger and production use-cases, use our Helm chart to deploy on Kubernetes.”
- [community] https://news.ycombinator.com/item?id=35920082“Yesterday I submitted a one-click install to Caprover, never been so easy to self host. It's really fast on Oracle's free 4vCPU, 24GB RAM machine.”
- [community] https://news.ycombinator.com/item?id=35920082“Pretty easy to selfhost as I deployed it on a Alpine Linux server using Podman + Docker Compose binary. Really nice piece of software.”
- [probe] https://www.windmill.dev/llms.txt“PROBE llms.txt: HTTP 200 at https://www.windmill.dev/llms.txt # Windmill > Windmill is an open-source and self-hostable workflow engine and developer platform to build, orchestrate,”
Openness = 59.0 ÷ 100 × 100 = 59.0
Built-in AI43.1/100×0.15 of the PA blend
Inside-out: how agentic the product itself is for its users — built-in assistants, autonomous features.
Get AI-generated insights and suggestions from my data inside the productweight 2
2 (weight) × 4 (quality) × 0.6 (partial) = 4.8 of 20 max
- [claimed-docs] https://www.windmill.dev/docs/core_concepts/ai_agents.md“AI Agents steps allow you to integrate AI agents directly into your Windmill flows. They provide an interface to connect with various AI providers and models”
- [claimed-docs] https://www.windmill.dev/docs/core_concepts/ai_generation.md“Review and deploy changes: Once the AI has edited items, ask it to review the changes and it opens the Compare & Deploy page with exactly those items preselected, ready to deploy.”
- [claimed-docs] https://www.windmill.dev/docs/core_concepts/mcp.md“With MCP, you can connect your favorite LLMs (like Claude, Cursor, or any MCP compatible client) to Windmill, allowing you to trigger your scripts and flows from your client chat.”
Set up automations that run autonomously in the backgroundweight 2
2 (weight) × 8 (quality) × 1.0 (full) = 16.0 of 20 max
- [claimed-docs] https://www.windmill.dev/docs/core_concepts/scheduling.md“A Schedule consists of a Script or Flow, its arguments, a CRON expression that controls the execution frequency and optional Error and Recovery Handlers to deal with failed scheduled executions.”
- [claimed-docs] https://www.windmill.dev/docs/triggers.md“How do I trigger scripts and flows in Windmill? Use schedules, webhooks, emails, HTTP routes, websockets, Kafka, Postgres, NATS, SQS, MQTT, GCP, Azure Event Grid and more.”
- [claimed-docs] https://www.windmill.dev/docs/flows/retries.md“If defined, upon error this step will be retried with a delay and a maximum number of attempts as defined below.”
- [claimed-docs] https://www.windmill.dev/docs/flows/flow_branches.md“Branches allow to split the execution of the flow based on a condition. ... Branch all: all the branches will be executed.”
- [claimed-docs] https://www.windmill.dev/docs/core_concepts/error_handling.md“A script or flow can return a top-level `wm_failure` field (string) to retag the run as a failure even though the runtime did not raise an error.”
- [claimed-docs] https://www.windmill.dev/docs/core_concepts/ai_agents.md“AI Agents steps allow you to integrate AI agents directly into your Windmill flows. They provide an interface to connect with various AI providers and models”
- [community] https://news.ycombinator.com/item?id=31272793“This looks really cool. Is there error handling? For example, if the email sending fails for some reason can I either select the flow to continue/log or to stop entirely? Can flows branch?”
Delegate tasks to a built-in AI assistant inside the productweight 3
3 (weight) × 6 (quality) × 0.6 (partial) = 10.8 of 30 max
- [claimed-docs] https://www.windmill.dev/docs/core_concepts/ai_generation.md“Review and deploy changes: Once the AI has edited items, ask it to review the changes and it opens the Compare & Deploy page with exactly those items preselected, ready to deploy.”
- [claimed-docs] https://www.windmill.dev/docs/core_concepts/ai_agents.md“AI Agents steps allow you to integrate AI agents directly into your Windmill flows. They provide an interface to connect with various AI providers and models”
Operate the product with natural-language commandsweight 2
2 (weight) × 6 (quality) × 0.6 (partial) = 7.2 of 20 max
- [claimed-docs] https://www.windmill.dev/docs/core_concepts/mcp.md“With MCP, you can connect your favorite LLMs (like Claude, Cursor, or any MCP compatible client) to Windmill, allowing you to trigger your scripts and flows from your client chat.”
- [claimed-docs] https://www.windmill.dev/docs/core_concepts/ai_generation.md“Review and deploy changes: Once the AI has edited items, ask it to review the changes and it opens the Compare & Deploy page with exactly those items preselected, ready to deploy.”
- [probe] https://www.windmill.dev/docs/core_concepts/mcp“official MCP server documented at https://www.windmill.dev/docs/core_concepts/mcp”
Built-in AI = 38.8 ÷ 90 × 100 = 43.1
Automation64.5/100×0.15 of the PA blend
Depth of automation primitives — rules, scheduling, bulk operations, webhooks.
Perform bulk operations across many items at onceweight 2
2 (weight) × 5 (quality) × 0.6 (partial) = 6.0 of 20 max
- [claimed-docs] https://www.windmill.dev/docs/core_concepts/workflows_as_code.md“Workflows as code let you define orchestration logic directly in TypeScript or Python, using familiar language constructs like functions, conditionals, and loops, while Windmill handles checkpointing, parallelism, and fault tolerance.”
- [claimed-docs] https://www.windmill.dev/docs/flows/flow_branches.md“Branches allow to split the execution of the flow based on a condition. ... Branch all: all the branches will be executed.”
- [claimed-docs] https://www.windmill.dev/docs/flows/retries.md“If defined, upon error this step will be retried with a delay and a maximum number of attempts as defined below.”
Define rules that trigger actions automatically on eventsweight 3
3 (weight) × 8 (quality) × 1.0 (full) = 24.0 of 30 max
- [claimed-docs] https://www.windmill.dev/docs/triggers.md“How do I trigger scripts and flows in Windmill? Use schedules, webhooks, emails, HTTP routes, websockets, Kafka, Postgres, NATS, SQS, MQTT, GCP, Azure Event Grid and more.”
- [claimed-docs] https://www.windmill.dev/docs/core_concepts/scheduling.md“A Schedule consists of a Script or Flow, its arguments, a CRON expression that controls the execution frequency and optional Error and Recovery Handlers to deal with failed scheduled executions.”
- [claimed-docs] https://www.windmill.dev/docs/core_concepts/webhooks.md“Flows additionally expose version-pinned webhook endpoints that target a specific flow version by its numeric version ID instead of the latest deployment.”
- [claimed-docs] https://www.windmill.dev/docs/flows/retries.md“If defined, upon error this step will be retried with a delay and a maximum number of attempts as defined below.”
- [claimed-docs] https://www.windmill.dev/docs/flows/flow_branches.md“Branches allow to split the execution of the flow based on a condition. ... Branch all: all the branches will be executed.”
- [community] https://news.ycombinator.com/item?id=31272793“This looks really cool. Is there error handling? For example, if the email sending fails for some reason can I either select the flow to continue/log or to stop entirely? Can flows branch?”
Schedule recurring jobs or workflowsweight 2
2 (weight) × 9 (quality) × 1.0 (full) = 18.0 of 20 max
- [claimed-docs] https://www.windmill.dev/docs/core_concepts/scheduling.md“A Schedule consists of a Script or Flow, its arguments, a CRON expression that controls the execution frequency and optional Error and Recovery Handlers to deal with failed scheduled executions.”
- [claimed-docs] https://www.windmill.dev/docs/triggers.md“How do I trigger scripts and flows in Windmill? Use schedules, webhooks, emails, HTTP routes, websockets, Kafka, Postgres, NATS, SQS, MQTT, GCP, Azure Event Grid and more.”
- [claimed-docs] https://www.windmill.dev/docs/flows/retries.md“If defined, upon error this step will be retried with a delay and a maximum number of attempts as defined below.”
- [claimed-docs] https://www.windmill.dev/docs/flows/flow_branches.md“Branches allow to split the execution of the flow based on a condition. ... Branch all: all the branches will be executed.”
Version, review, and roll back my automationsweight 1
1 (weight) × 6 (quality) × 0.6 (partial) = 3.6 of 10 max
- [claimed-docs] https://www.windmill.dev/docs/advanced/git_sync.md“Each time an item is deployed, Windmill will create and push a commit to the specified repository. ... Windmill can automatically deploy new commits from the repository into the workspace”
- [claimed-docs] https://www.windmill.dev/docs/core_concepts/webhooks.md“Flows additionally expose version-pinned webhook endpoints that target a specific flow version by its numeric version ID instead of the latest deployment.”
- [claimed-docs] https://www.windmill.dev/docs/core_concepts/ai_generation.md“Review and deploy changes: Once the AI has edited items, ask it to review the changes and it opens the Compare & Deploy page with exactly those items preselected, ready to deploy.”
- [claimed-docs] https://www.windmill.dev/docs/advanced/cli.md“The Windmill CLI, `wmill` allows you to interact with Windmill instances right from your terminal.”
Automation = 51.6 ÷ 80 × 100 = 64.5