{"id":37622701,"url":"https://github.com/damianvtran/local-operator-ui","last_synced_at":"2026-01-16T10:42:13.512Z","repository":{"id":280938324,"uuid":"942256855","full_name":"damianvtran/local-operator-ui","owner":"damianvtran","description":"User interface for the Local Operator on-device agent environment.  Local Operator is an AI agents platform that gives you an integrated team of personal assistants that can work behind the scenes to handle daily monotonous tasks.","archived":false,"fork":false,"pushed_at":"2025-08-02T16:23:47.000Z","size":122345,"stargazers_count":20,"open_issues_count":1,"forks_count":8,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-09-06T23:17:11.230Z","etag":null,"topics":["agentic-ai","assistant-chat-bots","chatbot","local","python"],"latest_commit_sha":null,"homepage":"https://local-operator.com","language":"TypeScript","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/damianvtran.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-03-03T20:31:14.000Z","updated_at":"2025-08-13T07:12:18.000Z","dependencies_parsed_at":"2025-03-06T05:32:11.911Z","dependency_job_id":"7af78f6c-bb97-4c02-a19c-abc79e821fc0","html_url":"https://github.com/damianvtran/local-operator-ui","commit_stats":null,"previous_names":["damianvtran/local-operator-ui"],"tags_count":76,"template":false,"template_full_name":null,"purl":"pkg:github/damianvtran/local-operator-ui","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/damianvtran%2Flocal-operator-ui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/damianvtran%2Flocal-operator-ui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/damianvtran%2Flocal-operator-ui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/damianvtran%2Flocal-operator-ui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/damianvtran","download_url":"https://codeload.github.com/damianvtran/local-operator-ui/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/damianvtran%2Flocal-operator-ui/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28478050,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T06:30:42.265Z","status":"ssl_error","status_checked_at":"2026-01-16T06:30:16.248Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["agentic-ai","assistant-chat-bots","chatbot","local","python"],"created_at":"2026-01-16T10:42:13.308Z","updated_at":"2026-01-16T10:42:13.469Z","avatar_url":"https://github.com/damianvtran.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./resources/local-operator-icon-2-dark-clear.png\"\u003e\n  \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"./resources/local-operator-icon-2-light-clear.png\"\u003e\n  \u003cimg alt=\"Shows a black Local Operator Logo in light color mode and a white one in dark color mode.\"\n       src=\"./resources/local-operator-icon-2-light-clear.png\"\u003e\n\u003c/picture\u003e\n\n\u003ch1 align=\"center\"\u003eLocal Operator: AI Agent Assistants On Your Device\u003c/h1\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003ch2\u003e🤖 Personal AI Assistants that Turn Ideas into Action\u003c/h2\u003e\n  \u003cp\u003e\u003ci\u003eReal-time code execution on your device through natural conversation\u003c/i\u003e\u003c/p\u003e\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./resources/preview-example.gif\" alt=\"Local Operator UI Dashboard Example\" style=\"width: 640px\"\u003e\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\n**\u003cspan style=\"color: #38C96A\"\u003eLocal Operator\u003c/span\u003e** empowers you to run Python code safely on your own machine through an intuitive chat interface. The AI agent:\n\n🎯 **Plans \u0026 Executes** - Breaks down complex goals into manageable steps and executes them with precision.\n\n🔒 **Prioritizes Security** - Built-in safety checks by independent AI review and user confirmations keep your system protected\n\n🌐 **Flexible Deployment** - Run completely locally with Ollama models or leverage cloud providers like OpenAI\n\n🔧 **Problem Solving** - Intelligently handles errors and roadblocks by adapting approaches and finding alternative solutions\n\nThis project is proudly open source under the MIT license. We believe AI tools should be accessible to everyone, given their transformative impact on productivity. Your contributions and feedback help make this vision a reality!\n\n\u003e \"Democratizing AI-powered productivity, one conversation at a time.\"\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/damianvtran/local-operator\"\u003eAgent Backend\u003c/a\u003e •\n  \u003ca href=\"https://local-operator.com\"\u003eLearn More\u003c/a\u003e •\n  \u003ca href=\"https://github.com/damianvtran/local-operator/tree/main/examples/notebooks\"\u003eExamples\u003c/a\u003e\n\u003c/div\u003e\n\n## 💡 Overview\n\nThe Local Operator UI is a user interface for managing and interacting with the Local Operator agent environment. It is built using Electron, React, and TypeScript, leveraging modern web technologies for a rich and responsive user experience.\n\n👉 For the agent environment CLI and Server backend, see the [Local Operator GitHub repository](https://github.com/damianvtran/local-operator).\n\n## 🚀 Getting Started\n\n### Prerequisites\n\nBefore you begin, ensure you have the following installed:\n\n- **Node.js**: Version 22.13.1 or higher. It's recommended to use [nvm](https://github.com/nvm-sh/nvm) for managing Node.js versions.\n\nThe Local Operator backend is now bundled with the application and will be installed automatically when you first run the application. If you prefer to use an existing Local Operator backend installation, the application will detect it and use it instead.\n\n### NPM Installation\n\nYou can install and run Local Operator UI directly using [npx](https://docs.n8n.io/hosting/installation/npm/).\n\n```bash\n# Install and run in one command\nnpx local-operator-ui\n```\n\nThis will download and execute the latest version of the Local Operator UI, launching the application immediately.\n\n### Manual Installation\n\nAlternatively, without npx, you can install the package globally with standard npm:\n\n```bash\n# Install globally\nnpm install -g local-operator-ui\n\n# Run the application\nlocal-operator-ui\n```\n\nAfter installation, the application will automatically connect to the Local Operator backend API at `http://localhost:1111` by default.\n\n### Desktop Applications\n\nPre-built desktop applications are available for macOS, Windows, and Linux. Visit the [Releases](https://github.com/damianvtran/local-operator-ui/releases) page to download the latest version for your platform.\n\n- **macOS**: Download the `.dmg` file and drag the application to your Applications folder.\n- **Windows**: Download the `.exe` installer and follow the installation prompts.\n- **Linux**: Download the appropriate package (`.deb`, `.rpm`, or `.AppImage`) for your distribution.\n\n### Building from Source\n\nIf you want to build the application from source, see the [BUILD.md](./docs/BUILD.md) file for detailed instructions.\n\n#### Python Bundling\n\nFor macOS builds, we now bundle a standalone Python directly with the application instead of requiring Homebrew installation. This approach:\n\n- Eliminates the need for admin privileges during installation\n- Makes the application more self-contained\n- Works offline\n- Provides a more reliable user experience\n- Supports installation of Python packages via pip\n\nTo set up the standalone Python for development:\n\n```bash\n# Run the setup script to download and configure standalone Python\npnpm setup-python-standalone\n```\n\nThis uses [python-build-standalone](https://github.com/indygreg/python-build-standalone), the same approach used by Datasette Desktop and PyOxidizer.\n\nFor more details, see the [PYTHON_BUNDLING.md](./docs/PYTHON_BUNDLING.md) documentation.\n\n### Code Signing and Notarization\n\nAll desktop applications are code signed and notarized to ensure security and trust:\n\n- **macOS**: Applications are signed with an Apple Developer ID and notarized with Apple's notarization service\n- **Windows**: Applications are signed with a trusted code signing certificate\n- **Linux**: While code signing is less common on Linux, packages are built with integrity checks\n\nFor detailed information about the code signing and notarization process, see the [CODE_SIGNING.md](./docs/CODE_SIGNING.md) document.\n\n## 🗂️ Project Structure\n\nThe codebase is organized for modularity and code reuse:\n\n- `src/renderer/src/shared/`: Contains all shared code, including components, hooks, stores, configuration, themes, and utilities. Use the `@shared/` path alias for imports.\n- `src/renderer/src/features/`: Contains feature-specific code for the UI, organized by domain.\n- `src/renderer/src/app.tsx`, `main.tsx`, etc.: Entry points for the Electron renderer process.\n- `build/`, `resources/`, `scripts/`: Build assets, static resources, and build scripts.\n\n**Import Conventions:**\n\n- Use `@shared/` for shared modules (e.g., `import { useAgents } from \"@shared/hooks/use-agents\"`).\n- Use `@features/` for feature-specific modules.\n- The old aliases (`@renderer`, `@components`, `@hooks`, etc.) have been removed in favor of this unified structure.\n\nFor more details on building or contributing, see the [Contributing Guide](./CONTRIBUTING.md) and [BUILD.md](./docs/BUILD.md).\n\n## ✨ Features\n\nThe Local Operator UI provides a comprehensive interface for interacting with AI agents:\n\n### Chat Interface\n\n- Real-time chat with AI agents\n- Markdown rendering for code blocks and formatted text\n- Syntax highlighting for code snippets\n- Message history and conversation management\n\n### Agent Management\n\n- Create, update, and delete AI agents\n- Configure agent settings:\n  - General settings (name, description, model)\n  - Chat settings (temperature, top_p, etc.)\n  - Security settings (security prompt, execution permissions)\n\n### Settings\n\n- System prompt configuration\n- API credentials management\n- Application configuration\n\n### API Integration\n\n- Seamless integration with the Local Operator backend API\n- Real-time status updates for long-running operations\n- Error handling and retry mechanisms\n\n### Bundled Backend\n\n- The Local Operator backend is now bundled with the application\n- Automatic installation of the backend when first running the application\n- Automatic detection and use of existing backend installations\n- Cross-platform support for Windows, macOS, and Linux\n\n## 🤝 Contributing\n\nContributions are welcome! Please see our [Contributing Guide](./CONTRIBUTING.md) for details on how to get started with development, code style guidelines, and our contribution process.\n\n## 🐛 Troubleshooting\n\n### Common Issues\n\n#### Application fails to connect to the backend\n\n- The application will automatically install and start the Local Operator backend if it's not already running\n- If you have an existing backend running on `http://localhost:1111`, the application will use that instead\n- Check that the `VITE_LOCAL_OPERATOR_API_URL` environment variable has not been set to a different URL. This value is set automatically to `http://localhost:1111` if a custom `.env` doesn't specify otherwise\n- If you want to disable the automatic backend management, set the `VITE_DISABLE_BACKEND_MANAGER` environment variable to `true`\n- Verify network connectivity between the UI and the backend\n\n#### Backend installation fails\n\n- Check the application logs for error messages\n- For macOS, the application now uses a bundled Python framework instead of requiring Homebrew and pyenv\n- If you encounter issues with the bundled Python, see the [PYTHON_BUNDLING.md](./docs/PYTHON_BUNDLING.md) documentation\n- As a fallback, you can try installing the backend manually with `pip install local-operator` and then start it with `local-operator serve`\n\n#### Development server crashes\n\n- Check the console for error messages\n- Ensure all dependencies are installed correctly\n- Try clearing the node_modules folder and reinstalling dependencies\n\n#### UI rendering issues\n\n- Check for console errors in the developer tools\n- Ensure you're using a compatible version of Node.js\n- Try restarting the development server\n\n### Getting Help\n\nIf you encounter issues not covered here, please:\n\n1. Check the [GitHub Issues](https://github.com/damianvtran/local-operator-ui/issues) for similar problems\n2. Open a new issue if your problem hasn't been reported\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdamianvtran%2Flocal-operator-ui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdamianvtran%2Flocal-operator-ui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdamianvtran%2Flocal-operator-ui/lists"}