TIA Operator is a local-first desktop automation app for recording mouse and keyboard workflows, saving them as reusable scripts, replaying them safely, and exposing those same actions to other coding agents through a built-in MCP server.
See more app screenshots in APP.md
- Record local mouse and keyboard input into reusable scripts.
- Edit script timelines by hand, including coordinate-free mouse press steps.
- Replay scripts with countdown, timing, loop, and shortcut controls.
- Run a local MCP server on
http://127.0.0.1:11531/mcpso other agents can:- list, create, remove, and execute scripts
- capture screenshots
- send mouse and keyboard input directly
- Keep quick controls in the tray with
Open App,Exit App, and MCP on/off status.
The app now starts with the MCP server enabled by default. You can turn it on or off from the dedicated MCP Server page or from the tray menu.
Exposed tools:
execute_scriptlist_scriptscreate_scriptremove_scriptget_screenshotmouse_downmouse_upmouse_movemouse_scrollkeyboard_inputkey_downkey_up
mouse_down accepts omitted coordinates. When both x and y are left out, TIA Operator presses the button at the current cursor position without moving the mouse first.
- Recording only starts from an explicit user action.
- The UI always shows recording and replay state.
- Scripts stay in the local SQLite database unless you export them.
- Replay is blocked while recording.
- Recording is blocked while replaying.
- A global emergency stop shortcut is always shown in the app.
Prerequisites:
- Node.js 20+
- pnpm
- Rust 1.85+
- Tauri system dependencies for your OS
Install dependencies:
pnpm installRun checks:
pnpm checkRun the desktop app:
pnpm tauri:devBuild local installers:
pnpm tauri:buildGenerated bundles are written under src-tauri/target/release/bundle.
TIA Operator stores local data in the app data directory reported inside the Settings screen. The SQLite database filename is:
tia-operator.sqlite3
Scripts can be exported and imported as JSON.
This repo publishes releases from .github/workflows/release.yml. Pushing a tag like v0.1.6 runs checks, builds desktop artifacts, and publishes them to GitHub Releases.
Before publishing:
- Keep
TAURI_UPDATER_PUBLIC_KEY,TAURI_SIGNING_PRIVATE_KEY, andTAURI_SIGNING_PRIVATE_KEY_PASSWORDconfigured in GitHub Actions secrets. - Push the release tag:
git tag v0.1.6
git push origin v0.1.6The updater endpoint is configured to use the latest GitHub Release artifact:
https://github.com/ZhuXinAI/tia-operator/releases/latest/download/latest.json
MIT
