{"id":26541368,"url":"https://github.com/pnmartinez/simple-computer-use","last_synced_at":"2025-06-21T13:38:42.505Z","repository":{"id":283029359,"uuid":"945147433","full_name":"pnmartinez/simple-computer-use","owner":"pnmartinez","description":"Open source implementation for computer use, using light OCR models and LLMs.   Get Android app in link below.","archived":false,"fork":false,"pushed_at":"2025-05-31T16:23:31.000Z","size":394,"stargazers_count":25,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-01T03:32:05.691Z","etag":null,"topics":["automation","computer-use","ocr","ollama"],"latest_commit_sha":null,"homepage":"https://github.com/pnmartinez/computer-use-android-app","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pnmartinez.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-03-08T19:08:06.000Z","updated_at":"2025-06-01T02:37:14.000Z","dependencies_parsed_at":"2025-04-03T19:20:15.539Z","dependency_job_id":"f6a2e18c-279f-4233-b092-94c4ee748ddc","html_url":"https://github.com/pnmartinez/simple-computer-use","commit_stats":null,"previous_names":["pnmartinez/simple-computer-use"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/pnmartinez/simple-computer-use","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pnmartinez%2Fsimple-computer-use","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pnmartinez%2Fsimple-computer-use/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pnmartinez%2Fsimple-computer-use/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pnmartinez%2Fsimple-computer-use/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pnmartinez","download_url":"https://codeload.github.com/pnmartinez/simple-computer-use/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pnmartinez%2Fsimple-computer-use/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261130717,"owners_count":23114025,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","computer-use","ocr","ollama"],"created_at":"2025-03-22T01:20:16.129Z","updated_at":"2025-06-21T13:38:37.494Z","avatar_url":"https://github.com/pnmartinez.png","language":"Python","readme":"# 🤖 LLM PC Control\n\n[demo.webm](https://github.com/user-attachments/assets/bdd5bc25-fe88-4105-a3ed-f435f98e4f18)\n\nControl your computer with natural language commands using Large Language Models (LLMs), OCR, and voice input. This project lets you automate tasks on your desktop using everyday language.\n\n## ✨ Features\n\n- 🗣️ **Natural Language Commands**: Control your computer using everyday language\n- 🔍 **UI Element Detection**: Automatically detects UI elements on your screen\n- 📝 **Multi-Step Commands**: Execute complex sequences of actions with a single command\n- 👁️ **OCR Integration**: Reads text from your screen to better understand the context\n- ⌨️ **Keyboard and Mouse Control**: Simulates keyboard and mouse actions\n- 🎤 **Voice Input Support**: Control your PC with voice commands\n- 🌎 **Multilingual Support**: Automatic translation with preservation of UI element names\n- 🖥️ **Multiple Deployment Options**: Run locally, as a server, or in Docker\n\n## 🚀 Installation\n\n### Standard Installation\n\n```bash\n# Clone the repository\ngit clone https://github.com/yourusername/llm-pc-control.git\ncd llm-pc-control\n\n# Install the package\npip install -e .\n```\n\n### Docker Installation\n\nFor a Docker-based setup:\n\n1. Make sure Docker and Docker Compose are installed\n2. Ensure [Ollama](https://ollama.ai/) is installed and running locally\n3. Run the setup script:\n\n```bash\n./scripts/docker/setup-docker-x11.sh\n```\n\n## 📋 Requirements\n\n- Python 3.8 or higher\n- Ollama (for local LLM inference)\n- EasyOCR and PaddleOCR (for text recognition)\n- PyAutoGUI (for keyboard and mouse control)\n- PyAudio (for voice input)\n- OpenAI Whisper (for speech-to-text)\n\n## 📖 Usage\n\n### Command Line Interface\n\n```bash\n# Set up the environment (download models, check dependencies)\nllm-pc-control setup\n\n# Run a single command\nllm-pc-control run \"click on the button\"\n\n# Run in interactive mode\nllm-pc-control interactive\n```\n\n### Voice Control Server\n\nThe system includes a refactored voice control server that processes commands using a multi-step approach:\n\n1. **Step Identification**: Breaks down commands into discrete, actionable steps\n2. **OCR Target Identification**: Identifies text to be detected on screen\n3. **PyAutoGUI Command Generation**: Converts steps into specific PyAutoGUI commands\n4. **Sequential Execution**: Executes steps in order with error handling\n\nTo run the server:\n\n```bash\n# Basic usage with defaults\npython -m llm_control voice-server\n\n# With custom options\npython -m llm_control voice-server --port 8080 --whisper-model medium\n```\n\n### Server API Endpoints\n\nThe server provides the following API endpoints:\n\n- **GET /health**: Check server status\n- **POST /command**: Execute a text command\n- **POST /voice-command**: Process a voice command from audio data\n- **POST /transcribe**: Transcribe audio without executing commands\n- **POST /translate**: Translate text to English\n\n#### Example: Sending a Direct Command\n\n```bash\ncurl -X POST http://localhost:5000/command \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"command\": \"open Firefox, go to gmail.com and compose a new email\"}'\n```\n\n#### Example: Sending a Voice Command\n\n```bash\ncurl -X POST http://localhost:5000/voice-command \\\n  -F \"audio_file=@recording.wav\" \\\n  -F \"translate=true\" \\\n  -F \"language=es\"\n```\n\n## 🐳 Docker Deployment\n\n### Docker Components\n\nThe Docker setup consists of:\n\n1. **Voice Control Server**: A Flask-based server for processing commands\n2. **Ollama**: Running locally on your host machine\n3. **X11 Configuration**: For screenshot and UI interaction capabilities\n\n### Starting with Docker\n\nAfter running the setup script:\n\n```bash\n# Start the voice control server\ndocker-compose up -d\n\n# Check logs\ndocker-compose logs -f\n```\n\n## 🔄 Using Local Ollama\n\nThe Docker configuration is designed to use a locally running Ollama instance:\n\n1. **Install and Start Ollama**:\n   ```bash\n   ./scripts/tools/start-ollama.sh\n   ```\n\n2. **Start the Voice Control Server**:\n   ```bash\n   docker-compose up -d\n   ```\n\nBenefits of using local Ollama:\n- Better performance with direct GPU access\n- Easier updates independent of the server\n- Shared models with other applications\n- Reduced complexity in container management\n\n## 🔍 Troubleshooting\n\n### Docker X11 Issues\n\nIf you encounter X11 connection issues:\n\n```bash\n# Fix X11 permissions\n./scripts/setup/fix-x11.sh\n\n# Diagnose UI detection issues\n./scripts/docker/docker-diagnose-ui.sh\n```\n\n### Common Issues\n\n1. **No audio input detected**: Check your microphone settings and PyAudio installation\n2. **LLM connection failed**: Verify Ollama is running and accessible\n3. **OCR not working properly**: Ensure proper lighting and screen resolution\n4. **Commands not executing**: Check PyAutoGUI permissions\n\n## 🧪 Development Guide\n\n### Project Structure\n\n```\nllm-control/\n├── data/                # Data files\n├── docs/                # Documentation\n├── llm_control/         # Main Python package\n├── scripts/             # Utility scripts\n│   ├── docker/          # Docker-related scripts\n│   ├── setup/           # Installation scripts\n│   └── tools/           # Utility tools\n├── tests/               # Test suite\n├── logs/                # Log files\n└── screenshots/         # Screenshots directory\n```\n\n### Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Implement your changes\n4. Add tests if applicable\n5. Submit a pull request\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the LICENSE file for details.\n\n## 🙏 Acknowledgments\n\n- Inspired by [OmniParser](https://github.com/microsoft/OmniParser) by Microsoft\n- Uses various open-source projects including Ollama, PyAutoGUI, and EasyOCR\n\n## 💡 Examples\n\nHere are some examples of commands you can use:\n\n- \"Click on the Submit button\"\n- \"Type 'Hello, world!' in the search box\"\n- \"Press Enter\"\n- \"Move to the top-right corner of the screen\"\n- \"Double-click on the file icon\"\n- \"Right-click on the image\"\n- \"Scroll down\"\n- \"Click on the button, then type 'Hello', then press Enter\"\n\n## ⚙️ How It Works\n\n1. 📸 **Screenshot Analysis**: Takes a screenshot of your screen\n2. 🔎 **UI Detection**: Analyzes the screenshot to detect UI elements\n3. 🔄 **Command Parsing**: Parses your natural language command into steps\n4. ⚡ **Action Generation**: Generates the corresponding actions for each step\n5. ▶️ **Execution**: Executes the actions using PyAutoGUI\n\n## 🤝 Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the LICENSE file for details.\n\n## Voice Command Client\n\nThe LLM PC Control system supports voice commands through a client-server architecture. \n\n### Running the Voice Command Client\n\nThe voice command client allows you to speak commands into your microphone, which are then transcribed and executed by the system.\n\n```bash\npython -m llm_control voice-server\n```\n\nOptions:\n- `--list-devices`: List available audio input devices\n- `--device ID`: Audio input device ID\n- `--whisper-model`: Whisper model size (choices: tiny, base, small, medium, large)\n- `--transcribe-only`: Only transcribe without executing commands\n- `--translate`: Enable automatic translation of Spanish voice commands to English\n- `--ollama-model`: Ollama model to use for translation (default: llama3)\n- `--ollama-host`: Ollama host URL\n\nExample:\n```bash\n# List audio devices\npython -m llm_control voice-server --list-devices\n\n# Record for 8 seconds with a specific device\npython -m llm_control voice-server --device 1\n\n# Use a different Whisper model\npython -m llm_control voice-server --whisper-model medium\n\n# Only transcribe without executing\npython -m llm_control voice-server --transcribe-only\n```\n\n### Example Voice Commands\n\nYou can speak commands naturally, such as:\n- \"Open Firefox and go to Google.com\"\n- \"Click on the search box and type hello world\"\n- \"Press Enter\"\n- \"Take a screenshot\"\n\nThe system will transcribe your voice command and execute it as if it was typed into the command interface.\n\n### Local Voice Command Testing\n\nIf you don't want to set up the full server, you can use the local testing script:\n\n```bash\npython -m llm_control simple-voice\n```\n\nThis script has similar options to the client:\n\n```bash\n# List audio devices\npython -m llm_control simple-voice --list-devices\n\n# Record for 8 seconds with a specific device\npython -m llm_control simple-voice --device 1\n\n# Use a different Whisper model\npython -m llm_control simple-voice --whisper-model medium\n\n# Only transcribe without executing\npython -m llm_control simple-voice --transcribe-only\n```\n\n### Spanish to English Translation\n\nThe local testing script now supports automatic translation of Spanish voice commands to English using Ollama:\n\n```bash\n# Enable automatic Spanish detection and translation\npython -m llm_control simple-voice --translate\n\n# Specify a different Ollama model\npython -m llm_control simple-voice --translate --ollama-model mixtral\n\n# Specify a custom Ollama host\npython -m llm_control simple-voice --translate --ollama-host http://192.168.1.100:11434\n```\n\nThe script will automatically detect Spanish commands and translate them to English before execution. You need to have Ollama running locally with your preferred model installed.\n\n#### Installing Ollama\n\nTo use the translation feature, you need to have Ollama installed:\n\n1. Install Ollama from [ollama.ai](https://ollama.ai/)\n2. Run Ollama in a separate terminal:\n   ```bash\n   ollama serve\n   ```\n3. Pull your preferred model:\n   ```bash\n   ollama pull llama3\n   ```\n\nThe local testing script uses Whisper directly without a server, which is useful for quick tests and debugging.\n\n### Troubleshooting Voice Commands\n\n#### PortAudio Not Found\n\nIf you see an error like `OSError: PortAudio library not found` when trying to use voice commands, you need to install the PortAudio library on your system. We've provided a helper script to install it:\n\n```bash\n# For Linux/macOS\nsudo python -m llm_control install-system-deps\n\n# For Windows (run as Administrator)\npython -m llm_control install-system-deps\n```\n\nOr install manually based on your operating system:\n\n- **Ubuntu/Debian**: `sudo apt-get install portaudio19-dev`\n- **Fedora/RHEL**: `sudo dnf install portaudio-devel`\n- **Arch Linux**: `sudo pacman -S portaudio`\n- **macOS**: `brew install portaudio`\n- **Windows**: PortAudio is included in the Windows wheel for sounddevice\n\nAfter installing PortAudio, reinstall the sounddevice package:\n\n```bash\npip uninstall -y sounddevice\npip install sounddevice\n```\n\n## WebSocket Server for Mobile Clients\n\nThe LLM PC Control system now includes a WebSocket server that can accept connections from mobile clients, including Android applications. This enables you to send voice commands from your mobile device to control your computer.\n\n### Running the WebSocket Server\n\nYou can start the WebSocket server using the CLI script:\n\n```bash\npython -m llm_control android-server-rest\n```\n\nOptions:\n- `--host`: Host address to bind the server to (default: 0.0.0.0)\n- `--port`: Port to bind the server to (default: 5000)\n- `--debug`: Run the server in debug mode\n- `--whisper-model`: Whisper model size (choices: tiny, base, small, medium, large)\n- `--log-level`: Logging level (choices: DEBUG, INFO, WARNING, ERROR, CRITICAL)\n- `--enable-translation`: Enable automatic Spanish to English translation\n- `--ollama-model`: Ollama model to use for translation (default: llama3)\n- `--ssl`: Enable SSL/TLS for secure WebSocket connections (WSS)\n- `--ssl-cert`: Path to SSL certificate file (.crt or .pem)\n- `--ssl-key`: Path to SSL private key file (.key)\n\nExample:\n\n```bash\n# Start the server with default settings\npython -m llm_control android-server-rest\n\n# Start on a specific host and port\npython -m llm_control android-server-rest --host 192.168.1.100 --port 8080\n\n# Enable secure WebSocket (WSS) with SSL\npython -m llm_control android-server-rest --ssl --ssl-cert /path/to/cert.pem --ssl-key /path/to/key.pem\n\n# Enable translation for Spanish commands\npython -m llm_control android-server-rest --enable-translation --ollama-model llama3\n```\n\n### Connecting Mobile Clients\n\nMobile clients can connect to the server using the WebSocket protocol. The server supports both regular WebSocket (ws://) and secure WebSocket (wss://) connections.\n\nEndpoints:\n- WebSocket: `ws://\u003chost\u003e:\u003cport\u003e/socket.io/` or `wss://\u003chost\u003e:\u003cport\u003e/socket.io/` (if SSL is enabled)\n- REST API: `http://\u003chost\u003e:\u003cport\u003e/` or `https://\u003chost\u003e:\u003cport\u003e/` (if SSL is enabled)\n\nThe WebSocket server accepts audio data from clients, transcribes it using Whisper, executes the command on the server computer, and sends back the results to the client.\n\n### Android Client Example\n\nThe repository includes an example Android client (`AudioService.kt`) that demonstrates how to record audio and send it to the server using WebSockets. The client can be configured to connect to the server using either the regular WebSocket protocol (ws://) or the secure WebSocket protocol (wss://).\n\nTo use the Android client with your LLM PC Control server:\n\n1. Start the server with the appropriate options (enable SSL if needed)\n2. Configure the Android client with the correct server address and port\n3. Record audio commands on your Android device\n4. The server will transcribe, process, and execute the commands\n\nNote: For secure connections (wss://), you need to generate a valid SSL certificate and configure the server to use it.\n\n### Generating SSL Certificates for Testing\n\nFor testing purposes, you can generate a self-signed SSL certificate:\n\n```bash\n# Generate a private key\nopenssl genrsa -out server.key 2048\n\n# Generate a self-signed certificate\nopenssl req -new -x509 -key server.key -out server.crt -days 365 -subj \"/CN=localhost\"\n```\n\nThen run the server with these certificates:\n\n```bash\npython -m llm_control android-server-rest --ssl --ssl-cert server.crt --ssl-key server.key\n```\n\nNote: Mobile clients will need to accept the self-signed certificate as a security exception.\n\n## Android Compatibility: REST API vs WebSockets\n\nThe LLM PC Control server supports two different connection methods for Android clients:\n\n### REST API Approach (Recommended)\n\nThe REST API approach is simpler and more reliable for mobile clients. It uses standard HTTP/HTTPS requests that are well-supported on all platforms and avoids the complexity of WebSocket connections.\n\nTo start the server with the REST API mode:\n\n```bash\n# Start with REST API mode (recommended for Android)\npython -m llm_control android-server-rest --qr\n\n# Generate a QR code for easy connection\npython -m llm_control android-server-rest --qr-file connection.png\n```\n\n#### REST API Endpoints\n\nThe Android REST API provides the following endpoints:\n\n- `GET /api/info` - Discover server capabilities and available endpoints\n- `GET /api/system-info` - Get system information (CPU, memory, disk usage)\n- `POST /transcribe` - Transcribe audio to text\n- `POST /command` - Execute a command directly\n- `POST /voice-command` - Process and execute a voice command\n\n#### Connecting with QR Codes\n\nThe server can generate a QR code that contains all the connection information. Android clients can scan this QR code to automatically configure their connection settings.\n\n#### Android Integration Guide\n\nFor a comprehensive guide on integrating the REST API with Android apps, see the [Android API Integration Guide](ANDROID_API.md). This guide includes:\n\n- Detailed API documentation\n- Android code examples using Retrofit and OkHttp\n- SSL certificate handling for Android\n- Troubleshooting common issues\n- QR code integration\n\n### WebSocket Approach (Legacy)\n\nFor backward compatibility, the server still supports WebSocket connections. However, this approach is more complex and may have issues with certain network configurations.\n\nTo start the server with WebSocket support:\n\n```bash\n# Start with WebSocket support (legacy)\npython -m llm_control android-server\n\n# Use a custom WebSocket path\npython -m llm_control android-server --android-wss-path /custom-ws\n```\n\n### SSL/TLS Considerations\n\nWhen using either approach, it's recommended to enable SSL/TLS for secure connections:\n\n```bash\n# Use self-signed certificates with REST API\npython -m llm_control android-server-rest --ssl --self-signed-ssl\n\n# Use custom certificates with REST API\npython -m llm_control android-server-rest --ssl --ssl-cert your-cert.crt --ssl-key your-key.key\n```\n\nNote: Mobile clients will need to either add a security exception for self-signed certificates or have the certificate properly installed.\n\n## Testing and Troubleshooting\n\n### Testing the REST API\n\nThe project includes several tools to help you test and troubleshoot the REST API:\n\n#### Simple REST Server\n\nFor quick testing without setting up the full LLM PC Control server, you can use the simple REST server:\n\n```bash\n# Start the simple REST server\npython -m llm_control rest-server\n```\n\n#### Testing API Endpoints\n\nTo test the REST API endpoints, use the test script:\n\n```bash\n# Test the API with default settings\npython -m llm_control test-rest-api\n\n# Test against a specific server\npython -m llm_control test-rest-api --url https://your-server-ip:5000\n\n# Skip command testing\npython -m llm_control test-rest-api --no-command\n\n# Verbose output for debugging\npython -m llm_control test-rest-api --verbose\n```\n\n#### Android Client Simulation\n\nTo simulate how an Android client would interact with the REST API:\n\n```bash\n# Run the Android client simulation\npython -m llm_control android-client --url https://your-server-ip:5000\n\n# Test with a voice command audio file\npython -m llm_control android-client --audio-file your-audio-file.wav\n```\n\n### Troubleshooting Common Issues\n\n#### SSL Certificate Issues\n\nIf you're having trouble with SSL certificates on Android:\n\n1. Ensure the SSL certificate includes your server's IP address in the Subject Alternative Name (SAN) field\n2. For self-signed certificates, add the certificate to your Android device's trusted certificates\n3. Try using `--no-ssl` during testing to verify the REST API works without SSL\n\n#### Connection Issues\n\nIf the Android client can't connect to the server:\n\n1. Make sure the server is accessible from your Android device (check firewalls, network configuration)\n2. Verify the server is running and the port is open\n3. Use the `test_rest_api.py` script to verify the API is working correctly\n\n#### API Endpoint Not Found\n\nIf you get \"404 Not Found\" errors:\n\n1. Use the `/api/info` endpoint to discover the correct endpoint URLs\n2. Check that you're using the correct URL path for your server configuration\n3. Verify the server is configured correctly for Android compatibility\n\n## UI Detection Troubleshooting\n\nIf you're experiencing issues with the UI detection module, you can use the included diagnostic tool to help identify and resolve problems:\n\n```bash\n# Run the UI detection diagnostic tool\npython -m llm_control diagnose-ui\n```\n\nThis tool will:\n1. Check if all required dependencies are installed\n2. Test the screenshot functionality\n3. Attempt to run OCR on a test screenshot\n4. Test YOLO-based UI element detection\n5. Provide installation recommendations for any missing dependencies\n\nIf you see the error \"UI detection module not available\", it's likely that you're missing some required dependencies. The diagnostic tool will help you identify which ones and provide installation instructions.\n\nYou can install all UI detection dependencies at once using:\n\n```bash\n# Install with UI detection dependencies\npip install -e .[ui]\n```\n\n### Visualizing UI Element Detection\n\nTo help debug issues with UI element detection, you can use the included visualization tool:\n\n```bash\n# Search for a specific UI element and visualize all potential matches\npython -m llm_control visualize-ui \"Firefox\"\n\n# Save the visualization to a specific file\npython -m llm_control visualize-ui \"Settings\" --output settings_matches.png\n\n# Use an existing screenshot\npython -m llm_control visualize-ui \"Menu\" --screenshot my_screenshot.png\n\n# Show more or fewer top matches\npython -m llm_control visualize-ui \"Button\" --top 10\n```\n\nThis tool will:\n1. Take a screenshot (or use an existing one)\n2. Detect all UI elements and text on the screen\n3. Find potential matches for your target text\n4. Create a visualization that highlights the matches, color-coded by confidence:\n   - Green: High confidence matches (\u003e80%)\n   - Yellow: Medium confidence matches (50-80%)\n   - Red: Low confidence matches (\u003c50%)\n5. Show details about each match, including its confidence score\n\nThe visualization tool is helpful for understanding why certain UI elements might not be detected correctly, or why the system might be choosing the wrong element when multiple similar options are available.\n\n### Common Issues\n\n1. **Circular imports**: If you see import errors related to circular dependencies, make sure your code is updated to the latest version which resolves these issues.\n\n2. **Missing models**: Some models (like YOLO or OCR language models) might need to be downloaded the first time you use them, which can cause delays or timeouts.\n\n3. **GPU requirements**: For best performance, UI detection components work best with GPU acceleration. Make sure you have the CUDA-enabled version of PyTorch installed if you have a compatible GPU.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpnmartinez%2Fsimple-computer-use","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpnmartinez%2Fsimple-computer-use","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpnmartinez%2Fsimple-computer-use/lists"}