A tiny Telegram helpdesk for indie makers, solo developers, and small app teams.
One Man Support turns one Telegram bot into support for all your apps. Users tap Contact Support, send a message, and you reply from Telegram. No dashboard, no login, no monthly helpdesk bill.
Most solo developers do not need Zendesk, Intercom, or a full ticketing system. They need a simple way to know when a user has a problem and reply quickly.
Email gets buried. Forms feel cold. In-app chat SDKs add weight and cost. Telegram already gives you instant notifications, rich media, voice messages, and replies from your phone.
User taps Contact Support
↓
Telegram bot opens with app context
↓
User sends text, screenshot, video, voice, or file
↓
You receive it in Telegram with app name + user info
↓
You reply inline
↓
User gets your reply
- Multi-app support: one bot handles all your apps.
- Deep links:
t.me/YourBot?start=app_myappopens support for a specific app. - Rich media: screenshots, videos, voice messages, documents, and stickers.
- Reply routing: reply to the forwarded message and the user gets your response.
- Persistent state: remembers user app context across restarts.
- Simple deployment: one Python file and one dependency.
- Configurable apps: edit
bot.pyor useAPP_CONFIG_FILE=apps.example.json. - Zero SaaS cost: host it on your own server, VPS, Raspberry Pi, Docker, or PM2.
git clone https://github.com/naif824/one-man-support.git
cd one-man-support
pip install -r requirements.txt
cp .env.example .envEdit .env:
BOT_TOKEN=your-telegram-bot-token
ADMIN_CHAT_ID=your-telegram-user-id
APP_CONFIG_FILE=apps.example.jsonRun:
export $(cat .env | xargs)
python3 bot.pyMessage @BotFather:
/newbot
Choose a name and username, then copy the bot token.
Message @userinfobot. It replies with your numeric user ID.
Use apps.example.json:
{
"myapp": {
"name": "My App",
"emoji": "📱"
},
"other": {
"name": "Other",
"emoji": "💬"
}
}The key becomes your deep-link slug:
https://t.me/YourBot?start=app_myapp
pm2 start ecosystem.config.cjs
pm2 savecp .env.example .env
docker compose up -d --buildCopy one-man-support.service.example to your server, edit paths and environment values, then:
sudo systemctl enable --now one-man-support| Command | Description |
|---|---|
/start |
Choose an app or enter through a deep link |
/apps |
Show configured app deep links |
Use a normal link:
https://t.me/YourBot?start=app_myapp
Good places:
- app settings screen
- help page
- website footer
- App Store / Play Store support URL
- onboarding email
- indie iOS and Android developers
- solo SaaS builders
- makers with multiple small apps
- small teams who live in Telegram
- people who want support without support software
One Man Support is intentionally small. It is not a full CRM, ticketing suite, analytics dashboard, or team inbox.
If you need assignments, SLAs, macros, reports, and a web dashboard, use a real helpdesk. If you want users to reach you fast and you want to reply from your phone, this is enough.
python3 -m unittest -v
python3 -m py_compile bot.py- Keep
BOT_TOKENprivate. - Keep
.envout of git. - Use a private
ADMIN_CHAT_ID. - Run one bot per trusted owner or forward to a private Telegram group.
- User messages and routing state are stored under
data/.
MIT