What is Windmill?

approx. 1 1/2 minutes read

“I commit code quite frequently during the day.”

TL;DR Windmill monitors your master branch. You can utilise it every time you merge and push to master while you keep your existing development workflow on a feature branch.

The goal of Windmill is to establish a process that enables you to:

  • know when your app can no longer be released, give you the reasons that hold you back and provide you with feedback/support on how to resolve them.

e.g. build no longer compiles, distribution certificate has expired etc.

  • monitor the “quality” of your app through metrics and reports.

e.g. do tests pass? how many tests are there? what’s the code coverage?

  • see the “progress” of your app by providing you with an IPA that you can install on a device

e.g. does the “pull to refresh” feature look and feel as expected?

This, among others1, is the value that Windmill aims to provide you with.

Windmill is not meant to be used while practicing TDD, working on a feature branch (Windmill have since added branch support) or as a replacement to a continuous integration service2.

Windmill exists to monitor your master branch for release candidates. A candidate that you decide when to turn into a public release by evaluating what is in front of you.

See also: Frequently Asked Questions

diagram visualising the windmill process


  1. By operating in a process like this you are also confident you can release your app at a moment’s notice. 

  2. A service that monitors every feature branch, continuously merging into a master branch, promoting to a release without any human interaction in a large codebase and/or distributed team.