AI prompts
base on AI-powered desktop automation — open source, MIT-licensed, cross-platform, accessibility-first. Works across all apps and browsers. Inspired by GitHub Actions & Playwright. 100x faster than generic AI agents, >95% success rate, no vendor lock-in. # terminator 🤖 Mediar.ai
https://github.com/user-attachments/assets/00329105-8875-48cb-8970-a62a85a9ebd0
<p align="center">
<a href="https://discord.gg/dU9EBuw7Uq">
<img src="https://img.shields.io/discord/823813159592001537?color=5865F2&logo=discord&logoColor=white&style=flat-square" alt="Join us on Discord">
</a>
<a href="https://www.youtube.com/@mediar_ai">
<img src="https://img.shields.io/badge/YouTube-@mediar__ai-FF0000?logo=youtube&logoColor=white&style=flat-square" alt="YouTube @mediar_ai">
</a>
<a href="https://crates.io/crates/terminator-rs">
<img src="https://img.shields.io/crates/v/terminator-rs.svg" alt="Crates.io - terminator-rs">
</a>
<a href="https://crates.io/crates/terminator-workflow-recorder">
<img src="https://img.shields.io/crates/v/terminator-workflow-recorder.svg" alt="Crates.io - workflow recorder">
</a>
</p>
<p align="center">
<a href="https://github.com/mediar-ai/terminator/blob/main/terminator-mcp-agent/README.md#quick-install">
<img alt="Install in Cursor" src="https://img.shields.io/badge/Cursor-Cursor?style=flat-square&label=Install%20MCP&color=22272e">
</a>
<a href="https://insiders.vscode.dev/redirect?url=vscode%3Amcp%2Finstall%3F%7B%22terminator-mcp-agent%22%3A%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22terminator-mcp-agent%22%5D%7D%7D">
<img alt="Install in VS Code" src="https://img.shields.io/badge/VS_Code-VS_Code?style=flat-square&label=Install%20MCP&color=0098FF">
</a>
<a href="https://insiders.vscode.dev/redirect?url=vscode-insiders%3Amcp%2Finstall%3F%7B%22terminator-mcp-agent%22%3A%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22terminator-mcp-agent%22%5D%7D%7D">
<img alt="Install in VS Code Insiders" src="https://img.shields.io/badge/VS_Code_Insiders-VS_Code_Insiders?style=flat-square&label=Install%20MCP&color=24bfa5">
</a>
</p>
## 🚀 What's new
- 08/25 Big release — NodeJS SDK in YAML workflows, run JS in browser, OS event recording → YAML generation in MCP, and more
- 08/25 [we raised $2.8m to give AI hands to every desktop](https://x.com/louis030195/status/1948745185178914929) ⚠
> AI-powered desktop automation — open source, MIT-licensed, cross-platform, accessibility-first.
> Works across all apps and browsers. Inspired by GitHub Actions & Playwright.
> 100x faster than generic AI agents, >95% success rate, no vendor lock-in.
## 🧠 Why Terminator
### For Developers
- Create automations that work across any desktop app or browser
- Runs 100x faster than ChatGPT Agents, Claude, Perplexity Comet, BrowserBase, BrowserUse
- \>95% success rate without costly consultant armies (UIPath, Automation Anywhere)
- MIT-licensed — fork it, ship it, no lock-in
We achieve this by pre-training workflows as deterministic code, and calling AI only when recovery is needed.
### For Teams
[Our private beta workflow builder](https://www.mediar.ai/) + managed hosting = plug-and-play automation engine for your business:
- Record & map your processes in days
- Deploy AI to execute them at >95% accuracy
- Kill repetitive work without legacy RPA complexity or cost
## ⚡ Quick start: MCP
We recommend using [MCP](https://github.com/mediar-ai/terminator/tree/main/terminator-mcp-agent) as AI's IQ is far higher than the programmer.
## ⚡ Quick start: programmatic control
### 🐍 Python
```python
import terminator
# Control applications programmatically
desktop = terminator.Desktop()
desktop.open_application('calc')
desktop.locator('name:Seven').click()
desktop.locator('name:Plus').click()
desktop.locator('name:Three').click()
desktop.locator('name:Equals').click()
# Result: 10 appears in calculator
```
**Installation:**
```bash
pip install terminator.py
```
### 🟦 TypeScript / Node.js
```typescript
const { Desktop } = require("terminator.js");
// Async/await for modern control flow
const desktop = new Desktop();
await desktop.openApplication("notepad");
await desktop.locator("name:Edit").typeText("Hello from TypeScript!");
await desktop.pressKey("{Ctrl}s"); // Save
```
**Installation:**
```bash
npm install terminator.js
# or: bun add terminator.js
```
## Feature Support
While Terminator aims for full cross-platform support, current capabilities vary by OS. Windows is the primary development target and has the most complete feature set.
| Feature | Windows | macOS | Linux | Notes |
| ---------------------------- | :-----: | :---: | :---: | ---------------------------------------------------- |
| **Core Automation** | | | | |
| Element Locators | ✅ | 🟡 | 🟡 | Find elements by `name`, `role`, `window`, etc. |
| UI Actions (`click`, `type`) | ✅ | 🟡 | 🟡 | Core interactions with UI elements. |
| Application Management | ✅ | 🟡 | 🟡 | Launch, list, and manage applications. |
| Window Management | ✅ | 🟡 | 🟡 | Get active window, list windows. |
| **Advanced Features** | | | | |
| Workflow Recording | ✅ | ❌ | ❌ | Record human workflows for deterministic automation. |
| Monitor Management | ✅ | 🟡 | 🟡 | Multi-display support. |
| Screen & Element Capture | ✅ | ✅ | 🟡 | Take screenshots of displays or elements. |
| **Language Bindings** | | | | |
| Python (`terminator.py`) | ✅ | ✅ | ✅ | `pip install terminator.py` |
| TypeScript (`terminator.js`) | ✅ | ✅ | ✅ | `npm i terminator.js` |
| MCP (`terminator-mcp-agent`) | ✅ | ✅ | ✅ | `npx -y terminator-mcp-agent --add-to-app [app]` |
| Rust (`terminator-rs`) | ✅ | ✅ | ✅ | `cargo add terminator-rs` |
**Legend:**
- ✅: **Supported** - The feature is stable and well-tested.
- 🟡: **Partial / Experimental** - The feature is in development and may have limitations.
- ❌: **Not Supported** - The feature is not yet available on this platform.
## 🕵️ How to Inspect Accessibility Elements (like `name:Seven`)
To create reliable selectors (e.g. `name:Seven`, `role:Button`, `window:Calculator`), you need to inspect the Accessibility Tree of your OS. Here's how to explore UI elements on each platform:
### 🪟 Windows
- **Tool:** [Accessibility Insights for Windows](https://accessibilityinsights.io/downloads/)
- **Alt:** [Inspect.exe](https://learn.microsoft.com/en-us/windows/win32/winauto/inspect-objects) (comes with Windows SDK)
- **Usage:** Open the app you want to inspect → launch Accessibility Insights → hover or use keyboard navigation to explore the UI tree (Name, Role, ControlType, AutomationId).
> These tools show you the `Name`, `Role`, `ControlType`, and other metadata used in Terminator selectors.
---
### 🍎 macOS
- **Tool:** [Accessibility Inspector](https://developer.apple.com/documentation/xcode/accessibility_inspector)
- **Usage:** Comes with Xcode → Open `Xcode > Open Developer Tool > Accessibility Inspector` → Use the target icon to explore UI elements on screen.
---
### 🐧 Linux
- **Tool:** [Accerciser](https://wiki.gnome.org/Apps/Accerciser)
- **Install:**
```bash
sudo apt install accerciser
```
- **Usage:** Launch Accerciser → Select the window/app → Browse the accessible widget tree.
---
### 💡 Tip
Once you identify the structure of your UI:
```python
# Sample pattern
desktop.locator('window:Calculator')
.locator('role:Button')
.locator('name:Seven')
```
You can build and debug selector paths incrementally using `.locator()` chaining.
## Explore Further
- [https://github.com/mediar-ai/terminator/examples](https://github.com/mediar-ai/terminator/tree/main/examples)
## Troubleshooting
### Finding MCP Server Logs
MCP logs location:
- **Windows:** `%LOCALAPPDATA%\claude-cli-nodejs\Cache\<encoded-project-path>\mcp-logs-terminator-mcp-agent\`
- **macOS/Linux:** `~/.local/share/claude-cli-nodejs/Cache/<encoded-project-path>/mcp-logs-terminator-mcp-agent/`
Where `<encoded-project-path>` is your project path with special chars replaced (e.g., `C--Users-username-project`).
**Find logs:**
```bash
# Windows PowerShell
Get-ChildItem "$env:LOCALAPPDATA\claude-cli-nodejs\Cache" -Directory -Recurse | Where-Object Name -eq 'mcp-logs-terminator-mcp-agent'
# macOS/Linux
find ~/.local/share/claude-cli-nodejs/Cache -type d -name "mcp-logs-terminator-mcp-agent"
```
### Enabling Debug Logs
Set the `LOG_LEVEL` environment variable in your Claude MCP configuration:
```json
{
"mcpServers": {
"terminator-mcp-agent": {
"command": "terminator-mcp-agent",
"env": {
"LOG_LEVEL": "debug",
"RUST_BACKTRACE": "1"
}
}
}
}
```
### Common Issues
- **Workflow failures:** Check logs for `fallback_id` triggers and `critical_error_occurred` states
- **Element not found:** Look for selector resolution attempts and UI tree snapshots in logs
- **Browser script errors:** Check for JavaScript execution failures and Promise rejections
- **Binary version confusion:** Logs show the running binary path and build timestamp at startup
- **MCP connection issues:** Ensure the binary path in your Claude config is correct
## contributing
contributions are welcome! please feel free to submit issues and pull requests. many parts are experimental, and help is appreciated. join our [discord](https://discord.gg/dU9EBuw7Uq) to discuss.
## businesses
if you want desktop automation at scale for your business, [let's talk](https://mediar.ai)
", Assign "at most 3 tags" to the expected json: {"id":"14600","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"