tele

module
v0.3.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 20, 2026 License: GPL-3.0

README

tele

  _            _
 | |_    ___  | |   ___
 | __|  / _ \ | |  / _ \
 | |_  |  __/ | | |  __/
  \__|  \___| |_|  \___|

Keyboard-driven TUI Telegram client for the terminal

Go License Release Platform

FeaturesInstallationWhy tele?KeybindingsRoadmap

Status: Active development. Already usable for daily messaging — private chats, groups, replies, reactions. Some Telegram features are still in progress.

Why tele?

Telegram Desktop, the web version, and mobile apps are built for mouse-first interaction. If you live in the terminal — editing in Neovim, navigating with yazi, monitoring with k9s — switching to a GUI messenger breaks your flow.

tele keeps you in the terminal. Navigate chats with j/k, open and reply to messages without touching the mouse, and run it over SSH on a remote machine. If lazygit feels natural to you, tele will too.

It also runs lean: ~35 MB RSS at idle vs several hundred for a desktop client.

Feature tele Telegram Desktop Web
Terminal-native
Keyboard-first ⚠️ partial ⚠️ partial
Works over SSH
Single static binary
Full media support ⚠️ photos only
Voice/video calls ❌ planned

Installation

macOS / Linux — Homebrew
brew tap sorokin-vladimir/tele
brew install tele
Linux — binary
curl -sL https://github.com/sorokin-vladimir/tele/releases/latest/download/tele-linux-amd64 \
  -o ~/.local/bin/tele && chmod +x ~/.local/bin/tele

For arm64: replace tele-linux-amd64 with tele-linux-arm64.

First launch

tele

On first run, tele creates ~/.config/tele/config.yml and prompts you to log in: phone number → SMS code → 2FA password (if set).

Features

  • Vim-style navigation — j/k, gg/G, i/Esc
  • Telegram folders (archived chats, custom folders)
  • Send, reply, edit and delete messages
  • Reactions — view and send
  • Photos — open in external viewer
  • Chat search (/)
  • Date separators in chat history
  • Configurable via YAML
  • Single static binary — no runtime dependencies

Keybindings

Global
Key Action
0 Focus folders
1 / h / Focus chat list
2 / l / Focus chat
q / Ctrl+Q / Ctrl+C Quit
Chat list
Key Action
j / Next chat
k / Previous chat
G Last chat
Ctrl+D / Ctrl+U Scroll half-page down / up
Enter Open chat
/ Search chats
Chat (normal mode)
Key Action
j / Scroll down
k / Scroll up
gg Scroll to top
G Scroll to bottom
i / a Compose message (insert mode)
r Reply to message
t React to message
e Edit own message
d Delete own message
g Jump to original (for replies)
o Open photo in external viewer
Space Context menu
Compose (insert mode)
Key Action
Enter Send message
Esc Back to normal mode

Configuration

~/.config/tele/config.yml:

telegram:
  session_file: ~/.config/tele/session.json

ui:
  date_format: "15:04"
  history_limit: 50
  theme: default

Roadmap

See the GitHub milestones for the full roadmap.

Phase Status Focus
Phase 2 🔄 In progress Usability fixes, input improvements, scroll indicator
Phase 3 📋 Planned @mentions, forward, typing indicator, online status
Phase 4 📋 Planned Vim motions, command palette, themes, full-text search

Build from source

Requires Go 1.22+ and your own Telegram API credentials.

git clone https://github.com/sorokin-vladimir/tele
cd tele
go build \
  -ldflags "-X main.buildAPIID=YOUR_API_ID -X main.buildAPIHash=YOUR_API_HASH" \
  -o tele ./cmd/tele/

License

GPL-3.0 — free to use and fork; derivative works must remain open-source.

Inspired by lazygit. Built with gotd/td, bubbletea and lipgloss.

Directories

Path Synopsis
cmd
tele command
internal
app
tg
ui

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL