Skip to main content

AI-powered local automation agent โ€” controlled via Telegram. Manages your whole computer.

Project description

๐Ÿ‹๏ธ Doit v2.0 โ€” Your AI-Powered Computer Butler

Doit runs silently on your machine and executes real OS-level tasks โ€” controlled through Telegram in plain language. From a developer managing servers to a non-technical user who wants to automate their desktop, Doit understands what you mean and does it.

No GUI. No web dashboard. No daily terminal usage. Just Telegram.


What's New in v2.0

Category New in v2.0
Shell shell_exec โ€” run any command; repl_python, repl_js โ€” run code snippets
Git Full git workflow: status, pull, add, commit, push, clone, log, diff, branch
Docker List, start, stop, exec, logs, images
Packages Install/uninstall via apt/brew/pip/npm/cargo/winget (auto-detected)
SSH/SFTP Run commands on remote hosts; upload/download via SCP
Desktop Open apps, desktop notifications, screenshot, clipboard r/w, type text, hotkeys, volume, TTS
Dev Tools Run tests (pytest/jest), lint (ruff/flake8), format (black/prettier), build (make/npm/cargo)
Files+ PDF text extract + merge, image resize/convert, CSV read, JSON query, file hash, QR gen
Web DuckDuckGo search, web page scraping, webhook POST
Productivity Math calculator, translate (LibreTranslate), weather (no key needed), timed reminders
Memory Persistent named facts (remember X is Y, recall later)
Notes & Todo Full CRUD notes (Markdown) and todo list with priorities
Secrets Encrypted keychain โ€” store API keys, passwords; AI auto-fetches when needed
AI Engine Dynamic tool discovery (prompts always match live tools), multi-turn conversation context
Telegram UX Inline confirm buttons for dangerous ops, voice message support, /tools, /memory, /run, /clear

Quick Start

pip install doit-fm
doit init

The wizard:

  1. Trust grant (once)
  2. AI provider & model selection
  3. Telegram bot setup
  4. Auto-start service installation

Then just talk to your bot.


What Doit Can Do

Files & Folders

list files in ~/Downloads
find all .log files older than 7 days and delete them
find duplicates in ~/Pictures
diff requirements.txt with requirements.old.txt
organize my Downloads folder
backup ~/Documents to ~/Backups every day at 9am

System

show system health
what's using the most RAM?
kill process 1234
check battery status
how much disk space is left on /?

Shell / Code

run: ls -la ~/Projects
execute this Python: print(sum(range(100)))
run my tests in ~/myapp
lint the code in ~/myproject
build the project in ~/myapp

Git

git status of ~/myproject
pull the latest code in ~/myrepo
commit everything in ~/myproject with message "fix login bug"
push ~/myproject to origin
show git log for ~/myproject
clone https://github.com/user/repo to ~/Projects

Docker

list all my containers
start the postgres container
show logs for the api container
run "npm test" in the webapp container
list docker images

Packages

install htop
install pandas with pip
uninstall imagemagick

Network & Web

download https://example.com/report.pdf to ~/Desktop
ping google.com
search DuckDuckGo for "python asyncio best practices"
scrape text from https://docs.python.org/3/
send a webhook to https://hooks.zapier.com/... with payload {"event": "deploy"}
check if https://mysite.com is up

Remote (SSH)

run "df -h" on server 192.168.1.100 as ubuntu
upload ~/deploy.tar.gz to user@host:/tmp/

Desktop Automation

open Safari
take a screenshot
read my clipboard
write "Hello World" to clipboard
type this text: "Dear John,"
send notification: Meeting in 5 minutes
set volume to 60
say "your build is complete"

Development

run tests in ~/myproject
lint ~/myproject/src
format code in ~/myproject
build ~/myproject

Productivity

what's the weather in London?
translate "hello world" to Spanish
calculate 15% of 847.50
remind me to take a break in 25 minutes
generate a QR code for https://mysite.com
hash the file ~/important.zip

Memory & Notes

remember that my prod server is 10.0.0.5
what did you remember?
create a note called "meeting notes" with content "..."
list my notes
add todo: review PRs - high priority
list todos
mark done: review PRs

Secrets

store secret GITHUB_TOKEN = ghp_xxxx
get my GITHUB_TOKEN

Architecture

doit/
โ”œโ”€โ”€ cli/              # Bootstrap + onboarding wizard
โ”œโ”€โ”€ core/             # Config, constants, paths
โ”œโ”€โ”€ ai/               # Multi-provider AI engine (dynamic tools, conversation memory)
โ”œโ”€โ”€ telegram_bot/     # Telegram interface (inline buttons, voice, docs, photos)
โ”œโ”€โ”€ tools/            # 70+ tool implementations across 15 categories
โ”œโ”€โ”€ task_engine/      # Async queue, workers, retry, resource guard
โ”œโ”€โ”€ scheduler/        # Natural language + cron scheduler
โ”œโ”€โ”€ security/         # Encryption, auth, injection guard, secret keychain
โ”œโ”€โ”€ persistence/      # SQLite: tasks, schedules, logs, audit, memory
โ”œโ”€โ”€ plugins/          # Dynamic plugin discovery (add your own tools)
โ”œโ”€โ”€ services/         # systemd / LaunchAgent / Windows service
โ”œโ”€โ”€ supervisor/       # Crash recovery + auto-restart
โ”œโ”€โ”€ logging_system/   # Structured logging to file + DB
โ””โ”€โ”€ updates/          # Safe version updates + rollback

AI Providers

Provider Free Tier Notes
NVIDIA NIM โœ… Llama 3.3 70B High quality, free
Zhipu AI โœ… GLM-4 Flash Fast, free
OpenAI โ€” GPT-4o recommended
Anthropic โ€” Claude 3.5 Sonnet recommended
Ollama โœ… All models Fully offline, privacy-first
Custom Any OpenAI-compatible Your own endpoint

Security Model

  • Single user โ€” only your Telegram ID can control Doit
  • Encrypted config & secrets โ€” Fernet symmetric encryption
  • Tool sandboxing โ€” AI can only invoke registered tools
  • Injection protection โ€” pattern-based prompt injection detection
  • Dangerous op confirmation โ€” inline โœ…/โŒ buttons before destructive actions
  • Path blocklist โ€” /etc, /boot, /sys, /proc protected
  • No inbound ports โ€” outbound-only to Telegram API
  • Full audit trail โ€” every action logged to SQLite

Plugin API

Drop a .py file in ~/.config/doit/plugins/:

PLUGIN_NAME = "my_plugin"
PLUGIN_VERSION = "1.0.0"
PLUGIN_DOIT_MIN_VERSION = "2.0.0"
PLUGIN_DESCRIPTION = "What this plugin does"

async def my_tool(arg1: str, count: int = 1, **kwargs) -> dict:
    return {"result": f"Did {arg1} x{count}", "success": True}

TOOLS = [
    ("my_tool", "Description of my tool", my_tool, False),
]

Restart Doit. Your tool is now available to the AI โ€” the system prompt updates automatically.


CLI

doit init        # Onboarding wizard
doit run         # Start agent
doit update      # Check and install updates
doit status      # Check if service running
doit uninstall   # Remove service + optionally data

Telegram Commands

/status    โ€” Agent status + AI health
/health    โ€” System resources + battery
/tasks     โ€” Recent task history
/logs      โ€” Recent log entries
/tools     โ€” Browse all 70+ available tools
/memory    โ€” View stored facts
/clear     โ€” Reset conversation context
/run <cmd> โ€” Direct shell command
/safe      โ€” Pause execution
/resume    โ€” Resume execution
/export    โ€” Download audit log (json/csv)
/help      โ€” Full help

Requirements

  • Python 3.10+
  • A Telegram bot token (free, from @BotFather)
  • An AI API key (NVIDIA/Zhipu free, or OpenAI/Anthropic/Ollama)

Optional for full power:

  • git for git tools
  • docker for Docker tools
  • ssh/scp for remote tools
  • scrot (Linux) / built-in (macOS/Windows) for screenshots
  • notify-send (Linux) for desktop notifications
  • espeak (Linux) / built-in (macOS/Windows) for TTS
  • xdotool (Linux) for type_text / hotkeys

License

MIT โ€” free to use, modify, distribute.

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

doit_fm-2.0.0.tar.gz (65.8 kB view details)

Uploaded Source

Built Distribution

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

doit_fm-2.0.0-py3-none-any.whl (67.8 kB view details)

Uploaded Python 3

File details

Details for the file doit_fm-2.0.0.tar.gz.

File metadata

  • Download URL: doit_fm-2.0.0.tar.gz
  • Upload date:
  • Size: 65.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.0rc1

File hashes

Hashes for doit_fm-2.0.0.tar.gz
Algorithm Hash digest
SHA256 6cf625e00eff392848bc7819ea7c8fecff71fb6176c7dd1716ac1412ce8747ba
MD5 9207419a939b4131d689a6dacfe9acb2
BLAKE2b-256 e814fb0431df8f842bb77484be4a5546dc39725e77f074bc593ef4785ff171bb

See more details on using hashes here.

File details

Details for the file doit_fm-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: doit_fm-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 67.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.0rc1

File hashes

Hashes for doit_fm-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b7cef0b662c8d13f7ccb3cc72d34e4c0f95f10c3a3f1160f5744d68af21782dd
MD5 76276bb227b2e8b8dd0531a02b10b34e
BLAKE2b-256 70b4f44ebf71de9e4a3c9bea83401d9b8819b07a44b60ccbebe8eb08172e4cc5

See more details on using hashes here.

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