telegram-to-simplex is a relay that lets you transfer news you've seen on Telegram directly into SimpleX Chat groups
Languages:
- πΊπΈ English
- β¬οΈπ¦β¬οΈ Russian
Telegram is a great source of relatively unmoderated news, but it lacks strong chatting privacy protecting features like E2EE-by-default, MTProto audit, and a disclosed server source code. SimpleX Chat, on the opposite, is a great privacy friendly messaging tool (and an app), yet it lacks good channel support (added 30 April 2026, but still lacks huge audience for major platforms to migrate to SimpleX). telegram-to-simplex acknowledges that difference and aims to create a better cross interface user experience for users of both platforms to take the best of both: communication privacy of SimpleX Chat and free speech nature of Telegram.
With telegram-to-simplex, you can:
- Send a Telegram text message to a SimpleX Chat group;
- Send a Telegram image to a SimpleX Chat group, the image will be visible and delivered not as a usual file;
- Send a Telegram file to a SimpleX Chat group;
- Forward a Telegram message to a SimpleX Chat group, with source name and link on top of the final message;
- Protect Telegram bot with a password, so that the aliens can't use your relay;
Prerequisites: create Telegram bot (token) + copy SimpleX group link π€
β
π Pick path
β
βββββββββββββββββββ΄ββββββββββββββββββ
βΌ βΌ
QUICK INSTALL MANUAL INSTALL
β β
1. Run install.sh π€ 1. System dependencies π€
(deps + openssl@3, 2. SimpleX Chat CLI install π€
arch-aware CLI binary (download + ad-hoc sign +
+ ad-hoc sign + openssl openssl symlink bridge)
symlink bridge, repo, 3. Clone repo + venv + .env
venv, .env template) template π€
β β
βββββββββββββββββββ¬ββββββββββββββββββ
βΌ
2. Start SimpleX profile + server on :5225 π€
simplex-chat -d ~/simplex-data/bot -p 5225
ββ first run only: set a display name when prompted
ββ leave it running (the wizard connects to it)
βΌ
3. Run the setup.py wizard π€ (you answer 3 prompts π€)
enter: Telegram token Β· bridge password Β· group link
β auto-joins the group (/c <link>)
β auto-detects group id + name (/groups)
β writes .env (chmod 600)
β
π Pick path: run it in the background?
β
βββββββββββββββββββ΄ββββββββββββββββββ
βΌ βΌ
4a. Background services π€ 4b. Run manually π€
macOS: setup-launchd.sh β’ keep the :5225 server
Linux: setup-systemd.sh from step 2 running
(auto-start at login/boot, β’ open a 2nd terminal:
restart on crash) cd repo && . .venv/bin/activate
β && python bridge.py
β first stop the manual :5225 β
server from step 2 β the agent/ β
unit binds the same port (clash) β
βββββββββββββββββββ¬ββββββββββββββββββ
βΌ
5. Verify π€
lsof -nP -iTCP:5225 -sTCP:LISTEN (server up?)
+ service state (launchctl print / systemctl status)
+ tail logs if anything's crash-looping
βΌ
6. Authorize + test π€
Telegram: /start <password> β forward a post β check SimpleX group
Legend: π€ you do it π€ a script does it π branch point β gotcha
- Creating a Telegram bot
- Go to @BotFather
- Send
/newbotand assign a name to it - Send its USERNAME made up in your head, but it has to end with "bot". Remember the USERNAME
- Remember the TOKEN under the
Use this token to access the HTTP API
Open your terminal. Remember that it's better to install the application as a sudoer, not as a root, due to rights non-excessiveness.
- Paste in that line (Ctrl + Shift + V) and run:
curl -sSL https://raw.githubusercontent.com/cyphershark/telegram-to-simplex/main/install.sh | bash
This script detects your OS, installs system dependencies, the SimpleX Chat CLI, clones the repo, sets up a Python virtual environment, and creates a config file template. After it finishes, you'll need to set up your SimpleX account and fill in credentials.
-
Complete the SimpleX Chat CLI:
python setup.py -
Configure the running agent:
bash setup-systemd.shfor Linux,bash setup-launchd.shfor MacOS.
- Verify:
sudo systemctl status telegram-to-simplex
Debian/Ubuntu: sudo apt update && sudo apt install git python3 python3-venv python3-pip ffmpeg
Arch: sudo pacman -S git python python-pip ffmpeg
Fedora: sudo dnf install git python3 python3-pip ffmpeg
macOS (Homebrew): brew install git python ffmpeg openssl@3
curl -o- https://raw.githubusercontent.com/simplex-chat/simplex-chat/stable/install.sh | bash
- Start the CLI in interactive mode:
simplex-chat -d ~/simplex-data/bot - Enter name for your technical account on SimpleX
- Create a contact address:
/ad - Enable auto-accept:
/auto_accept on - Grab a link to your group: open it, tap its name on top, click "π Group link", copy it
- Paste link into the CLI:
/c INVITE_LINK- the bot will accept invitation and it will appear in the chat - Fetch group name:
/groupswill give you out "#YOUR_GROUP (3 members) - admin" - save the name after "#" - Fetch group ID:
/_get chats 1 pcc=onwill give you a JSON file - findchatIdorgroupIdand save it - Quit:
/quit
git clone https://github.com/cyphershark/telegram-to-simplex.git
cd telegram-to-simplex
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
- Create a strong password and copy it:
openssl rand -hex 24 - Then edit the config file:
nano ~/telegram-to-simplex/.envand put in credentials:
TELEGRAM_TOKEN=YOUR_TOKEN # an API token from BotFather
BRIDGE_PASSWORD=YOUR_PASSWORD
SIMPLEX_GROUP_ID=YOUR_GROUP_ID
SIMPLEX_GROUP_NAME=YOUR_GROUP_NAME
SIMPLEX_WS=ws://127.0.0.1:5225
TMP_DIR=/home/YOUR_USER/telegram-to-simplex/tmp # put in your user's name
- Update permissions:
chmod 600 ~/telegram-to-simplex/.env
- Create a service file for SimpleX:
sudo nano /etc/systemd/system/simplex-chat.service - Paste in, replacing YOUR_USER with your username:
[Unit]
Description=SimpleX Chat CLI WebSocket server
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=YOUR_USER
Group=YOUR_USER
WorkingDirectory=/home/YOUR_USER
ExecStart=/home/YOUR_USER/.local/bin/simplex-chat -d /home/YOUR_USER/simplex-data/bot -p 5225
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
- Create a service file for bridging:
sudo nano /etc/systemd/system/telegram-to-simplex.service - Paste in, YOUR_USER is your username:
[Unit]
Description=telegram-to-simplex bridge
After=network-online.target simplex-chat.service
Wants=network-online.target
Requires=simplex-chat.service
[Service]
Type=simple
User=YOUR_USER
Group=YOUR_USER
WorkingDirectory=/home/YOUR_USER/telegram-to-simplex
EnvironmentFile=/home/YOUR_USER/telegram-to-simplex/.env
ExecStart=/home/YOUR_USER/telegram-to-simplex/.venv/bin/python /home/YOUR_USER/telegram-to-simplex/bridge.py
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
- Restart daemon:
sudo systemctl daemon-reload
sudo systemctl enable --now simplex-chat
sudo systemctl enable --now telegram-to-simplex
- Verify, both should be in "Active: active (running)" mode:
sudo systemctl status simplex-chat
sudo systemctl status telegram-to-simplex
Congratulations! The program is ready to run
- Open your bot by its @USERNAME
- Click Start on the bottom
- Send
/start PASSWORDto the bot - with your password instead of PASSWORD. For instance, if it's "123456", then send/start 123456. You should see "β Authorized. Forward channel posts to me and I'll relay them to SimpleX" - Now, you can forward or directly send messages to the bot so that it will appear in the SimpleX Chat group 4.1. For instance, open any Telegram channel, long-press a post, and select 'Forward'. Send to your bot. The bot replies 'β Relayed' on success. The post appears in your SimpleX group with the channel name and link prepended.
In case you want to uninstall the relay, run bash uninstall.sh - it will delete the SimpleX CLI and associated packages and processes, except for Python.
- To add specification of more media types (e.g. audios, videos, GIFs, etc.). The advancement is hugely slowed down by SimpleX WebSocket API.
- To add ability to send to multiple groups and to SimpleX channels.
- Adding troubleshooting and debugging features to README.