TuriX
A configurable desktop-use agent that carries out GUI tasks across browser and office workflows.
What does this agent do, and when should you use it?
TuriX is a computer-use agent for desktop automation; its main branch is documented for macOS 15+. Tasks and separate brain, actor, and memory model roles are configured in examples/config.json, with a planner role added when planning is enabled. Its execution boundary is the desktop GUI rather than app-specific APIs, covering interfaces a person can click, including browser, office, and internal-tool workflows. The repository documents MCP connectivity and demonstrates Claude for Desktop using TuriX to research, write a Pages document, and send it to a contact. It also includes Markdown-based skills for planning and an agent_id-based resume flow backed by memory.jsonl.
When you run python examples/main.py, TuriX reads agent.task and the model-role settings from examples/config.json, using brain_llm, actor_llm, memory_llm, and optionally planner_llm. Those roles can use a turix provider configuration or a local Ollama endpoint; models not already defined by build_llm require a provider implementation in examples/main.py, using options such as ChatOpenAI, ChatGoogleGenerativeAI, ChatAnthropic, or ChatOllama. With agent.use_plan and agent.use_skills enabled, the planner selects Markdown skills from their name and description, then the brain receives the full skill instructions to guide step goals. It carries out the work through desktop interactions, while resume mode reuses prior state from src/agent/temp_files/<agent_id>/memory.jsonl.
- A macOS user who needs a Safari-based web workflow completed through the visible browser interface.
- An office worker who must turn data in a Numbers file into a chart, place it in PowerPoint, and reply to a colleague.
- A user who wants to search product information, create a Pages document, and send it to a contact.
- A team member using Claude for Desktop who wants an MCP-connected desktop executor to write and share research results.
- A developer who wants to run desktop tasks with local Ollama vision models and configure separate model roles.
What are this agent's strengths and limitations?
- Separates brain, actor, memory, and optional planner responsibilities, allowing different models and endpoints for each role.
- Operates through desktop GUIs rather than requiring app-specific APIs, which suits workflows across clickable software interfaces.
- Documents an MCP route and a Claude for Desktop desktop-automation demonstration.
- Uses readable Markdown skills: the planner selects by metadata, while the brain receives full instructions.
- Can resume interrupted work through a stable agent_id and persisted memory.jsonl.
- The main branch is documented for macOS 15+; Windows and Linux require switching to separate branches.
- Desktop control depends on Accessibility and Safari automation permissions, which can block operation if not granted.
- The main configuration requires brain, actor, and memory models, plus a planner model when planning is enabled.
- Using a model not defined by build_llm requires editing examples/main.py to add a provider implementation.
- Resume only works when prior memory.jsonl exists and the same task and agent_id are retained.
How do you install or deploy this agent?
On macOS 15+, run: git clone https://github.com/TurixAI/TuriX-CUA.git && cd TuriX-CUA. Then run conda create -n turix_env python=3.12, conda activate turix_env, and pip install -r requirements.txt. In System Settings > Privacy & Security > Accessibility, authorize Terminal and the IDE you use; add /usr/bin/python3 if necessary. In Safari, enable developer features, Allow Remote Automation, and Allow JavaScript from Apple Events, then approve the permission dialogs.
How do you use this agent?
Edit examples/config.json with a specific agent.task and configure brain_llm, actor_llm, and memory_llm; also configure planner_llm when agent.use_plan is true. For a remote provider, set provider, model_name, api_key, and base_url for each role. For Ollama, configure each role with provider: ollama, a model name, and base_url: http://localhost:11434. To use skills, set agent.use_plan: true and agent.use_skills: true and provide skills_dir. Start the agent with python examples/main.py. To resume, keep the same task, set agent.resume: true and a stable agent.agent_id, and ensure the matching memory.jsonl already exists.
How does this agent compare with similar options?
The README compares its default model with prior open-source agents such as UI-TARS, claiming higher success rate and speed on Mac. It also reports 64.2% (229.88/358) on the full OSWorld benchmark and a third-place leaderboard ranking; it does not provide UI-TARS scores or a matched test setup in the supplied material.