Skip to main content

A personal assistant that operates your computer. Just like you.

Project description

Operator-Use

PyPI Downloads Python License Platform

A personal assistant that operates your computer. Just like you.

Operator is an AI agent you message from anywhere Telegram, Discord, Slack, or Twitch and it works on your computer. It reads files, browses the web, runs commands, clicks through apps, and remembers who you are. It runs locally, connects to any LLM, and gets smarter over time.

Inspired by nanobot and OpenClaw. Thanks for these wonderful projects.


Key Features

🖥️ Desktop Control — Click, type, scroll, take screenshots, and open apps via native accessibility APIs (Windows UIA, macOS Accessibility (Beta), Linux (in progress)).

🌐 Web Browsing — Search, navigate, and extract content from the web.

💬 Multi-Channel — Message it through Telegram, Discord, Slack, Twitch, or MQTT.

🧠 Memory — Remembers you, your preferences, and past conversations across sessions.

📅 Scheduling — Cron-based recurring tasks and a heartbeat system for proactive work.

🎙️ Voice I/O — Full STT and TTS support across multiple providers.

🔌 Any LLM — Works with OpenAI, Anthropic, Google, Mistral, Groq, Ollama, and many more.


Table of Contents


📦 Install

With uvx (no install needed):

uvx operator-use onboard

With uv (installs globally):

uv tool install operator-use
operator onboard

From PyPI:

pip install operator-use
operator onboard

Update

pip install -U operator-use
uv tool upgrade operator-use

🚀 Quick Start

1. Run the setup wizard

operator onboard

This walks you through choosing an LLM provider, entering your API key, and connecting a messaging channel.

2. Start the agent

operator

That's it. Message your bot and it will start working.


💬 Channels

Connect Operator to the platform you already use:

Channel What you need
Telegram Bot token from @BotFather
Discord Bot token + Message Content intent
Slack Bot token + App-Level token
Twitch OAuth token + channel name
MQTT Broker host + topic
Telegram (Recommended)

1. Create a bot

  • Open Telegram, search @BotFather
  • Send /newbot, follow the prompts
  • Copy the bot token

2. Configure via wizard

operator onboard

Select Telegram and paste your token when prompted.

Or edit your config directly:

{
  "channels": {
    "telegram": {
      "enabled": true,
      "token": "YOUR_BOT_TOKEN",
      "allow_from": ["YOUR_USER_ID"]
    }
  }
}

Find your user ID by messaging @userinfobot on Telegram.

3. Run

operator run
Discord

1. Create a bot

2. Enable intents

In the Bot settings, enable MESSAGE CONTENT INTENT.

3. Get your User ID

  • Discord Settings → Advanced → enable Developer Mode
  • Right-click your username → Copy User ID

4. Configure

{
  "channels": {
    "discord": {
      "enabled": true,
      "token": "YOUR_BOT_TOKEN",
      "allow_from": ["YOUR_USER_ID"]
    }
  }
}

5. Invite the bot

  • OAuth2 → URL Generator → Scopes: bot
  • Bot Permissions: Send Messages, Read Message History
  • Open the invite URL and add the bot to your server

6. Run

operator
Slack

1. Create a Slack app

  • Go to api.slack.com/apps → Create New App → From scratch
  • Under OAuth & Permissions, add bot token scopes: chat:write, im:history, im:read
  • Install the app to your workspace and copy the Bot User OAuth Token

2. Enable Socket Mode

  • Under Socket Mode, enable it and generate an App-Level Token with connections:write scope

3. Configure

{
  "channels": {
    "slack": {
      "enabled": true,
      "bot_token": "xoxb-...",
      "app_token": "xapp-..."
    }
  }
}

4. Run

operator run
Twitch

1. Get an OAuth token

Generate a chat OAuth token at twitchapps.com/tmi.

2. Configure

{
  "channels": {
    "twitch": {
      "enabled": true,
      "token": "oauth:YOUR_TOKEN",
      "nick": "your_bot_username",
      "channel": "your_channel_name"
    }
  }
}

3. Run

operator run

🤖 Supported LLMs

Operator works with any of these providers:

Provider Notes
OpenAI GPT-4o, o3, etc.
Anthropic Claude 3.5/4 series
Google Gemini 2.0/2.5 series
Mistral All Mistral models
Groq Ultra-fast inference
Ollama Local models
Azure OpenAI Enterprise Azure deployments
Cerebras Fast inference
DeepSeek DeepSeek-V3, R1
NVIDIA NVIDIA NIM
OpenRouter 200+ models via one API
vLLM Self-hosted inference
LiteLLM Unified proxy
GitHub Copilot Via Copilot API

Configure your provider during operator onboard or in your config file.


🎙️ Voice (STT / TTS)

Provider STT TTS
OpenAI
Google
Groq
ElevenLabs
Deepgram
Sarvam

🖥️ CLI Reference

operator onboard     Interactive setup wizard
operator run         Start the agent
operator agent       Agent configuration
operator gateway     Manage channels
operator channels    List active channels
operator models      List available models
operator sessions    View conversation sessions
operator status      Show system status
operator logs        Stream logs

🐳 Docker

docker build -t operator .
docker run --env-file .env operator

Exposed ports:

Port Purpose
8080 Webhook server (Telegram / Discord / Slack)
8765 ACP server (Agent Communication Protocol)
1883 MQTT (plain)
8883 MQTT (TLS)
9222 Chrome DevTools Protocol

Contributing

Contributions are welcome! Please read CONTRIBUTING.md for branch strategy, dev setup, code style, and PR guidelines.


Security

To report a vulnerability, please follow the steps in SECURITY.md. Do not open a public issue for security concerns.


Citation

If you use Operator-Use in your research or project, please cite it as:

@software{operator_use_2026,
  author    = {CursorTouch},
  title     = {Operator-Use: An AI Agent That Operates Your Computer},
  year      = {2026},
  url       = {https://github.com/CursorTouch/Operator-Use},
  license   = {MIT}
}

Star History

Star History Chart


License

This project is licensed under the MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

operator_use-0.2.8.tar.gz (563.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

operator_use-0.2.8-py3-none-any.whl (841.0 kB view details)

Uploaded Python 3

File details

Details for the file operator_use-0.2.8.tar.gz.

File metadata

  • Download URL: operator_use-0.2.8.tar.gz
  • Upload date:
  • Size: 563.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for operator_use-0.2.8.tar.gz
Algorithm Hash digest
SHA256 733d363093b1da962fa892b26021bd16204a69a119a9efdc6e077608ec208c6b
MD5 0fa7b2ffaa908c9056c32b1e417fb7ae
BLAKE2b-256 b98e1180822d77e0dfa7d0fac8d8a7199ad0266d0514203e5462f6fc6271d26c

See more details on using hashes here.

Provenance

The following attestation bundles were made for operator_use-0.2.8.tar.gz:

Publisher: publish.yml on CursorTouch/Operator-Use

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file operator_use-0.2.8-py3-none-any.whl.

File metadata

  • Download URL: operator_use-0.2.8-py3-none-any.whl
  • Upload date:
  • Size: 841.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for operator_use-0.2.8-py3-none-any.whl
Algorithm Hash digest
SHA256 52b3961a1779fcd8ac41fdc4eeb82b5367506dc82ca2ddfbd889d87de4f0d506
MD5 5588a3afe5e74302c24da137d8287af3
BLAKE2b-256 be3ea03d7f3c85048527d25367466ba079e51df22702f0c4c3ed54c1e6616d41

See more details on using hashes here.

Provenance

The following attestation bundles were made for operator_use-0.2.8-py3-none-any.whl:

Publisher: publish.yml on CursorTouch/Operator-Use

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page