OwlBot — Modular Telegram Remote Control Agent for Windows
Project description
🦉 OwlBot (owlbot-remote)
OwlBot is a production‑ready modular remote‑control agent for Windows, operated via Telegram. It lets you monitor system resources, manage files, control peripherals, capture screen / webcam, and more — all from your phone.
✨ Features
- 🧩 100% Modular — load only the modules you need
- 💉 Dependency‑Injected core — ready for extra platforms (Discord, SSH, …)
- 🛡️ User‑ID whitelisting and centralized error handling
- 📊 Live resource monitoring (CPU, RAM, Disk, temperature)
- 🎹 Peripheral control — keyboard, mouse, hotkeys, audio volume
- 📸 Screen capture, webcam, timelapse, and screen streaming
- 🔊 Voice recording, volume control, and incoming‑voice playback
🚀 Quick Start
Prerequisites
- Python 3.11+
- Windows (some modules require Win32 API)
ffmpeginPATHif you use voice playback (download from ffmpeg.org)- A Telegram Bot Token
Install from PyPI
pip install owlbot-remote[all]
To install only the cross‑platform subset (no audio, no keyboard, no WMI):
pip install owlbot-remote
Minimal deployment script
from owlbot import OwlBot
bot = OwlBot(
token="YOUR_BOT_TOKEN",
authorized_users=[123456789], # your Telegram user ID
modules=["system", "screen", "files", "input", "processes", "monitoring"],
)
bot.run()
Or via the CLI entry point:
owlbot --token YOUR_BOT_TOKEN --users 123456789,987654321
📝 Logging
By default OwlBot logs to both the console and a rotating‑free log file
(owlbot.log in the current directory). All of this is configurable:
from owlbot import OwlBot
bot = OwlBot(
token="YOUR_BOT_TOKEN",
authorized_users=[123456789],
log_level="DEBUG", # DEBUG | INFO | WARNING | ERROR | CRITICAL
log_file="owlbot.log", # set to None (or "") to disable the log file only
enable_logging=True, # set to False to disable logging entirely
)
| Goal | Setting |
|---|---|
| Console + file logging (default) | leave as default |
| Console only, no log file on disk | log_file=None |
| Completely silent (no console, no file) | enable_logging=False |
The same options are available from the CLI:
owlbot --token TOKEN --users 123 --log-level DEBUG # verbose logging
owlbot --token TOKEN --users 123 --no-log-file # console only, no file
owlbot --token TOKEN --users 123 --disable-logging # fully silent
🕹️ Available Modules & Commands
| Module | Command | Description |
|---|---|---|
| system | /status |
CPU, RAM, Disk, Network, Battery |
/uptime |
System uptime | |
/ping |
Health‑check | |
/lock |
Lock workstation | |
/shutdown |
Shut down PC | |
/restart |
Reboot PC | |
| screen | /screenshot |
Capture desktop |
/webcam |
Capture webcam photo | |
/timelapse <s> <n> |
Series of screenshots | |
/startstream |
Start screen streaming | |
/stopstream |
Stop & send video | |
| input | /type <text> |
Type text |
/move <x> <y> |
Move mouse | |
/mousepos |
Get mouse position | |
/mouse <action> |
Click / scroll / drag | |
/hotkey <k1+k2> |
Send hotkey | |
/msg <text> |
Show message box | |
| audio | /mute / /unmute |
Toggle mute |
/volume <0‑100> |
Set volume | |
/startrec [sec] |
Record microphone | |
/stoprec |
Stop & send recording | |
/playvoice |
Toggle incoming‑voice playback | |
| files | /listdir [path] |
List directory |
/getfile <path> |
Download file | |
/hide / /show |
Toggle hidden attribute | |
/file copy/move/delete |
File operations | |
| processes | /tasklist |
List running processes |
/killtask <exe> |
Kill a process | |
/run / /cmd / /script |
Execute commands | |
| monitoring | /monitor <cpu|ram|disk|temp> |
Periodic alerts |
/stopmonitor |
Stop alerts | |
| network | /wifiscan |
Scan Wi‑Fi networks |
/clipboard get|set |
Read / write clipboard |
📂 Project Structure
owlbot/
├── __init__.py # Package exports & version
├── config/ # BotConfig dataclass
├── core/
│ ├── bot.py # Main OwlBot engine
│ ├── decorators.py # @authorized_only / @safe_reply
│ └── utils.py # Shared helpers
├── modules/
│ ├── base.py # BaseModule interface
│ ├── system.py # System control
│ ├── screen.py # Screen/webcam/stream
│ ├── files.py # File operations
│ ├── processes.py # Process management
│ ├── input.py # Keyboard/mouse (Windows)
│ ├── audio.py # Audio control (Windows)
│ ├── monitoring.py # Resource monitoring
│ └── network.py # Wi‑Fi / clipboard
└── platform/
└── telegram.py # Telegram adapter
🧪 Testing
The test suite uses pytest and makes no real network / Telegram calls.
pip install -e .[dev]
pytest -v
Lint (matches CI, config lives in .flake8):
flake8 src tests
🔧 Installation extras
| Extra | Includes |
|---|---|
owlbot-remote[ui] |
pyautogui, opencv‑python, numpy |
owlbot-remote[windows] |
wmi, pycaw, keyboard, pywifi, pyaudio |
owlbot-remote[all] |
Everything above |
owlbot-remote[dev] |
Dev / CI tools (build, flake8, pytest) |
📄 License
Distributed under the MIT License. See LICENSE for details.
Maintained by MR_owl 🦉
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 owlbot_remote-1.0.0b0.tar.gz.
File metadata
- Download URL: owlbot_remote-1.0.0b0.tar.gz
- Upload date:
- Size: 27.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
228745bd1fbf60359c0a1551c408611d85d08c9b21671c546aa25852747343d6
|
|
| MD5 |
f54cd54f0b66a4db64b16d4c50b14b6d
|
|
| BLAKE2b-256 |
ff4a5f83c67c9e8d618c2b50b1fb5db2540e0c2a47591ae5e180d06a71f366c6
|
Provenance
The following attestation bundles were made for owlbot_remote-1.0.0b0.tar.gz:
Publisher:
python-publish.yml on sepehrHi/owlbot-remote
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
owlbot_remote-1.0.0b0.tar.gz -
Subject digest:
228745bd1fbf60359c0a1551c408611d85d08c9b21671c546aa25852747343d6 - Sigstore transparency entry: 2106865764
- Sigstore integration time:
-
Permalink:
sepehrHi/owlbot-remote@e39abcc98c455407aaee7e06535385bfc182afd2 -
Branch / Tag:
refs/tags/v1.0.0-beta.0 - Owner: https://github.com/sepehrHi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@e39abcc98c455407aaee7e06535385bfc182afd2 -
Trigger Event:
release
-
Statement type:
File details
Details for the file owlbot_remote-1.0.0b0-py3-none-any.whl.
File metadata
- Download URL: owlbot_remote-1.0.0b0-py3-none-any.whl
- Upload date:
- Size: 28.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a6b2864d1b97f970edf16acb140e7c1cbe3412171eac8927155104738013ef69
|
|
| MD5 |
50e0a2e3ed9e6c6b91542c373a2d4e9c
|
|
| BLAKE2b-256 |
df1db7a874549d757087246c6b512af468bd8e8b4a4e01e6d31a80338de4f4d3
|
Provenance
The following attestation bundles were made for owlbot_remote-1.0.0b0-py3-none-any.whl:
Publisher:
python-publish.yml on sepehrHi/owlbot-remote
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
owlbot_remote-1.0.0b0-py3-none-any.whl -
Subject digest:
a6b2864d1b97f970edf16acb140e7c1cbe3412171eac8927155104738013ef69 - Sigstore transparency entry: 2106865894
- Sigstore integration time:
-
Permalink:
sepehrHi/owlbot-remote@e39abcc98c455407aaee7e06535385bfc182afd2 -
Branch / Tag:
refs/tags/v1.0.0-beta.0 - Owner: https://github.com/sepehrHi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@e39abcc98c455407aaee7e06535385bfc182afd2 -
Trigger Event:
release
-
Statement type: