[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-83387":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":22,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":39,"readmeContent":40,"aiSummary":10,"trendingCount":16,"starSnapshotCount":16,"syncStatus":41,"lastSyncTime":42,"discoverSource":43},83387,"tele","sorokin-vladimir\u002Ftele","sorokin-vladimir","Keyboard-first Telegram client for the terminal, written in Go","",null,"Go",91,13,3,58,0,27,32,81,82.64,"GNU General Public License v3.0",false,"main",[25,26,27,28,29,30,31,32,5,33,34,35,36,37,38],"cli","cross-platform","go","golang","keyboard-driven","linux","macos","messenger","telegram","telegram-client","terminal","terminal-ui","tui","vim-like","2026-06-12 04:01:41","# tele\n\n```\n  _            _\n | |_    ___  | |   ___\n | __|  \u002F _ \\ | |  \u002F _ \\\n | |_  |  __\u002F | | |  __\u002F\n  \\__|  \\___| |_|  \\___|\n```\n\n> A terminal-native Telegram client built for keyboard-driven workflows.\n\n[![Go](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fgo-1.26+-blue)](https:\u002F\u002Fgo.dev)\n[![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-GPL--3.0-green)](LICENSE)\n[![Release](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002Fsorokin-vladimir\u002Ftele)](https:\u002F\u002Fgithub.com\u002Fsorokin-vladimir\u002Ftele\u002Freleases)\n[![Platform](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fplatform-macOS%20%C2%B7%20Linux-lightgrey)](#installation)\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"#features\">Features\u003C\u002Fa> •\n  \u003Ca href=\"#installation\">Installation\u003C\u002Fa> •\n  \u003Ca href=\"#why-tele\">Why tele?\u003C\u002Fa> •\n  \u003Ca href=\"#keybindings\">Keybindings\u003C\u002Fa> •\n  \u003Ca href=\"#roadmap\">Roadmap\u003C\u002Fa>\n\u003C\u002Fp>\n\n---\n\n![tele demo](.\u002Fassets\u002Fdemo.gif)\n\n> **Status:** Active development — already usable for daily messaging (private chats, groups, replies, reactions). Some Telegram features are still in progress.\n\n---\n\n## Why tele?\n\nTelegram Desktop, the web client, and mobile apps are designed around mouse-first interaction.\n\nIf you live in the terminal — using tools like Neovim, yazi, k9s, or tmux — switching to a GUI messenger breaks your flow.\n\n`tele` keeps you in the terminal.\n\nIt is built for:\n\n- keyboard-driven navigation\n- fast chat switching\n- SSH \u002F remote workflows\n- distraction-free messaging\n\nIf tools like lazygit feel natural to you, `tele` will too.\n\nIt also runs lean — typically ~35MB RSS at idle vs several hundred MB for desktop clients.\n\n---\n\n| Feature              | tele       | Telegram Desktop | Web        |\n| -------------------- | ---------- | ---------------- | ---------- |\n| Terminal-native      | ✅         | ❌               | ❌         |\n| Keyboard-first       | ✅         | ⚠️ partial       | ⚠️ partial |\n| Works over SSH       | ✅         | ❌               | ❌         |\n| Single static binary | ✅         | ❌               | ❌         |\n| Full media support   | ⚠️ photos  | ✅               | ✅         |\n| Voice\u002Fvideo calls    | ❌ planned | ✅               | ✅         |\n\n---\n\n## Features\n\n### ⚡ Keyboard-first UX\n\nVim-inspired navigation (`j\u002Fk`, `gg\u002FG`, insert mode, etc.)\n\n### 💬 Full Telegram support\n\nPrivate chats, groups, channels, replies, reactions, edits.\n\n### 🧠 Terminal-native design\n\nBuilt specifically for terminal workflows — not adapted from a GUI client.\n\n### 🚀 Lightweight by design\n\nSingle static Go binary with fast startup and low memory usage.\n\n### ⚙ Simple configuration\n\nYAML-based config with sensible defaults.\n\n---\n\n## Installation\n\n### macOS \u002F Linux — Homebrew\n\n```sh\nbrew tap sorokin-vladimir\u002Ftele\nbrew install tele\n```\n\n### Linux — binary\n\n```sh\ncurl -sL https:\u002F\u002Fgithub.com\u002Fsorokin-vladimir\u002Ftele\u002Freleases\u002Flatest\u002Fdownload\u002Ftele-linux-amd64 \\\n  -o ~\u002F.local\u002Fbin\u002Ftele && chmod +x ~\u002F.local\u002Fbin\u002Ftele\n```\n\nFor arm64: replace `amd64` with `arm64`.\n\n---\n\n## First launch\n\n```sh\ntele\n```\n\nOn first run, `tele` creates:\n\n```text\n~\u002F.config\u002Ftele\u002Fconfig.yml\n```\n\nThen prompts for:\n\n- phone number\n- SMS code\n- optional 2FA password\n\n---\n\n## Flags\n\n| Flag               | Description                                                                                     |\n| ------------------ | ----------------------------------------------------------------------------------------------- |\n| `--config \u003Cpath>`  | Path to config file (default `~\u002F.config\u002Ftele\u002Fconfig.yml`)                                      |\n| `-e`               | Enable debug logging                                                                            |\n| `--trace`          | Log sensitive metadata (peer IDs, message lengths). Never use on shared or synced file systems |\n| `--version`        | Print version and exit                                                                          |\n\n---\n\n## Keybindings\n\n| Key             | Action                            |\n| --------------- | --------------------------------- |\n| `j` \u002F `k`       | Navigate chats or scroll messages |\n| `i`             | Compose message                   |\n| `r`             | Reply                             |\n| `e` \u002F `d`       | Edit \u002F delete message             |\n| `t`             | React                             |\n| `\u002F`             | Search chats                      |\n| `0` \u002F `1` \u002F `2` | Focus panes                       |\n| `q`             | Quit                              |\n\nFull reference: [docs\u002Fkeybindings.md](docs\u002Fkeybindings.md)\n\n---\n\n## Configuration\n\n```yaml\ntelegram:\n  session_file: ~\u002F.config\u002Ftele\u002Fsession.json\n\nui:\n  date_format: \"15:04\"\n  history_limit: 50\n  theme: default\n```\n\n### Customizing keybindings\n\nOverride default keys in the `keybindings:` section of `~\u002F.config\u002Ftele\u002Fconfig.yml`.\nBindings are grouped by **context**, then by **action**:\n\n```yaml\nkeybindings:\n  chat:\n    reply: \"R\"              # a single key\n    go_top: [\"g g\", \"gg\"]   # several keys for one action\n  chatlist:\n    confirm: \"l\"\n```\n\n- **Replace semantics:** the keys you list become the *only* keys for that\n  action in that context. Actions you don't mention keep their defaults.\n- **Chords:** a multi-key sequence is written as space-separated key tokens —\n  `\"g g\"` means press `g` then `g`. Tokens use the terminal key names\n  (`ctrl+d`, `enter`, `esc`, `space`, `up`, ...).\n- **Conflicts** (an unknown action\u002Fcontext, an empty key, a key reused for two\n  actions, or a single key that shadows a chord) are logged as warnings on\n  startup and skipped or applied last-wins; a bad section never crashes the app.\n\n**Contexts:** `global`, `folders`, `chatlist`, `chat`, `composer`, `search`,\n`context_menu`, `delete_submenu`.\n\nSee [docs\u002Fkeybindings.md](docs\u002Fkeybindings.md#configurable-actions) for the full\nlist of action names and what each one does.\n\n---\n\n## Roadmap\n\nTracked via [GitHub milestones](https:\u002F\u002Fgithub.com\u002Fsorokin-vladimir\u002Ftele\u002Fmilestones).\n\n| Milestone                  | Focus                                  |\n| -------------------------- | -------------------------------------- |\n| Security & Reliability     | safer event handling, logging, cleanup |\n| Architecture & Performance | caching, memory caps, optimization     |\n| Feature Completeness       | forwarding, mentions, drafts, search   |\n| Power User & Polish        | themes, vim motions, command palette   |\n\n---\n\n## Build from source\n\nRequires Go 1.26+ and your own [Telegram API credentials](https:\u002F\u002Fmy.telegram.org).\n\n```sh\ngit clone https:\u002F\u002Fgithub.com\u002Fsorokin-vladimir\u002Ftele\ncd tele\ngo build \\\n  -ldflags \"-X main.buildAPIID=YOUR_API_ID -X main.buildAPIHash=YOUR_API_HASH\" \\\n  -o tele .\u002Fcmd\u002Ftele\u002F\n```\n\n---\n\n## License\n\nGPL-3.0 — free to use and fork; derivative works must remain open-source.\n\n---\n\nBuilt with:\n\n- [gotd\u002Ftd](https:\u002F\u002Fgithub.com\u002Fgotd\u002Ftd)\n- [bubbletea](https:\u002F\u002Fgithub.com\u002Fcharmbracelet\u002Fbubbletea)\n- [lipgloss](https:\u002F\u002Fgithub.com\u002Fcharmbracelet\u002Flipgloss)\n- inspired by [lazygit](https:\u002F\u002Fgithub.com\u002Fjesseduffield\u002Flazygit)\n",2,"2026-06-11 04:11:03","CREATED_QUERY"]