Mobile control panel for AI agents — control your bots from Telegram
Project description
Rudder
Mobile control panel for AI agents. Control your bots from Telegram — from anywhere, on any device.
"Rudder puts every developer in the captain's chair of their AI agents."
What is Rudder?
You build AI agents. They run on your machine. But when you're away from your desk, you're flying blind.
Rudder wraps your agent with a Telegram interface so you can:
- Ask questions in plain English ("what positions are open?")
- Approve or deny tool calls before they execute
- Run commands on your machine remotely
- Check logs and file contents from your phone
Quick Start
pip install rudder-ai
rudder init # guided setup wizard
rudder start # launch your bot
Then open Telegram and message your bot.
What Rudder Can Do
| Command | Example |
|---|---|
| Read files | "show me the last 20 lines of app.log" |
| Run commands | "run my_script" → Approve/Deny on phone |
| List files | "what files are in my project?" |
| Answer questions | "what's the status of my agent?" |
Requirements
- Python 3.10+
- A Telegram account and bot token (free)
- An API key for your chosen AI model
Supported Models
Rudder works with any of these AI providers — pick one during rudder init:
| Provider | Models | Install |
|---|---|---|
| Claude / Anthropic (recommended) | claude-sonnet-4-6, claude-opus-4-6 | pip install rudder-ai[anthropic] |
| OpenAI | gpt-4o, gpt-4-turbo, gpt-3.5-turbo | pip install rudder-ai[openai] |
| Grok / xAI | grok-3-beta, grok-2 | pip install rudder-ai[openai] |
| Ollama (local, free) | llama3, mistral, phi3, gemma, any | pip install rudder-ai |
| Custom | Any OpenAI-compatible API | pip install rudder-ai[openai] |
Custom option supports Groq, Together.ai, Mistral, Azure OpenAI, and any provider with an OpenAI-compatible endpoint.
Setup — Step by Step
Step 1 — Create a Telegram bot
- Open Telegram and search for @BotFather (official blue checkmark)
- Send this message:
/newbot - BotFather will ask: "What's the name of your bot?"
- This is the display name shown in chats — e.g.
My Agent Bot
- This is the display name shown in chats — e.g.
- BotFather will ask: "What username would you like to give it?"
- Must end in
bot— e.g.myagent_botorMyAgentBot - Must be unique across all of Telegram
- Must end in
- BotFather will reply with your bot token — it looks like:
1234567890:AAFabcdefGHIjklmNOPqrstUVwxyz123456 - Copy and save this token — you'll need it in Step 4
Step 2 — Get your Telegram user ID
Rudder only accepts messages from you — it needs your personal user ID to enforce this.
- Open Telegram and search for @userinfobot
- Send any message (e.g.
/start) - It will reply with your Id number — e.g.
123456789 - Copy this number
Step 3 — Get an API key for your chosen model
Claude (recommended)
- Go to console.anthropic.com
- Sign up or log in → API Keys → Create Key
- Copy the key — starts with
sk-ant-...
OpenAI
- Go to platform.openai.com
- Sign up or log in → API Keys → Create new secret key
- Copy the key — starts with
sk-...
Grok / xAI
- Go to console.x.ai
- Sign up or log in → API Keys → Create API Key
- Copy the key
Ollama (local — no API key needed)
- Install Ollama from ollama.com
- Run:
ollama pull llama3(or any model you want) - No API key required
Step 4 — Install and configure Rudder
Open a terminal in your project folder, then run:
# For Claude (recommended):
pip install rudder-ai[anthropic]
# For OpenAI or Grok:
pip install rudder-ai[openai]
# For Ollama (local):
pip install rudder-ai
Then run the setup wizard:
rudder init
The wizard will ask for:
- Your Telegram bot token (from Step 1)
- Your Telegram user ID (from Step 2)
- Your working directory — the folder Rudder should have access to
- Your AI model provider and API key (from Step 3)
Tip: Run
rudder initfrom inside your project folder. When asked for the working directory, press Enter to use the current folder.
This creates a rudder.yaml file. Keep it safe — it contains your API keys.
Step 5 — Start Rudder
rudder start
You should see:
Rudder started. Open Telegram and message your bot.
Step 6 — Message your bot
Open Telegram, search for your bot by its username (e.g. @myagent_bot), and send a message.
Try:
hellowhat files are in my project?show me the contents of app.log
Configuration Reference
Your rudder.yaml file supports these options:
# Required
telegram_token: "your-telegram-bot-token"
allowed_user_id: 123456789
working_dir: "/path/to/your/project"
# Model provider (choose one block below)
# --- Claude / Anthropic ---
model_provider: "anthropic"
model: "claude-sonnet-4-6"
anthropic_api_key: "sk-ant-..."
# --- OpenAI ---
# model_provider: "openai"
# model: "gpt-4o"
# openai_api_key: "sk-..."
# --- Grok / xAI ---
# model_provider: "ollama"
# model: "grok-3-beta"
# openai_api_key: "your-xai-key"
# ollama_base_url: "https://api.x.ai/v1"
# --- Ollama (local) ---
# model_provider: "ollama"
# model: "llama3"
# ollama_base_url: "http://localhost:11434/v1"
# --- Custom OpenAI-compatible API (Groq, Together, Mistral, etc.) ---
# model_provider: "ollama"
# model: "your-model-name"
# openai_api_key: "your-api-key"
# ollama_base_url: "https://your-provider/v1"
Troubleshooting
Bot doesn't respond
- Make sure
rudder startis running in your terminal - Check that your bot token in
rudder.yamlis correct - Try sending
/startto your bot first
"Unauthorized" error
- Your
allowed_user_idinrudder.yamldoesn't match your actual Telegram ID - Re-check your ID with @userinfobot
"Working directory not found" error
- The
working_dirpath inrudder.yamldoesn't exist on your machine - Update it to a valid folder path
Bot stops when I close the terminal
- This is expected — the bot runs in your terminal session
- For always-on usage, set it up as a background service
Security
- Only your Telegram user ID can send commands
- Destructive actions (bash, file writes) require explicit Approve/Deny on your phone
- Your API keys stay on your machine — never sent anywhere else
- Self-hosted: you control everything
Roadmap
- Telegram channel
- Bash, read/write file, list files tools
- Approve/Deny on mobile
-
pip install rudder-ai— installable package -
rudder initsetup wizard - Multi-model support — Claude, OpenAI, Grok, Ollama, any OpenAI-compatible API
- Discord channel
- Custom plugin tools
-
pip install rudder-ai[github]— GitHub tools
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rudder_ai-0.2.0.tar.gz.
File metadata
- Download URL: rudder_ai-0.2.0.tar.gz
- Upload date:
- Size: 14.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fc2e78c279f8f4c7812cf8e0c05d5d85bf20e021bce421bc066932b18d363a8a
|
|
| MD5 |
78c2d0ef55afda19b8db3559d91673f6
|
|
| BLAKE2b-256 |
a75e5c0cf63f8c1bd2e0986c95b4d9eafed6474163164a2485d1f6bf587166a0
|
File details
Details for the file rudder_ai-0.2.0-py3-none-any.whl.
File metadata
- Download URL: rudder_ai-0.2.0-py3-none-any.whl
- Upload date:
- Size: 13.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7439c6e47eb904ee2d4aa98441b683e1cfb24dcd01bc650efb04493c0bb8d7f3
|
|
| MD5 |
c183c2e9987e2aee07fc8759a74fbba9
|
|
| BLAKE2b-256 |
bdae92c71042a10e7158183db917a1b854e035b79f55d0b1eb0975d513a57fda
|