FortGram

🌐 Languages / Языки: English · Русский

FortGram — How It Works

FortGram is an Android Telegram client based on a fork of Telegram X, with a parental-control layer built into the app. It is intended for a child’s device that is already managed by a device-level tool such as Google Family Link.

Architecture: two layers

FortGram does not introduce a separate “child mode” or a special account type. Protection comes from two layers that complement each other:

  1. Telegram’s own account model. The child uses a regular Telegram account. The parent keeps a second session of that account on their own phone and manages contacts, groups and privacy settings from there. Whatever the parent puts into the account is what the child gets.
  2. The client-side whitelist inside FortGram. Even when a stranger writes first, adds the child to a group or sends a sticker pack, FortGram decides what the child actually sees and can answer. The rules live on the device behind a parental PIN and can be exported, imported and moved between phones.

The first layer is what Telegram already offers; the second is what FortGram adds. Together they close the gaps each has alone: Telegram’s privacy settings cannot hide an existing chat, and a client alone cannot stop the child from logging in elsewhere — that is why the account preparation below matters.

What FortGram changes vs. Telegram X

Area What it does
Parental PIN 4-digit PIN, separate from the app passcode, stored on the device as a hash. Opening Settings asks for it, so the child cannot change account or privacy settings, sign out or add another account.
Whitelist mode When on, the child can chat only with phone contacts, users the parent allowed explicitly, and groups the parent allowed. Everything else — unknown users, other groups, channels, secret chats, bots — is hidden from the chat list, search and notifications, and cannot be opened by link. Creating groups and channels, starting secret chats and joining by invite link are blocked.
Allowed contacts Users who are not in the phone book but may talk to the child, added by @username.
Allowed groups The list of groups the child is a member of, each with a switch. Only switched-on groups are visible and writable.
Adding contacts A separate switch decides whether the child may add new contacts on their own (adding a contact would otherwise whitelist that person).
Sticker packs Optional restriction: only official Telegram packs plus packs the parent allowed. Other stickers — incoming ones too — are drawn as their emoji instead of the image. Packs are picked from the installed list, found by name, or added by link.
Notifications Push notifications work as in Telegram X, but nothing from hidden chats reaches the notification shade.
Backup of the rules Every parental setting except the PIN can be exported and imported — as a file, via the clipboard, or as a QR code. See Backup, transfer and QR.
Background work and calls A settings screen with shortcuts to the phone-maker’s switches (battery, autostart, pop-up windows) that decide whether calls and messages arrive while the app is closed.
Languages The parental screens are available in English, Russian and Ukrainian; the rest of the app uses Telegram’s translations.
No in-app updater Updates come from fgram.org / GitHub Releases, never from the Telegram X channel.

When the whitelist mode is off, FortGram behaves exactly like Telegram X.

Privacy and infrastructure

FortGram does not use any third-party infrastructure.

FortGram does not run its own backend, does not proxy messages, does not collect telemetry and does not store anything outside of Telegram. All traffic goes through Telegram’s servers exactly as with any other client. The parental PIN and the whitelist are stored only on the device. Push notifications are delivered through Firebase Cloud Messaging, the same channel every Telegram client on Android uses; Google Analytics is not enabled in the project.

Consequently:

For the technically minded: what is and is not in the build

Child account preparation

All of this happens through normal Telegram features; nothing FortGram-specific yet.

1. Create or designate a Telegram account for the child

Register the account on a phone number you (the parent) control long-term — a separate SIM, an eSIM or a virtual number. The parent must keep access to that number for account recovery.

2. Set a cloud password (Two-Step Verification)

Enable Two-Step Verification on the child’s account.

3. Add the child’s account to the parent’s Telegram

On the parent’s phone add the child’s account as a second account in any client (Telegram, Telegram X or FortGram). You need the SMS code and the cloud password. Both parents or guardians can keep their own session.

4. Configure privacy and the address book

From the parent’s session of the child’s account:

Then add the contacts the child may talk to and join the groups the child may be in.

5. Sign in to FortGram on the child’s device

Install FortGram (see Installation) and sign in with the child’s account — SMS code and cloud password as usual.

6. Set the parental PIN and switch the whitelist on

Settings → Parental Controls: set the PIN, then enable Whitelist mode. The app asks to restart so the change applies to existing chats. Then:

Finally, Export settings (see below) so the rules can be restored on a new phone.

Ongoing management

Day-to-day — new contacts, new groups, reviewing chats — happens on the parent’s phone in the parent’s session of the child’s account. A group the parent adds the child to stays hidden until it is switched on in Allowed groups on the child’s device (behind the PIN). Remote switching from the parent’s phone is on the roadmap.

Backup, transfer and QR

Settings → Parental Controls → Backup.

Export settings produces a small text document with all the rules: the three switches (whitelist mode, adding contacts, official stickers only), allowed users (with id, @username and name), allowed groups (id and title) and allowed sticker packs (id, short name, title). The PIN is never exported.

Export targets:

Import settings reads the same document from a QR code (built-in scanner), a file, the clipboard or pasted text. Before anything is applied, a preview shows every switch and every entry with a checkbox — untick what you do not want, then Apply. Users and packs without numeric ids are resolved on the device by @username and pack name, so a document can be written by hand:

{"fortgram_parental": 1,
 "whitelist": {"enabled": true, "allow_add_contact": false,
   "users": [{"username": "grandma_anna"}], "groups": []},
 "stickers": {"official_only": true, "sets": [{"name": "HotCherry"}]}}

Importing replaces the current rules. If the whitelist switch changes, the app asks to restart.

Background work and calls

Messages arrive through push notifications even when FortGram is closed. Incoming calls additionally need the phone to let the app show the call screen from the background. Many manufacturers (Xiaomi/Redmi, realme, Huawei, Samsung) block this by default.

Settings → Background work and calls lists the switches and opens the right screen for each:

If calls ring only while the app is open, go through this screen first.

Installation

FortGram is distributed as an APK from fgram.org and GitHub Releases; it is not in Google Play yet (see the roadmap). Package name: org.fgram.app.

  1. On the child’s device allow installation from the browser or file manager you use (Family Link can require the parent’s approval).
  2. Download the APK and open it. Updates are installed the same way over the existing app — the account, PIN and rules stay.
  3. Every release is signed with the project key. To verify a downloaded APK: apksigner verify --print-certs FortGram-*.apk must show certificate SHA-256 54:DA:5E:95:C6:83:2D:DE:0A:89:35:48:2D:5D:EE:C7:A3:FA:C0:A1:9B:10:AF:58:E1:E1:70:F7:1C:17:5F:2B. An APK with a different fingerprint is not from this project.

Requirements: Android 7.0 or newer, 64-bit ARM device (arm64-v8a) — that is practically every phone sold since 2017.

Known limitations

Moving to a new phone

  1. On the old phone: Parental Controls → Export settings → Show QR code (or Save to file).
  2. On the new phone: install FortGram, sign in with the child’s account, set a PIN.
  3. Parental Controls → Import settings → Scan QR code (or From file), check the preview, Apply.

🌐 Languages / Языки: English · Русский

FortGram — Как это работает

FortGram — Android-клиент Telegram на основе форка Telegram X со встроенным слоем родительского контроля. Предназначен для устройства ребёнка, которое уже управляется на уровне системы — например, через Google Family Link.

Архитектура: два уровня

FortGram не вводит отдельный «детский режим» и не создаёт особый тип аккаунта. Защита строится из двух уровней, которые дополняют друг друга:

  1. Собственная модель аккаунта Telegram. Ребёнок пользуется обычным Telegram-аккаунтом. У родителя на своём телефоне есть вторая сессия этого аккаунта, откуда он управляет контактами, группами и приватностью. Что родитель добавляет в аккаунт — то ребёнок и получает.
  2. Белый список внутри FortGram. Даже если незнакомец напишет первым, добавит ребёнка в группу или пришлёт стикерпак, именно FortGram решает, что ребёнок реально увидит и на что сможет ответить. Правила хранятся на устройстве за родительским PIN, их можно экспортировать, импортировать и переносить между телефонами.

Первый уровень даёт сам Telegram, второй добавляет FortGram. Вместе они закрывают дыры друг друга: настройки приватности Telegram не могут скрыть уже существующий чат, а клиент сам по себе не помешает ребёнку войти в аккаунт в другом месте — поэтому важна подготовка аккаунта ниже.

Что FortGram меняет по сравнению с Telegram X

Область Что делает
Родительский PIN 4-значный PIN, отдельный от пароля приложения, хранится на устройстве в виде хеша. Вход в Настройки требует его ввода, поэтому ребёнок не может изменить настройки аккаунта и приватности, выйти из аккаунта или добавить другой.
Режим белого списка Когда включён, ребёнок может общаться только с контактами из телефонной книги, с явно разрешёнными пользователями и в разрешённых группах. Всё остальное — незнакомые пользователи, другие группы, каналы, секретные чаты, боты — скрыто из списка чатов, поиска и уведомлений и не открывается по ссылке. Создание групп и каналов, секретные чаты и вступление по приглашению заблокированы.
Разрешённые контакты Люди не из телефонной книги, с которыми ребёнку можно общаться; добавляются по @username.
Разрешённые группы Список групп, в которых состоит ребёнок, с переключателем у каждой. Видны и доступны для сообщений только включённые.
Добавление контактов Отдельный переключатель: может ли ребёнок сам добавлять новые контакты (иначе добавленный контакт автоматически попадал бы в белый список).
Стикерпаки Необязательное ограничение: только официальные наборы Telegram плюс разрешённые родителем. Остальные стикеры — в том числе входящие — рисуются как эмодзи вместо картинки. Наборы выбираются из установленных, ищутся по названию или добавляются по ссылке.
Уведомления Push-уведомления работают как в Telegram X, но из скрытых чатов в шторку ничего не попадает.
Резервная копия правил Все родительские настройки, кроме PIN, экспортируются и импортируются — файлом, через буфер обмена или QR-кодом. См. Резервная копия, перенос и QR.
Фоновая работа и звонки Экран настроек с переходами к переключателям производителя (батарея, автозапуск, всплывающие окна), от которых зависит, приходят ли звонки и сообщения при закрытом приложении.
Языки Родительские экраны доступны на английском, русском и украинском; остальное приложение использует переводы Telegram.
Без встроенного обновления Обновления берутся с fgram.org / GitHub Releases, а не из канала Telegram X.

Когда режим белого списка выключен, FortGram ведёт себя ровно как Telegram X.

Приватность и инфраструктура

FortGram не использует стороннюю инфраструктуру.

FortGram не запускает собственный бэкенд, не проксирует сообщения, не собирает телеметрию и не хранит ничего за пределами Telegram. Весь трафик идёт через серверы Telegram, как у любого другого клиента. Родительский PIN и белый список хранятся только на устройстве. Push-уведомления доставляются через Firebase Cloud Messaging — тот же канал, которым пользуется каждый Telegram-клиент на Android; Google Analytics в проекте не включён.

Из этого следует:

Для специалистов: что есть и чего нет в сборке

Подготовка детского аккаунта

Всё делается штатными средствами Telegram, ничего специфичного для FortGram пока не требуется.

1. Создать или выделить Telegram-аккаунт для ребёнка

Зарегистрируйте аккаунт на номер, который контролируете вы (родитель) и сохраните надолго — отдельная SIM, eSIM или виртуальный номер. Доступ к номеру нужен для восстановления аккаунта.

2. Установить облачный пароль (двухэтапная проверка)

Включите двухэтапную проверку на детском аккаунте.

3. Добавить детский аккаунт на телефон родителя

На своём телефоне добавьте детский аккаунт как второй в любой клиент (Telegram, Telegram X или FortGram). Понадобятся SMS-код и облачный пароль. Оба родителя или опекуна могут держать по своей сессии.

4. Настроить приватность и адресную книгу

Из родительской сессии детского аккаунта:

Затем добавьте контакты, с которыми ребёнку можно общаться, и вступите в группы, где ему можно состоять.

5. Войти в FortGram на устройстве ребёнка

Установите FortGram (см. Установка) и войдите под детским аккаунтом — SMS-код и облачный пароль как обычно.

6. Задать родительский PIN и включить белый список

Настройки → Родительский контроль: задайте PIN, затем включите Режим белого списка. Приложение попросит перезапуск, чтобы правила применились к существующим чатам. Дальше:

В конце сделайте Экспорт настроек (см. ниже), чтобы правила можно было восстановить на новом телефоне.

Текущее управление

Повседневное — новые контакты, новые группы, просмотр переписки — происходит на телефоне родителя в его сессии детского аккаунта. Группа, куда родитель добавил ребёнка, остаётся скрытой, пока её не включить в Разрешённых группах на устройстве ребёнка (за PIN). Удалённое включение с телефона родителя — в дорожной карте.

Резервная копия, перенос и QR

Настройки → Родительский контроль → Резервная копия.

Экспорт настроек создаёт небольшой текстовый документ со всеми правилами: три переключателя (белый список, добавление контактов, только официальные стикеры), разрешённые пользователи (id, @username, имя), разрешённые группы (id, название) и разрешённые стикерпаки (id, короткое имя, название). PIN не экспортируется никогда.

Куда экспортировать:

Импорт настроек читает тот же документ из QR-кода (встроенный сканер), файла, буфера обмена или вставленного текста. Перед применением открывается предпросмотр: все переключатели и все записи с галочками — снимите лишнее и нажмите Применить. Пользователи и наборы без числовых id распознаются на устройстве по @username и имени набора, так что документ можно написать и руками:

{"fortgram_parental": 1,
 "whitelist": {"enabled": true, "allow_add_contact": false,
   "users": [{"username": "grandma_anna"}], "groups": []},
 "stickers": {"official_only": true, "sets": [{"name": "HotCherry"}]}}

Импорт заменяет текущие правила. Если меняется переключатель белого списка, приложение попросит перезапуск.

Фоновая работа и звонки

Сообщения приходят через push-уведомления даже при закрытом FortGram. Входящим звонкам дополнительно нужно, чтобы телефон разрешил приложению показать экран звонка из фона. Многие производители (Xiaomi/Redmi, realme, Huawei, Samsung) по умолчанию это запрещают.

Настройки → Фоновая работа и звонки перечисляет нужные переключатели и открывает для каждого нужный экран:

Если звонки приходят только при открытом приложении — сначала пройдите этот экран.

Установка

FortGram распространяется как APK с fgram.org и через GitHub Releases; в Google Play его пока нет (см. дорожную карту). Имя пакета: org.fgram.app.

  1. На устройстве ребёнка разрешите установку из браузера или файлового менеджера, которым пользуетесь (Family Link может потребовать одобрение родителя).
  2. Скачайте APK и откройте его. Обновления ставятся так же, поверх установленного приложения — аккаунт, PIN и правила сохраняются.
  3. Каждый выпуск подписан ключом проекта. Проверить скачанный APK: apksigner verify --print-certs FortGram-*.apk должен показать сертификат SHA-256 54:DA:5E:95:C6:83:2D:DE:0A:89:35:48:2D:5D:EE:C7:A3:FA:C0:A1:9B:10:AF:58:E1:E1:70:F7:1C:17:5F:2B. APK с другим отпечатком — не от этого проекта.

Требования: Android 7.0 и новее, 64-битное ARM-устройство (arm64-v8a) — практически любой телефон, выпущенный с 2017 года.

Известные ограничения

Перенос на новый телефон

  1. На старом телефоне: Родительский контроль → Экспорт настроек → Показать QR-код (или Сохранить в файл).
  2. На новом: установите FortGram, войдите под детским аккаунтом, задайте PIN.
  3. Родительский контроль → Импорт настроек → Сканировать QR-код (или Из файла), проверьте предпросмотр, Применить.