turix-cua
Computer Use Agent (CUA) for macOS automation using TuriX.
Installation
npx clawhub@latest install turix-cuaView the full skill documentation and source below.
Documentation
TuriX-Mac Skill
This skill allows Clawdbot to control the macOS desktop visually using the TuriX Computer Use Agent.
When to Use
- When asked to perform actions on the Mac desktop (e.g., "Open Spotify and play my liked songs").
- When navigating applications that lack command-line interfaces.
- For multi-step visual workflows (e.g., "Find the latest invoice in my email and upload it to the company portal").
- When you need the agent to plan, reason, and execute complex tasks autonomously.
Key Features
π€ Multi-Model Architecture
TuriX uses a sophisticated multi-model system:- Brain: Understands the task and generates step-by-step plans
- Actor: Executes precise UI actions based on visual understanding
- Planner: Coordinates high-level task decomposition (when
use_plan: true) - Memory: Maintains context across task steps
π Skills System
Skills are markdown playbooks that guide the agent for specific domains:github-web-actions: GitHub navigation, repo search, starringbrowser-tasks: General web browser operations- Custom skills can be added to the
skills/directory
π Resume Capability
The agent can resume interrupted tasks by setting a stableagent_id.
Running TuriX
Basic Task
skills/local/turix-mac/scripts/run_turix.sh "Open Chrome and go to github.com"
Resume Interrupted Task
skills/local/turix-mac/scripts/run_turix.sh --resume my-task-001
β οΈ Important: The./run_turix.shcommand does NOT automatically update the task inconfig.json. You must manually editexamples/config.jsonand modify theagent.taskfield before running!
Tips for Effective Tasks
β
Good Examples:
- "Open Safari, go to google.com, search for 'TuriX AI', and click the first result"
- "Open System Settings, click on Dark Mode, then return to System Settings"
- "Open Finder, navigate to Documents, and create a new folder named 'Project X'"
β Avoid:
- Vague instructions: "Help me" or "Fix this"
- Impossible actions: "Delete all files"
- Tasks requiring system-level permissions without warning
π‘ Best Practices:
Hotkeys
- Force Stop:
Cmd+Shift+2- Immediately stops the agent
Monitoring & Logs
Logs are saved to .turix_tmp/logging.log in the project directory. Check this for:
- Step-by-step execution details
- LLM interactions and reasoning
- Errors and recovery attempts
Important Notes
How TuriX Runs
- TuriX can be started via clawdbot
execwithpty:truemode - The first launch takes 2-5 minutes to load all AI models (Brain, Actor, Planner, Memory)
- Background output is buffered - you won't see live progress until task completes or stops
Before Running
Always set PATH first:export PATH="/usr/sbin:$PATH"
cd your_dir/TuriX-CUA
/opt/anaconda3/envs/turix_env/bin/python examples/main.py
Why? The screencapture tool is located at /usr/sbin/screencapture, which is not in the default PATH.
Checking if TuriX is Running
# Check process
ps aux | grep "python.*main" | grep -v grep
# Should show something like:
# user 57425 0.0 2.4 412396704 600496 s143 Ss+ 5:56PM 0:04.76 /opt/anaconda3/envs/turix_env/bin/python examples/main.py
Note: The .turix_tmp directory may not be created until TuriX starts executing steps.
Troubleshooting
Common Issues
| Error | Solution |
NoneType has no attribute 'save' | Screen recording permission missing. Grant in System Settings and restart Terminal. |
Screen recording access denied | Run: osascript -e 'tell application "Safari" to do JavaScript "alert(1)"' and click Allow |
Conda environment not found | Ensure turix_env exists: conda create -n turix_env python=3.12 |
| Module import errors | Activate environment: conda activate turix_env then pip install -r requirements.txt |
| Permission errors for keyboard listener | Add Terminal/IDE to Accessibility permissions |
Debug Mode
Logs include DEBUG level by default. Check:
tail -f your_dir/TuriX-CUA/.turix_tmp/logging.log
Architecture
User Request
β
[Clawdbot] β [TuriX Skill] β [run_turix.sh] β [TuriX Agent]
β
βββββββββββββββββββββββββββΌββββββββββββββββββββββββββ
β β β
[Planner] [Brain] [Memory]
β β β
[Actor] ββββ [Controller] ββββ [macOS UI]
Skill System Details
Skills are markdown files with YAML frontmatter in the skills/ directory:
---
name: skill-name
description: When to use this skill
---
# Skill Instructions
High-level workflow like: Open Safari,then go to Google.
The Planner selects relevant skills based on name/description; the Brain uses full content for step guidance.
Advanced Options
| Option | Description |
use_plan: true | Enable planning for complex tasks |
use_skills: true | Enable skill selection |
resume: true | Resume from previous interruption |
max_steps: N | Limit total steps (default: 100) |
max_actions_per_step: N | Actions per step (default: 5) |
force_stop_hotkey | Custom hotkey to stop agent |
TuriX Skills System
TuriX supports Skills: markdown playbooks that help the agent behave more reliably in specific domains.
1. Built-in Skills
| Skill | Use |
github-web-actions | GitHub web actions (search repos, star, etc.) |
2. Create a Custom Skill
Create a .md file in the TuriX project's skills/ directory:
---
name: my-custom-skill
description: When performing X specific task
---
# Custom Skill
## Guidelines
- Step 1: Do this first
- Step 2: Then do that
- Step 3: Verify the result
Field definitions:
name: Skill identifier (used by the Planner to select)description: When to use this skill (Planner matches on this)- The body below: Full execution guide (used by the Brain)
3. Enable Skills
In examples/config.json:
{
"agent": {
"use_plan": true,
"use_skills": true,
"skills_dir": "skills",
"skills_max_chars": 4000
}
}
4. Run a Task with Skills
skills/local/turix-mac/scripts/run_turix.sh "Search for turix-cua on GitHub and star it"
The agent will automatically:
5. Chinese Text Support
Background:
Passing Chinese text to TuriX via a shell heredoc (cat << 'EOF' > file) can cause encoding issues because shell variable handling of UTF-8 may introduce escaping errors.
Solution:
The run_turix.sh script uses Python to handle UTF-8 correctly:
import json
# Read with UTF-8
with open(config_path, 'r', encoding='utf-8') as f:
data = json.load(f)
# Write without escaping non-ASCII text
with open(config_path, 'w', encoding='utf-8') as f:
json.dump(data, f, indent=2, ensure_ascii=False)
Key points:
encoding='utf-8' when reading/writing filesensure_ascii=False to preserve non-ASCII text6. Document Creation Best Practices
Challenges:
- Asking TuriX to collect news, then create and send a document directly
- TuriX is a GUI agent, so it can be slow and less deterministic. Prefer using TuriX only for tasks Clawdbot cannot do or where TuriX is faster.
Recommended approach: create the document yourself and let TuriX only send it
from docx import Document
doc = Document()
doc.add_heading('Title')
doc.save('/path/to/file.docx')
Suggested workflow:
web_fetch to gather information7. Example: Add a New Skill
Create skills/browser-tasks.md:
---
name: browser-tasks
description: When performing tasks in a web browser (search, navigate, fill forms).
---
# Browser Tasks
## Navigation
- Use the address bar or search box to navigate
- Open new tabs for each distinct task
- Wait for page to fully load before proceeding
## Forms
- Click on input fields to focus
- Type content clearly
- Look for submit/button to complete actions
## Safety
- Confirm before submitting forms
- Do not download files without user permission
8. Skill Development Tips
Monitoring and Debugging Guide
1. Run a Task
# Run in background (recommended)
cd /Users/tonyyan/clawd/skills/local/turix-mac/scripts
./run_turix.sh "Your task description" --background
# Or use timeout to set a max runtime
./run_turix.sh "Task" &
2. Monitor Progress
Method 1: Session logs
# List running sessions
clawdbot sessions_list
# View history
clawdbot sessions_history <session_key>
Method 2: TuriX logs
# Tail logs in real time
tail -f your_dir/TuriX-CUA/.turix_tmp/logging.log
# Or inspect completed step files
ls -lt your_dir/TuriX-CUA/examples/.turix_tmp/brain_llm_interactions.log_brain_*.txt
Method 3: Check processes
ps aux | grep "python.*main.py" | grep -v grep
Method 4: Check generated files
ls -la your_dir/TuriX-CUA/examples/.turix_tmp/*.txt
3. Log File Reference
| File | Description |
logging.log | Main log file |
brain_llm_interactions.log_brain_N.txt | Brain model conversations (one per step) |
actor_llm_interactions.log_actor_N.txt | Actor model conversations (one per step) |
π Step N- New step startedβ Eval: Success/Failed- Current step evaluationπ― Goal to achieve this step- Current goalπ οΈ Action- Executed actionβ Task completed successfully- Task completed
4. Common Monitoring Issues
| Issue | Check |
| Process unresponsive | ps aux | grep main.py |
| Stuck on step 1 | Check whether .turix_tmp/ was created |
| Model loading is slow | First run can take 1-2 minutes to load models |
| No log output | Check config.json logging_level |
5. Force Stop
Hotkey: Cmd+Shift+2 - stop the agent immediately
Command:
pkill -f "python examples/main.py"
6. View Results
After completion, the agent will:
.turix_tmp/record_info is used)Example: view a summary file
cat your_dir/TuriX-CUA/examples/.turix_tmp/latest_ai_news_summary_jan2026.txt
7. Debugging Tips
brain_llm_interactions.log_brain_*.txt for analysis and next_goalactor_llm_interactions.log_actor_*.txt for actionsrecord_info to save key info to .txt files8. Example Monitoring Flow
# 1. Run a task
./run_turix.sh "Search AI news and summarize" &
# 2. Wait a few seconds and check the process
sleep 10 && ps aux | grep main.py
# 3. Check if logs are being created
ls -la your_dir/TuriX-CUA/examples/.turix_tmp/
# 4. Tail progress in real time
tail -f your_dir/TuriX-CUA/.turix_tmp/logging.log
# 5. Check current step count
ls your_dir/TuriX-CUA/examples/.turix_tmp/brain_llm_interactions.log_brain_*.txt | wc -l