Most writing about Mac automation is about the kind that runs while you are not looking. A file lands, a schedule fires, something happens in the background, and the best outcome is that you never think about it again.
A lot of what I wanted to automate was not like that. A bug to triage. An idea I want to keep before it goes. A quick question for a model. Each of those needs something from me first: a sentence, a choice, a link. So I started building what I call control surfaces into Watchflows, the Mac automation app I make. A control surface is a small piece of interface a flow puts on screen when it needs you, and takes away when it has what it needs.
About 40% of my own flows are now started by hand from a keyboard shortcut, not by a file or a schedule. Here are the five surfaces I use most.
1. Form
A form is the one to reach for when the input has a shape: a subject and a description, a title and a URL, a customer and an amount. You choose the fields, their labels, the title and the description. When you submit, everything you typed is packed up and handed to the next node.
There are two Form nodes. The Form trigger starts a flow: press Run, fill it in, and the flow begins with your answers. The Form action sits in the middle of one: the flow runs up to that point, stops, waits for you, and carries on when you submit. In the middle of a flow the form can also use what came before it, so a form titled Triaging {{fileName}} shows the real file name.
Fields are typed and validated, so a required field stays required and an email field wants an email. The panel floats above your other windows, including full-screen apps, so you do not have to go and find it.
2. Pick from List
Pick from List is a chooser in the style of Spotlight or Raycast. It has no data of its own. It shows whatever list the node before it produced, and you type to filter, arrow to move and press Return to pick. The row you picked goes on to the next node.
That makes it a general tool, and the list decides what it becomes:
- Put Installed Apps in front of it and you have an app launcher, with each app's real icon.
- Put a database query in front of it, over a table another flow fills, and you have a clipboard history or a reading list.
- Ask the Flow Builder to write a script that lists files and you have a file search.
The launcher above is the first of those. It is four nodes: Keyboard Shortcut, Installed Apps, Pick from List and Open File.
3. Chat
On its own the Chat node does very little. It opens a window, and it has two ports that matter: Call and Response.
Every message you type goes out on Call. Whatever you wire behind it does the answering, and what arrives back at Response is shown as the reply. A new Chat node can search and read the web on its own. Wire Call to an AI Prompt for plain questions, or to an Agent, as in the picture, to add the tools you switched on for that agent.
The result is a chat window you open with a keyboard shortcut, running on whichever AI you already have: a model on your own Mac, your own API key, or a subscription you already pay for. There is no extra chat subscription in the middle. And because the answering part is a flow, you can change what the chat is for by changing the wires.
4. The Workbench
The Workbench is a control surface for building, not for running. Prompts, scripts, SQL and HTML pages are long, and a small box in an inspector is a poor place to write them. The long fields on the AI Prompt, Agent, Run Script, Run SQL and HTML nodes open in a full window, with syntax highlighting and a rail of the variables that node can reach. Prompts and pages also get a live preview.
It also has an assist bar. With an AI provider set up, describe a change in plain words and it proposes an edit to the prompt, script, SQL or page. You apply it or not. Everything else in the Workbench works with no AI configured.
The picture shows the HTML editor, which pairs with HTML View: a node that shows a self-contained page and lets that page send an answer back to the flow. When a form, a chooser and a chat window do not fit, have an agent write the page and show it.
5. Public Webhook
The last one is a control surface for other software. A Public Webhook trigger gives a flow a public HTTPS address, so GitHub, Stripe or a form on your website can start it. There is no port forwarding and no server of your own. Press Create Public URL, paste the address into the service, and the flow runs on your Mac when a request arrives.
The relay that makes this work is now part of the $49 license, at no extra cost. I use it to build Watchflows itself: a webhook from GitHub is what starts each release build.
Why this matters for local automation
When an automation runs on a server, getting a person into the loop is a project: an email, a link, a web page, a login. When it runs on the Mac in front of you, it is one node. The flow can put a panel on your screen, wait, and carry on.
So a shortcut opens a form, a chooser or a chat, and the rest of the flow does the tedious part. The same surface works in any flow, which is why I keep finding new places to put one.
Watchflows is $49 once, with a 14-day trial. Every surface here comes with the license. The public webhook needs an owned license or a Cloud plan, so it is the one that does not work during the trial.
Try one
The chat is the quickest to build. Paste this into the Flow Builder:
Build a flow that opens an AI chat window from a keyboard shortcut. Wire the Chat node's Call outlet to an Agent, and the Agent's Result back to the Chat node's Response, so each message I type is answered by the agent.
Then record a shortcut on the trigger, turn the flow on, and press it.