Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
terminator 🤖 Mediar.ai
https://github.com/user-attachments/assets/00329105-8875-48cb-8970-a62a85a9ebd0
⚠️ News:
- 08/25 shipped tons of new features & bug fixes: run NodeJS SDK in YAML workflows, run JS in browser, record OS events and genereate YAML workflows directly in MCP end-to-end, etc.
- 08/25 we raised $2.8m to give AI hands to every desktop ⚠
Computer use SDK for building agents that learn from human screen recordings. Accessibility-first. Cross-platform (Windows/macOS/Linux).
There are three paths to train deterministic workflows with AI fallback:
- AI-Assisted Workflow Building: Use an MCP client like Cursor to iteratively build and test complex workflows with an AI assistant in a human-in-the-loop process.
- Record Human Baselines: Use our open-source tools to record a human demonstrating a task (our MCP has a recording tool). This generates a baseline workflow that can be refined and automated.
- Enterprise-Grade Recording: For businesses needing scalable, >95% success rate automation workflows, our b2b product provides the most robust solution.
For detailed instructions on building with AI agents through MCP client, see our Terminator MCP Agent README.
⚡ Quick Start: Programmatic Control
🐍 Python
# Control applications programmatically
=
# Result: 10 appears in calculator
Installation:
🟦 TypeScript / Node.js
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:
# 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
- Alt: Inspect.exe (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
- Usage: Comes with Xcode → Open
Xcode > Open Developer Tool > Accessibility Inspector→ Use the target icon to explore UI elements on screen.
🐧 Linux
-
Tool: Accerciser
-
Install:
-
Usage: Launch Accerciser → Select the window/app → Browse the accessible widget tree.
💡 Tip
Once you identify the structure of your UI:
# Sample pattern
You can build and debug selector paths incrementally using .locator() chaining.
Explore Further
contributing
contributions are welcome! please feel free to submit issues and pull requests. many parts are experimental, and help is appreciated. join our discord to discuss.
businesses
if you want desktop automation at scale for your business, let's talk