Momogram: a third-party Telegram client built on the official source
A third-party Telegram android app.
At a glance
- What is it?
- Momogram is an unofficial Telegram client for Android that aims to be the successor to the old NekoX, and it is built by forking the official Telegram source rather than from scratch. That gives it the official feature set plus dozens of additions, at the cost of carrying a large Gradle project with its own release and build requirements.
- Who is it for?
- Adopt Momogram if you want the official Telegram Android client with meaningful additions, such as selective last seen sharing, PGP auto decryption, in-app translation, client side banning and extra quality options, and you are comfortable tracking a third-party client that follows upstream Telegram closely.
- Can I use it commercially?
- Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
- Is it still maintained?
- Yes. The repository last received commits 2 days ago.
- What is it written in?
- Mainly Java, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.
Editorial analysis
A fork of the official client, which explains everything about it
Momogram is a feature-rich third-party Telegram client, aiming to be the spiritual successor of the OG NekoX, and the README describes it as built with unique customization and features.
The reason it can offer what it offers is visible in the repository layout. The top level contains TMessagesProj/, which is the official Telegram Android project's source directory, alongside TMessagesProj_App/, TMessagesProj_AppStandalone/, TMessagesProj_AppTests/ and TMessagesProj_Modules/. There is an openpgp-api/ directory, a Tools/ directory, a bin/ directory, a metadata/ directory, a buildSrc/ directory and a gradle/ directory, along with an apkdiff.py and an apkfrombundle.py script.
In other words, this is a fork of the official client rather than a third-party app that talks to Telegram over its API. Every upstream Telegram release has to be merged in, and every upstream change is a change the maintainers have to reconcile with their own modifications. That is the trade the project makes, and it explains the release structure: v13.0.2-1 on 2026-10-20, v12.10.6-1 on 2026-10-14 and v12.10.6-ci2 on 2026-10-01, with the numbers tracking the upstream Telegram version and the suffix carrying the fork's own increment. The ci2 tag is a build published for continuous integration testing rather than for general use.
Two other details say a lot about the project's history. There is a README_old.md alongside the current README, which is the previous documentation preserved rather than deleted, and the default branch is named lifesupport rather than master or main, which suggests a deliberate naming choice rather than an accident.
The project is GPL-3.0 licensed and written in Java, with the last push on 2026-10-21. There is also a naming oddity worth noting for anyone following the links: the README's download badge and its releases link point at the dic1911/Momogram repository rather than at the im030/Momogram one, and the Weblate translation project is hosted under a nekox_030 account. The project has been renamed and moved, and some of the external references still carry the older identity.
The general feature list, and the privacy options in it
The README breaks the additions down into categories, and the general section is the easiest place to see the philosophy of the project.
Several entries are about what the app does not do or share. It removes tracking queries from URLs for better privacy, it hides various premium upselling annoyance, it unchecks the share my number option when adding a contact by default, and it can disable auto login with a Telegram account when opening certain links, which stops a link in a message from silently opening the app as you. Only share last seen to the ones you want to check their last seen means last seen visibility is per contact rather than one global switch.
A few are quality of life additions. There is a searchable Momogram settings screen, just like the official one, an option to restart the app automatically whenever a critical problem occurs, an option to override the device performance class, and an in-app anti-spam measure, marked in the list with a wink.
The translation support is more extensive than a single toggle. There is an additional translation provider option covering Firefox local translate, custom DeepLX instances and Lingva, a setting to filter the languages shown in the translate target, and separate chat features to translate text messages before send and to translate a forwarded text message before send without quoting.
Other general entries are about media and playback: streaming video with an external player, and swiping the music player bar to switch tracks.
And there is a birthday reminder hiding option and a ban button in the join request list, plus the ability to auto dismiss or ban deleted and regex-matching accounts from join requests, which is a form of client side filtering that has no server side equivalent.
The chat features, including PGP auto decryption and Whisper transcription
The chat section is where the substantive additions live, and a few of them are unusual enough to be worth singling out.
Auto decrypt of PGP encrypted messages is the headline. The repository ships an openpgp-api/ directory, so the PGP handling is part of the build rather than something bolted on at runtime. The related chat entries build on it: translate forwarding text message before send without quote is listed separately, and translate text messages before send is its own toggle.
Speech to text goes through Cloudflare or local Whisper inference, so transcription can run on your own hardware instead of a hosted service. That is a meaningful option for private chats and it is consistent with the rest of the feature set.
Client side fban is another one. The list also has ban button in join request list, block specified chat or channel from search results, and mute group chat notifications from blocked users or bots. Client side fban is the strongest of these, because it hides a sender on your device only, and the entry is worded carefully enough to distinguish it from the server side blocks Telegram provides.
Then there are the smaller quality of life items, and they are numerous. Auto select best video quality if available, enable spoiler for all media in specified chats, local only custom chat name, search message by type, show vote counts before vote, reply as quote by default, remove a single emoji from the recently used list, schedule send message after slow mode timer ends without having to wait in the same chat, copy image or sticker button in the menu, detect data saver and use the roaming auto download preset when enabled, and use marquee for long chat titles.
The customization section is shorter: always show the downloads button in chat list, a custom folder icon with official and custom emoji where the custom ones are local only, custom title text, disable remote chat wallpaper, hide the unread counter on folder tabs, hide the rating on the profile page, and use the account name as the chat list title.
Mini-app and webview controls, and the notification question
The mini-app and webview section is about controlling what a webview is allowed to do, which matters because Telegram's built-in browser can open arbitrary pages.
Several entries are about the browser itself. A custom search engine can be set for the in-app browser, webpages such as games can be opened in mini-app mode, a copy link button is added to the menu, and there is a toggle to disable safe browsing and a separate toggle to disable geolocation.
Others are about the bot lifecycle. Do not open bot when re-opening tab and do not send a slash start when restarting bot both deal with the fact that a mini-app session often re-runs its start command, and allow bots to be shown in direct share changes what appears in the share sheet. Block bot without deleting history by default is the one that changes data rather than behaviour, since a bot you block can be hidden without losing the conversation. Comfirm before opening external links from webview is spelled with a typo in the original list, and it stops a link in a webview from launching an arbitrary app without a prompt.
The notification question has its own FAQ section, and the answer is the most practically important part of the README for anyone installing the app.
Momogram has basic UnifiedPush support, but you need to install a distributor for it to work. Three options are listed: ntfy, which is recommended, Sunup, and the UP-FCM Distributor, which relies on Google. The recommendation is only ntfy with Momogram, because it is the only verified provider that works best, whereas the others are more of a hit or miss. The note also says you can use an external device to periodically send messages to the UnifiedPush topic for reduced latency, which is a workaround for the fact that a phone that has not woken up cannot receive a push.
If UnifiedPush does not work well on your device, the answer is to disable it from the general settings, or just search for UnifiedPush, and enable the original background service instead. The UnifiedPush document is linked for more information.
The support process, the naming, and the translation platform
The FAQ section tells you how the project handles problems, and it is unusually specific about the order in which you should do things.
For a bug, you first join the discussion group and search around to see if anyone reported it, or whether a test build with the fix exists. Then you make sure you have the latest version installed, checking the channel and the discussion group for the latest fixes. Then, if the issue appears in the official Telegram client too, you submit it to the officials, with the explicit warning to be careful not to mention Momogram in the description and screenshots because the official developers do not like them.
That last instruction is a small window into the relationship. The project is a fork of somebody else's client, and it has to be a good citizen about it.
For crashes specifically, there is one extra step: you have to click on the version number at the bottom of the settings and select Enable Log, reproduce the bug, and send the log. Without that, a crash report is not actionable.
Feature requests are accepted on a usefulness criterion. The more useful your suggestion is to the community, the more likely it will be implemented even when it is a bit complex, and in case of a rejection you may ask whether a pull request would be acceptable.
Proxy protocol support is refused, with a specific reason: if you can add it yourself without a huge amount of modification, maybe the project could talk. That is a deliberate scope boundary, and the phrasing tells you the maintainer does not want to own that maintenance.
The naming question has a clear answer too. There are too many people who mixed the project up with Nekogram and the old good NekoX, so the project was renamed, and the Momo part is named after Momoi from Blue Archive with the i stripped out for easier pronunciation.
For translations, the project uses Weblate, and the README asks contributors to get involved there if their language is missing or the translation is incorrect. The project name being a fork explains why the Weblate instance is still under the older project account.
Building it, and the container that does the heavy lifting
The compilation guide is where the real cost of being a fork becomes visible.
Building on Windows is not supported, and the advice is to use a Linux VM, WSL or dual booting. The first step is to check out all the submodules:
git submodule update --init --recursiveThen you install the Android SDK and NDK, with the default location at $HOME/Android/SDK or $ANDROID_HOME set otherwise, and it is recommended to use Android Studio for the install. You need yasm, which on a Debian-family system is:
apt install -y yasmAfter that there is a sequence of project-specific commands. You build the native dependencies with ./run init libs, build the external libraries and native code with ./run libs update, fill in TELEGRAM_APP_ID and TELEGRAM_APP_HASH in local.properties, and replace release.keystore with your own and fill in ALIAS_NAME, KEYSTORE_PASS and ALIAS_PASS in local.properties if you want a custom signing key. The final build is ./gradlew assemble with Debug or Release appended.
The Dockerfile in the repository automates all of that, and it shows the scale of the toolchain. The base image is gradle:8.13-jdk17. The command line tools are version 15859902, downloaded from the Google repository URL, and the SDK is installed at /usr/local/android-sdk-linux with the API level at android-36 and the build tools at 36.0.0. The NDK is 27.2.12479018, and the PATH is extended with the command line tools, the platform tools, the NDK home and the NDK's LLVM toolchain prebuilt for linux-x86_64.
The sdkmanager call installs build-tools at 36.0.0, the platform for android-36, platform-tools, the NDK and cmake at 3.22.1, and the licences are accepted automatically with a yes pipe. The final command builds several targets in parallel, including the app bundle, the standalone app and a Huawei variant, and the container prepares the output directories for the apk, the bundle and the native debug symbols.
For a project that inherits the entire official Telegram client, that toolchain requirement is the price of the fork, and it is why most users will never compile it and will instead install a signed release.
Editorial conclusion
Adopt Momogram if you want the official Telegram Android client with meaningful additions, such as selective last seen sharing, PGP auto decryption, in-app translation, client side banning and extra quality options, and you are comfortable tracking a third-party client that follows upstream Telegram closely. Do not adopt it if you need a minimal client or an audited one, because it is a large fork with a naming history and a support process that centres on its own discussion group. Before you install, read the notification section, because UnifiedPush needs a distributor with ntfy recommended, and if you hit a crash, enable the log from the version number at the bottom of the settings before reporting it.
Frequently asked questions
What is Momogram and how is it built?
It is a third-party Telegram client for Android that aims to be the spiritual successor of the old NekoX, built as a fork of the official Telegram Android project, which is why the repository contains TMessagesProj, TMessagesProj_App and the other upstream module directories.
How do I get push notifications working in Momogram?
Momogram has basic UnifiedPush support but needs a distributor installed. The recommended one is ntfy, with Sunup and the Google dependent UP-FCM Distributor as alternatives, and the project says ntfy is the only verified provider that works best. If UnifiedPush misbehaves, disable it in the general settings and enable the original background service instead.
Which privacy related options does Momogram add?
It removes tracking queries from URLs, hides premium upselling prompts, unchecks share my number by default when adding a contact, disables auto login with your Telegram account on certain links, lets you share last seen only with selected people, and offers a client side fban alongside chat and channel blocking from search results.
How do I build Momogram from source?
Windows is not supported, so use a Linux VM, WSL or dual boot. Check out the submodules with git submodule update --init --recursive, install the Android SDK and NDK plus yasm, run ./run init libs and ./run libs update, fill in TELEGRAM_APP_ID, TELEGRAM_APP_HASH and your signing details in local.properties, then build with ./gradlew assembleDebug or assembleRelease.
How should I report a bug in Momogram?
Search the discussion group first and check for a test build with a fix, make sure you have the latest version, and if the problem also happens in the official client report it to Telegram without mentioning Momogram. For Momogram itself, post with the bug tag, and for crashes enable the log from the version number at the bottom of the settings and attach it.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/im030-momogram)Was this useful?