Control your laptop from Telegram โ plus 40+ integrations: GitHub, Slack, Notion, Docker, Jira, Todoist, Google Drive, Dropbox, S3, Redis, PostgreSQL, MySQL, Stability AI, Hugging Face, DigitalOcean, Hetzner, smart home, local LLM, and more.
Project description
๐ฅ๏ธ Salim โ Control Your Laptop from Telegram
Type a message on your phone. Your laptop does it.
Screenshots ยท Files ยท Shell ยท Processes ยท Power ยท Mouse & Keyboard ยท AI
๐ค What Is This?
Salim turns your laptop into a bot you can control from anywhere in the world using Telegram โ the free messaging app.
Left your laptop at home? Left a download running? Want to check if your computer is overheating? Need to grab a file from your machine while you're out?
Just text your bot. That's it.
You can use plain English thanks to built-in AI โ or use quick /commands if you prefer.
You: "take a screenshot"
Salim: ๐ธ [sends screenshot to Telegram]
You: "how much RAM am I using?"
Salim: ๐ง RAM: 8.2 GB / 16 GB (51%)
You: "find my day 3 recording"
Salim: ๐ Found 3 results:
1๏ธโฃ ๐ฌ day3_recording.mp4 โ ~/Videos โ 2.1 GB
[โฌ๏ธ Send] [๐๏ธ Delete]
โก Get Started in 3 Minutes
Step 1 โ Install
pip install salim
That's the only command needed. Python 3.9 or newer required.
Don't have Python? Download it free from python.org. After installing, open Terminal (Mac/Linux) or Command Prompt (Windows) and run the command above.
Step 2 โ Run Setup
salim setup
A friendly wizard will walk you through everything:
- Get a Telegram bot token โ takes 30 seconds (instructions shown on screen)
- Add your Telegram user ID โ so only you can control your laptop
- Optionally add free AI keys โ lets you type in plain English instead of commands
Step 3 โ Start
salim start
Open Telegram, find your bot, send /start โ and you're in control.
๐ค AI Mode โ Just Type Naturally
When you set up AI (optional but recommended โ it's free!), you don't need to remember any commands. Just talk normally:
| What you type | What happens |
|---|---|
take a screenshot |
Takes and sends a screenshot |
how's my RAM? |
Shows memory usage |
find my day 3 recording |
Searches laptop, shows results with buttons |
write a csv about GDC |
AI writes a CSV file and saves it to Desktop |
write me a resume for Ahmed |
Creates a professional Word resume (.docx) |
create an invoice for Acme Corp |
Builds a formatted Excel invoice (.xlsx) |
make a cover letter for Google |
Generates a formatted cover letter (.docx) |
mute the volume |
Mutes your speakers |
lock my screen |
Locks the laptop |
check what's running |
Lists active processes |
shut down |
Asks for confirmation, then shuts down |
turn on the living room lights |
Controls Home Assistant / smart home devices |
turn off bedroom fan |
Smart home โ any connected device |
activate movie scene |
Triggers a Home Assistant scene |
use local AI |
Switches to Ollama (local LLM, fully offline) |
Three free cloud AI providers โ all optional:
| Provider | Where to get key | Speed |
|---|---|---|
| ๐ข NVIDIA NIM | build.nvidia.com | Fast |
| ๐ก Groq | console.groq.com | Ultra-fast |
| ๐ต Z.AI (Zhipu) | z.ai | Fast & 100% free |
Salim tries them in order โ if one fails, it falls back to the next automatically.
Local / Offline AI via Ollama (no API key needed):
| Setup | What it does |
|---|---|
| Install Ollama | Download from ollama.com โ free, runs on your machine |
| Pull a model | ollama pull llama3 (or mistral, phi3, gemma3, deepseek-r1, etc.) |
| Enable in Salim | salim config set SALIM_OLLAMA_ENABLED true |
| Choose model | salim config set SALIM_OLLAMA_MODEL llama3 |
With Ollama enabled, no internet connection is needed for AI features โ everything runs locally. Your data never leaves your machine. Ollama is the last in the fallback chain (cloud providers tried first).
๐ฑ All Commands
You can also use slash commands directly โ no AI needed.
๐ฅ๏ธ System Info
| Command | What it does |
|---|---|
/info |
Full overview: OS, CPU, RAM, disk, battery, uptime |
/cpu |
Per-core CPU usage with visual bar chart |
/mem |
RAM and swap usage |
/disk |
All drives with used/free space |
/battery |
Charge level, plugged in or not, time remaining |
/network |
IP addresses, connection speed |
/uptime |
How long the computer has been running |
/top |
Live resource monitor (updates 5 times) |
โ๏ธ Processes
| Command | What it does |
|---|---|
/ps [name] |
List running programs (optional: filter by name) |
/kill <pid> |
Stop a process by its ID |
/top |
See what's using the most CPU/RAM |
๐ป Shell (Run Commands)
| Command | What it does |
|---|---|
/run <command> |
Run any terminal command |
/runbg <command> |
Run in background, get notified when done |
/pipe cmd1 ||| cmd2 |
Chain commands with pipes |
/env |
View environment variables |
/which <program> |
Find where a program is installed |
/cron <seconds> <cmd> |
Run a command repeatedly on a schedule |
/cronjobs |
List your scheduled tasks |
/cronstop <id> |
Stop a scheduled task |
๐ Files
| Command | What it does |
|---|---|
/ls [path] |
List files in a directory |
/cd <path> |
Change working directory |
/pwd |
Show current directory |
/cat <file> |
Read a file's contents |
/find <name> |
Search for files by name |
/grep <text> |
Search inside files for text |
/mkdir <name> |
Create a folder |
/rm <path> |
Delete a file or folder (asks for confirmation) |
/mv <from> <to> |
Move or rename a file |
/cp <from> <to> |
Copy a file |
/write <file> <text> |
Write text to a file |
/download <path> |
Send a file from your laptop to Telegram |
/upload |
Send a file from Telegram to your laptop |
/zip <path> |
Create a zip archive |
/unzip <file> |
Extract a zip archive |
๐ธ Screen & Input
| Command | What it does |
|---|---|
/screenshot or /ss |
Take and send a screenshot |
/screenshot 3 |
Take screenshot after 3-second delay |
/type <text> |
Type text as if using the keyboard |
/key <shortcut> |
Press a keyboard shortcut (e.g. ctrl+c, cmd+space) |
/click <x> <y> |
Click the mouse at screen coordinates |
/scroll <amount> |
Scroll the mouse wheel |
/move <x> <y> |
Move mouse cursor |
/mousepos |
See current cursor position |
/open <app or url> |
Open an app, file, or website |
๐ Clipboard
| Command | What it does |
|---|---|
/copy <text> |
Copy text to clipboard |
/paste |
Read what's in the clipboard |
๐ Notifications & Media
| Command | What it does |
|---|---|
/notify <title> | <message> |
Send a desktop notification |
/volume |
Check current volume level |
/volume 50 |
Set volume to 50% |
/volume mute |
Mute or unmute |
/brightness 80 |
Set screen brightness to 80% |
๐ Power
| Command | What it does |
|---|---|
/shutdown |
Shut down (asks for confirmation) |
/restart |
Restart (asks for confirmation) |
/sleep |
Put laptop to sleep |
/hibernate |
Hibernate |
/lock |
Lock the screen |
/logout |
Log out the current user |
/screensaver |
Start the screensaver |
/displays |
List connected displays |
๐ Document Writer
| Command | What it does |
|---|---|
/doc resume for <name> |
Creates a professional CV/resume (.docx) |
/doc cover letter for <position> |
Formal cover letter (.docx) |
/doc job application for <company> |
Job application letter (.docx) |
/doc resignation letter |
Resignation letter (.docx) |
/doc NOC for <person> |
No Objection Certificate (.docx) |
/doc memo about <topic> |
Office memo / memorandum (.docx) |
/doc meeting minutes |
Minutes of meeting (.docx) |
/doc business report on <topic> |
Formal business report (.docx) |
/doc invoice for <client> |
Professional invoice with auto-totals (.xlsx) |
/doc budget tracker for <month> |
Monthly budget with variance tracking (.xlsx) |
/doc expense report |
Expense report with total (.xlsx) |
/doc project plan |
Project task tracker with status colors (.xlsx) |
/doc attendance sheet |
Staff attendance with auto-count (.xlsx) |
/doc salary sheet |
Payroll sheet with net salary formula (.xlsx) |
/doc inventory list |
Stock inventory with reorder alerts (.xlsx) |
All documents are saved to your Desktop and sent directly to Telegram.
Formatting standards applied automatically:
- Font: Calibri 11pt (professional docs) ยท Times New Roman 12pt (formal/legal)
- Margins: 1 inch all sides, US Letter page size
- Color-coded headers, justified body text, bold section titles
- Excel files use live formulas (not hardcoded values)
๐ Smart Home & IoT
Control any smart device from Telegram โ lights, plugs, thermostats, covers, locks, and more.
| Command | What it does |
|---|---|
/smarthome addHub ha <url> <token> |
Connect your Home Assistant instance |
/smarthome addHub mqtt <host> [port] |
Connect an MQTT broker |
/smarthome add <name> tasmota <ip> |
Add a Tasmota device |
/smarthome add <name> tuya <id> <ip> <key> |
Add a Tuya device |
/smarthome add <name> http <on-url> <off-url> |
Add any HTTP-controlled device |
/smarthome devices |
List all registered devices |
/smarthome on <device> |
Turn a device on |
/smarthome off <device> |
Turn a device off |
/smarthome toggle <device> |
Toggle device state |
/smarthome status <device> |
Get current device state |
/smarthome set <device> <value> |
Set brightness %, colour (#hex), or temperature |
/smarthome scenes |
List available Home Assistant scenes |
/smarthome scene <name> |
Activate a scene |
/smarthome discover |
Re-sync devices from Home Assistant |
/smarthome mqtt <topic> <payload> |
Publish a raw MQTT message |
/sh <device> <on|off|toggle> |
Quick alias for fast control |
Supported hubs & protocols:
- ๐ข Home Assistant โ auto-discovers all your entities, controls lights/switches/climate/covers/locks/media
- ๐ก MQTT โ generic IoT protocol, works with any MQTT-enabled device
- ๐ Tasmota โ open-source firmware, direct HTTP control
- ๐ Tuya โ Wi-Fi smart plugs, bulbs, switches (via local LAN key)
- ๐ Generic HTTP โ any device with an on/off REST endpoint
Optional dependencies for smart home:
pip install paho-mqtt # MQTT broker support
pip install tinytuya # Tuya device support
Or install everything: pip install salim[smarthome]
โ๏ธ Bot Settings
| Command | What it does |
|---|---|
/config |
View all settings |
/config set <key> <value> |
Change a setting |
/logs |
See recent command history |
/status |
Quick check: is everything working? |
๐ Security โ Only You Can Control It
Salim is built so that no one else can touch your laptop through the bot:
- User whitelist โ Only Telegram accounts you approve can send commands
- Silent rejection โ Strangers get zero response (no hints that a bot even exists)
- Confirmation dialogs โ Dangerous actions (shutdown, delete) require you to tap "Yes" in Telegram
- Audit log โ Every command is recorded with timestamp and who sent it
- Secure storage โ Your credentials are stored locally with strict file permissions (
chmod 600) - Token privacy โ Your bot token is never shown in full or written to logs
Adding trusted users
salim adduser # Interactive โ shows you step-by-step
Or add multiple user IDs directly in ~/.salim/config.env:
SALIM_ALLOWED_IDS=111222333,444555666
Finding your Telegram user ID: Message @userinfobot on Telegram and send
/start. It will reply with your numeric ID.
๐ ๏ธ CLI Commands
salim setup # Run the setup wizard (first-time or to change settings)
salim start # Start your bot
salim start -v # Start with detailed logging
salim status # Check configuration and installed features
salim config # View or edit settings interactively
salim logs # View the command history
salim test # Test your Telegram connection
salim adduser # Add a new authorized user
salim stop # Stop the bot (if running in background)
salim uninstall # Remove all Salim data from your computer
๐ง Configuration File
Settings are saved in ~/.salim/config.env. You can edit this file directly or use salim config.
SALIM_BOT_TOKEN=1234567890:ABCdef... # Your Telegram bot token
SALIM_ALLOWED_IDS=123456789 # Comma-separated user IDs
SALIM_DOWNLOAD_DIR=/Users/you/Downloads # Where to look for downloadable files
SALIM_UPLOAD_DIR=/Users/you/Desktop # Where to save uploaded files
SALIM_MAX_FILE_MB=50 # Max size of files to send via Telegram
SALIM_SCREENSHOT_QUALITY=85 # JPEG quality for screenshots (1-100)
SALIM_LOG_COMMANDS=true # Keep an audit log of all commands
# AI keys (optional โ set during setup or add manually)
SALIM_NVIDIA_API_KEY=nvapi-...
SALIM_NVIDIA_MODEL=meta/llama-4-maverick-17b-128e-instruct
SALIM_GROQ_API_KEY=gsk_...
SALIM_GROQ_MODEL=openai/gpt-oss-120b
SALIM_ZAI_API_KEY=...
SALIM_ZAI_MODEL=glm-4.7-flash
# Local / offline AI via Ollama (no API key needed)
# Install Ollama: https://ollama.com/download then: ollama pull llama3
SALIM_OLLAMA_ENABLED=false # set to true to enable
SALIM_OLLAMA_MODEL=llama3 # any model you have pulled
SALIM_OLLAMA_URL=http://localhost:11434 # change if Ollama runs elsewhere
You can also change settings from inside Telegram:
/config set max_file_mb 200
/config set screenshot_quality 95
๐ Run Automatically at Startup
Want Salim to start every time your computer boots?
macOS
# Save this as ~/Library/LaunchAgents/com.salim.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key> <string>com.salim</string>
<key>ProgramArguments</key> <array><string>/usr/local/bin/salim</string><string>start</string><string>--no-banner</string></array>
<key>RunAtLoad</key> <true/>
<key>KeepAlive</key> <true/>
<key>StandardErrorPath</key> <string>/tmp/salim.err</string>
</dict>
</plist>
launchctl load ~/Library/LaunchAgents/com.salim.plist
Linux (systemd)
# /etc/systemd/system/salim.service
[Unit]
Description=Salim Laptop Control Bot
After=network.target
[Service]
Type=simple
User=youruser
ExecStart=/usr/local/bin/salim start --no-banner
Restart=always
RestartSec=10
Environment=DISPLAY=:0
[Install]
WantedBy=multi-user.target
sudo systemctl enable --now salim
Windows (Task Scheduler)
$action = New-ScheduledTaskAction -Execute "salim" -Argument "start --no-banner"
$trigger = New-ScheduledTaskTrigger -AtLogOn
Register-ScheduledTask -TaskName "Salim" -Action $action -Trigger $trigger -RunLevel Highest
๐ฆ Optional Features
Some features require extra packages. Install them for the full experience:
pip install pyautogui Pillow pyperclip aiofiles
| Package | What it unlocks |
|---|---|
pyautogui |
Screenshots, mouse control, keyboard automation |
Pillow |
Screenshot compression (smaller file sizes) |
pyperclip |
Clipboard read/write |
aiofiles |
Faster file transfers |
If these aren't installed, Salim will tell you which commands need them and how to get them.
๐ Skills โ Any File Type
Drop any file into ~/.salim/skills/ and Salim will load it as a skill:
| Extension | Runtime | Notes |
|---|---|---|
.py |
Python | Full power โ define a class with cmd_* methods |
.sh / .bash / .zsh |
Shell | Executed directly, stdout sent to Telegram |
.js / .mjs |
Node.js | Requires node installed |
.rb |
Ruby | Requires ruby installed |
.lua |
Lua | Requires lua installed |
.php |
PHP | Requires php installed |
.pl |
Perl | Requires perl installed |
.md / .txt |
AI instruction | Content injected as AI system prompt |
.json / .yaml |
AI instruction | Parsed for name/commands/instructions |
.* (any other) |
AI instruction | Any file type โ treated as AI instruction doc |
Shell skill example (~/.salim/skills/backup.sh):
#!/bin/bash
# skill_name: backup
# skill_description: Back up my Documents folder
# skill_commands: backup
tar czf ~/backup_$(date +%Y%m%d).tar.gz ~/Documents && echo "Backup done!"
Markdown skill example (~/.salim/skills/haiku.md):
# skill_name: haiku
# skill_description: Write a haiku about any topic
# skill_commands: haiku
Write a beautiful haiku (5-7-5 syllables) about the topic the user gives you.
Always end with a relevant emoji.
After adding a file: /skills reload โ no restart needed.
โ Common Questions
Do I need technical knowledge to use this?
Not at all. Run pip install salim then salim setup โ the wizard explains every step clearly with examples.
Is it safe to leave running? Yes. Only your approved Telegram accounts can send commands. All others are completely ignored.
What if I lose internet / Telegram goes down? Salim will automatically reconnect. The bot just waits patiently.
Can multiple people control one laptop?
Yes โ add multiple Telegram user IDs with salim adduser. Each person's commands are logged separately.
Do I need to pay for the AI features? No. All three AI providers (NVIDIA NIM, Groq, Z.AI) have completely free tiers that are more than enough for personal use. Z.AI's Flash models have no stated limits at all.
Does this work on Windows? Yes โ macOS, Linux, and Windows are all supported.
What if a command fails? Salim tells you exactly what went wrong in plain English. For AI key problems, it tells you the exact error (like "401 Unauthorized") so you know whether it's a wrong key or a network issue.
๐ License
MIT โ free to use, modify, and share. See LICENSE.
Made with โค๏ธ โ Control your world from your pocket.
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 salim-2.1.5.tar.gz.
File metadata
- Download URL: salim-2.1.5.tar.gz
- Upload date:
- Size: 267.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.0rc1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
607a9a7979b0afb5576b5e0410dddda1af3c533bd7305320fa00bac1aecb9f28
|
|
| MD5 |
7b6e2fd4f16d00a9b6608cea78d62d46
|
|
| BLAKE2b-256 |
58107888150d19a435063dea0cc9ba435fbd5394b83fa857f1b373999c1054ad
|
File details
Details for the file salim-2.1.5-py3-none-any.whl.
File metadata
- Download URL: salim-2.1.5-py3-none-any.whl
- Upload date:
- Size: 289.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.0rc1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1bb80815c15402561bd4c619d49f3578756f52cea370d66382286be3845c8a22
|
|
| MD5 |
4341970bffb1b06fb7790ccb6cad5b1f
|
|
| BLAKE2b-256 |
de4f21e87fc75e985bfd597137a2d67a92e26286c6472d371d6904ee5b02ead5
|