A lightweight macOS menu bar app for quick Telegram messaging — built for fast back-and-forth with AI agents like OpenClaw, PicoClaw, and similar bots.
Lives in your menu bar, opens with a click, and gets out of your way.
- Menu bar app — no dock icon, always one click away
- Text and voice message support (record & send voice notes)
- Voice note playback with waveform visualization
- Live typing/recording indicators
- Auto-connects to your configured bot on launch
- macOS 15.0+
- Xcode 26+
- A Telegram account
- A Telegram API ID & Hash (free, from my.telegram.org)
- A Telegram bot you want to chat with
- Go to my.telegram.org and log in
- Click API development tools
- Create a new application (any name/platform)
- Note your api_id and api_hash
- Open
MenuGram.xcodeprojin Xcode - Go to Product > Scheme > Edit Scheme… (or
Cmd+<) - Select Run in the sidebar, then the Arguments tab
- Under Environment Variables, add the following:
| Variable | Value | Description |
|---|---|---|
TELEGRAM_API_ID |
12345678 |
Your API ID from step 1 |
TELEGRAM_API_HASH |
your_api_hash_here |
Your API hash from step 1 |
BOT_NAME |
YourBotName |
Display name of the bot/contact to auto-open on launch |
BOT_NAME is the display name of the Telegram bot/contact you want MenuGram to auto-open on launch. For example, if your bot is called "PicoClaw", set BOT_NAME=PicoClaw.
- Wait for Swift Package Manager to resolve dependencies (TDLibKit)
- In Signing & Capabilities, enable Audio Input under App Sandbox
- Build and run (
Cmd+R) - Sign in with your phone number when prompted
MenuGram uses TDLib (via TDLibKit) as the Telegram client library. It authenticates as a full Telegram user (not a bot), so you can send and receive messages just like the official app.
On launch, it searches your chat list for the bot name specified in BOT_NAME and opens that conversation automatically. You can send text or voice messages, and see real-time typing indicators from the other side.
MenuGram/
├── Constants.swift # App config, reads env vars from scheme
├── Models/
│ ├── ChatItem.swift # Chat list model
│ └── MessageItem.swift # Message model
├── Services/
│ ├── TelegramService.swift # TDLib client wrapper
│ └── OGGOpusConverter.swift # OGG Opus to WAV conversion
└── Views/
├── RootView.swift # Top-level navigation
├── Auth/ # Login flow (phone, code, password)
└── Chat/
├── ChatDetailView.swift # Message list + header
├── MessageBubbleView.swift # Individual message bubbles
├── MessageInputView.swift # Text + voice input
└── VoiceNoteView.swift # Voice message playback
MIT