AutoFlow is a standalone Windows app (no install, no Python, no runtime) that lets you record mouse and keyboard actions, edit them into reliable workflows, and play them back hands-free — with a clean dark UI, a floating HUD overlay, and a full built-in guide.
v2.0.0 — Rewritten in Rust. 3.1 MB single EXE, instant startup, no dependencies.
![]() |
![]() |
| Main canvas — toolbar, step palette, and variables panel | Built-in User Guide with sidebar navigation |
- Global F9 hotkey — start and stop recording from anywhere, no need to click back to the browser
- Captures mouse clicks (with UI Automation element names and AutomationIds), keystrokes, hotkeys, and scroll events across the entire desktop — including Win32 apps, browsers, file explorers, and terminals
- Smart context detection — auto-inserts a Navigate step for browser sessions or an Open App step for desktop apps
- Consecutive scrolls at the same position are merged automatically; typed characters batch into a single Type step
- Region screenshot thumbnails captured per click with a visual target circle overlay
- Frameless floating panel always visible above all windows; drag to reposition, position is remembered between sessions
- Buttons send commands directly to the recorder — bypasses HTTP for instant response even while the hook thread is active
- Hides automatically when the last browser tab closes
- Drag-and-drop reorder in card view; compact table view for dense workflows
- Full edit modal for every step type
- Disable steps — skip without deleting; shown struck-through in PDF/script exports
- Undo delete —
Ctrl+Zrestores the last deleted step (up to 10 deep) - AI step naming —
✨ AI Namesbutton renames steps via local Ollama (qwen3:8b) - Per-step notes with inline editor; notes appear in PDF export
- Unsaved-change indicator: Save button pulses blue, title bar shows
●
- Start from any step; step-through mode advances one step at a time
- Adjustable speed: 0.25× to 4×
- Smart window-ready check before every click — waits for the target window to respond before acting
- Three-level click fallback: UI element name/AutomationId → window-relative offset → absolute coordinates
- Recursive Run Workflow step — chain workflows together
Click, Type, Hotkey, Scroll, Wait, Navigate, Launch Browser, Wait for Element, Wait for Window, Screenshot, Show Message, Get/Set Clipboard, Image Click, Open File/App, Read/Write/Copy/Move/Delete File, HTTP Request, Kill Process, Close Window, Play Sound, Loop, If/Else, Set Variable, Run Script, Comment, Run Workflow
- PDF report — steps, notes, and screenshots; use as a walkthrough or SOP
- Python script — standalone
pyautoguiscript for all step types - ZIP package — script +
run.bat+requirements.txt - Task Scheduler XML —
⏰ Schedulebutton exports a ready-to-import Windows Task Scheduler package
- System tray — minimize to tray, reopen, record new, or replay last
- Workflows stored as portable JSON in
%APPDATA%\AutoFlow\workflows\ - Two-click delete confirmation — click ✕, button turns red showing "Delete?" for 3.5s, click again to confirm
- Runs 100% locally — nothing is sent over the internet
- Download
autoflow.exefrom the latest release - Double-click it — a browser tab opens automatically at
http://127.0.0.1:7878 - Click ● Record, do your actions, press F9 or click ■ Stop
The server auto-exits when the last browser tab is closed.
Requires Rust 1.70+.
git clone https://github.com/ChrisMangin/AutoFlow
cd AutoFlow
cargo build --release
# EXE at: target/release/autoflow.exe| Shortcut | Action |
|---|---|
F9 |
Start / stop recording (global — works from any app) |
Ctrl+R |
Start / stop recording (browser must be focused) |
Ctrl+P |
Play workflow |
Ctrl+S |
Save workflow |
Esc |
Stop playback or recording |
Ctrl+Z |
Undo last deleted step (up to 10 deep) |
AutoFlow/
├── Cargo.toml
├── src/
│ ├── main.rs entry point — port binding, duplicate-instance guard, tray setup
│ ├── server.rs axum HTTP + WebSocket server, all API routes
│ ├── state.rs thread-safe app state (steps, variables, status)
│ ├── recorder.rs Win32 low-level mouse/keyboard hook, UIA element detection
│ ├── player.rs async workflow playback engine, smart window-ready checks
│ ├── hud.rs Win32 HUD overlay window, F9 global hotkey
│ ├── tray.rs system tray icon and menu
│ ├── export.rs PDF, Python script, ZIP, and Task Scheduler XML export
│ ├── ws.rs WebSocket broadcast helpers
│ └── embedded.rs rust-embed static asset server
└── static/
├── index.html app shell
├── style.css dark UI theme
├── app.js all UI logic (~1 300 lines, no build step)
├── ws.js WebSocket client
└── guide.html built-in user guide
| Layer | Technology |
|---|---|
| HTTP + WebSocket server | axum 0.7 + tokio |
| Win32 / UIA / COM | windows-rs 0.58 |
| Image encoding | image (JPEG thumbnails) |
| Frontend embedding | rust-embed |
| Tray icon | tray-icon |
| Frontend | Vanilla HTML / CSS / JS — no framework, no build step |
MIT — see LICENSE.

