Repository navigation
Releases: matttsys/RayZen-Pilot
Release list
RayZen Pilot 5.0.0-alpha.2 Omni
RayZen Pilot 5.0.0-alpha.2 "Omni" (pre-release)
نسخهٔ پیشانتشار. همهٔ آزمونهای خودکار روی شبیهساز آفلاین تلگرام اجرا شدهاند؛ آزمون زنده در گروه واقعی هنوز انجام نشده است.
Pre-release. Every automated suite ran against the offline Telegram simulator; live acceptance in real groups has not been run yet.
Downloads
| File | What it is |
|---|---|
rayzen-pilot-v5.0.0-alpha.2-omni-selfhost.zip |
Public self-hosted edition (host panel, VPS, Docker). No channel requirement, no telemetry. |
rayzen-pilot-v5.0.0-alpha.2-omni-owner-hosted.zip |
Owner-hosted edition for the project's own bot: adds the @RzRoot request on private /start (pilot/gate.py, see OWNER-HOSTED.md). |
rayzen-pilot-v5.0.0-alpha.2-omni-manifest.json + .sig |
Ed25519-signed manifest used by /update (public key in SECURITY.md and pinned in pilot/updater.py). |
rayzen-pilot-v5.0.0-alpha.2-omni-SHA256SUMS.txt |
SHA-256 of every file above (integrity only; authenticity comes from the signed manifest). |
What's new in this build
Hotfix for the signed updater, and a new README.
- Fixed:
/updatefailed with "download failed or incomplete" (9617/2270 bytes). GitHub's API sends JSON gzip-compressed. aiohttp decompresses the body, butContent-Lengthstill counts the compressed bytes, so the exact-length check rejected every API response. The updater now asks for uncompressed bytes (Accept-Encoding: identity) and applies the exact-length check only to uncompressed responses. The size caps still apply to the decompressed bytes, which also stops a compression bomb. Nothing else about verification changed: the Ed25519 signature, pinned key, manifest size, SHA-256, edition, version and archive checks are the same. - Tested against the live
v5.0.0-alpha.1release on GitHub: the updater downloaded it, verified the signature and hash, and staged it. Five new acceptance checks cover gzip responses, the identity request header, the compression-bomb cap and theContent-Lengthcap. - Fixed: a false "release is not signed" on
/update. The latest stable release on GitHub is still 4.1.0, which predates signed releases, so every check on v5 reported it as unsigned (and auto-update would have warned the owner daily). An unsigned release that is not newer than the running version now reads as "nothing newer"; an unsigned release that claims to be newer is still refused. Two new acceptance checks, and a live check against GitHub. - Fixed: link names swallowed by a duration.
/newlink autumn 7dand «لینک جدید پاییز ۷ روز» now keep the name and the 7-day expiry. A two-word duration («۲ ساعت», «دو ساعت») must start with a number or a number word. - Fixed: Persian comma in English replies. Lists in stats, welcomes, lock status, block lists, admin rights and the group dashboard use
,in English and،in Persian. - README (English and Persian) rewritten in the 4.x layout, updated for v5, with new graphics: banner, counts, features, real bot replies, install options, signed-update steps and architecture. Download links and file names in the docs now always match the release.
/updatestill installs stable releases only. Install pre-releases from files: send the zip, manifest and.sigto the bot in private chat, then run/update inbox. Onalpha.1, whose/updatehas the bug above, install this release that way or with the zip.- Database unchanged (schema v3). No new settings.
Build identity
- Version
5.0.0-alpha.2, build5.0.0-alpha.2+2d685cacf841 - Source commit
1f3cba9720662e800501c3e1a38bd218bd9e77c9(github.com/matttsys/RayZen-Pilot, tagv5.0.0-alpha.2) - Source tree SHA-256
2d685cacf841c4d71b7e0c253cb217f79430fb56003c510f0e78f4ea276e1b4b(runtime files, excluding the build stamp) - Built
2026-10-19T20:18:38Z; signing keyV5rxvn78gNnqWjT4JJ0VjuxPKS81y2lY/frxZK0AuRk=
| Asset | SHA-256 | Size |
|---|---|---|
rayzen-pilot-v5.0.0-alpha.2-omni-selfhost.zip |
70915575a229b1fdb2cfe381d9aa4cb532e4f1ea25357723e67668e7a07958e3 |
419,118 bytes |
rayzen-pilot-v5.0.0-alpha.2-omni-owner-hosted.zip |
3d3987ba47982a819bf60c5f0407c8cb9915f7e978a51e1c7fa901adda61d230 |
424,253 bytes |
Test summary (this exact build)
Run 2026-10-19T20:18:39Z → 2026-10-19T20:21:14Z on Python 3.11.17 (Linux 6.12.105+ aarch64), against the two archives above after extraction. Simulator = FakeTelegram, an in-process Bot API model; it is not real Telegram.
| Suite | rayzen-pilot-v5.0.0-alpha.2-omni-selfhost | rayzen-pilot-v5.0.0-alpha.2-omni-owner-hosted |
|---|---|---|
| units | PASS (7/7) | PASS (7/7) |
| scenarios | PASS (13/13) | PASS (13/13) |
| purgeword | PASS (9/9) | PASS (9/9) |
| sweep | PASS (0 failures, 12796 simulated API calls) | PASS (0 failures, 12813 simulated API calls) |
| html_render | PASS (no failures) | PASS (no failures) |
| migration | PASS (no failures) | PASS (no failures) |
| v5 acceptance | PASS (123/123) | PASS (123/123) |
| edition + gate | PASS (10/10) | PASS (42/42) |
| smoke explore | PASS (no errors) | PASS (no errors) |
Counted checks in the suites that report counts: 356. Overall: all PASS.
| Environment | Result |
|---|---|
| Automated + simulator (both editions) | PASS |
Clean virtualenv install from requirements.txt, first start, suites with that venv |
PASS |
| Real AI provider (OpenAI-compatible endpoint, operator key) | PASS (10/10 checks, 76s) |
| Real Telegram groups | NOT RUN (needs the operator's test groups; checklist in the private QA archive) |
| Docker image build, systemd install on a VPS, Pterodactyl panel | NOT RUN in this workspace |
Counts (registered in the code)
canonical_commands v4.1.0= 114 v5= 173 +60 -1
command_names v4.1.0= 147 v5= 245 +98 -0
fa_text_commands v4.1.0= 27 v5= 163 +136 -0
ai_tools v4.1.0= 28 v5= 28 +0 -0
settings v4.1.0= 53 v5= 68 +15 -0
sections: {'ai': 7, 'answers': 10, 'desk': 10, 'filters': 21, 'general': 5, 'history': 1, 'invites': 8, 'locks': 7, 'logs': 5, 'members': 10, 'mod': 26, 'owner': 2, 'privacy': 6, 'schedule': 10, 'stats': 13, 'tools': 15, 'utils': 10, 'welcome': 7}
callback prefixes: ['op']
catalog problems: none
The 301+ new-capability target of the v5 plan is not met by this pre-release; see CHANGELOG.md for what is actually new.
Upgrade
- From 4.1.0: back up
data/pilot.dband.env, put the new files over the old ones, start. Schema 2 → 3 runs automatically with a backup first. /updatefetches only stable releases from GitHub. For this pre-release: send the selfhost (or owner-hosted) zip, the manifest and the.sigto the bot in private, then/update inbox.
License
AGPL-3.0 from 5.0.0 on, with NOTICE (attribution) and TRADEMARKS.md (name/logo policy). 4.0.0 and 4.1.0 stay MIT. Not legal advice.
RayZen Pilot 5.0.0-alpha.1 Omni
RayZen Pilot 5.0.0-alpha.1 "Omni" (pre-release)
نسخهٔ پیشانتشار. همهٔ آزمونهای خودکار روی شبیهساز آفلاین تلگرام اجرا شدهاند؛ آزمون زنده در گروه واقعی هنوز انجام نشده است.
Pre-release. Every automated suite ran against the offline Telegram simulator; live acceptance in real groups has not been run yet.
Downloads
| File | What it is |
|---|---|
rayzen-pilot-v5.0.0-alpha.1-omni-selfhost.zip |
Public self-hosted edition (host panel, VPS, Docker). No channel requirement, no telemetry. |
rayzen-pilot-v5.0.0-alpha.1-omni-owner-hosted.zip |
Owner-hosted edition for the project's own bot: adds the @RzRoot request on private /start (pilot/gate.py, see OWNER-HOSTED.md). |
rayzen-pilot-v5.0.0-alpha.1-omni-manifest.json + .sig |
Ed25519-signed manifest used by /update (public key in SECURITY.md and pinned in pilot/updater.py). |
rayzen-pilot-v5.0.0-alpha.1-omni-SHA256SUMS.txt |
SHA-256 of every file above (integrity only; authenticity comes from the signed manifest). |
Build identity
- Version
5.0.0-alpha.1, build5.0.0-alpha.1+db3af191704d - Source commit
476b3b02415a24e6b62c3f63e6df493a6fb68ffc(github.com/matttsys/RayZen-Pilot, tagv5.0.0-alpha.1) - Source tree SHA-256
db3af191704d0fa8aa3f50f7672a689ed64a2b4d4644a2b705ff9ce4674b6955(runtime files, excluding the build stamp) - Built
2026-10-19T19:09:19Z; signing keyV5rxvn78gNnqWjT4JJ0VjuxPKS81y2lY/frxZK0AuRk=
| Asset | SHA-256 | Size |
|---|---|---|
rayzen-pilot-v5.0.0-alpha.1-omni-selfhost.zip |
a1121270bf6824151ded64e0acc6d72583e083f99b00cdcf5a974c18ef2ed5c3 |
401,685 bytes |
rayzen-pilot-v5.0.0-alpha.1-omni-owner-hosted.zip |
65dccf8fc806f091bb5c68c830ce431028d06f7f658e44c20657b97eaaa17169 |
406,808 bytes |
Test summary (this exact build)
Run 2026-10-19T19:26:27Z → 2026-10-19T19:29:01Z on Python 3.11.17 (Linux 6.12.105+ aarch64), against the two archives above after extraction. Simulator = FakeTelegram, an in-process Bot API model; it is not real Telegram.
| Suite | rayzen-pilot-v5.0.0-alpha.1-omni-selfhost | rayzen-pilot-v5.0.0-alpha.1-omni-owner-hosted |
|---|---|---|
| units | PASS (7/7) | PASS (7/7) |
| scenarios | PASS (13/13) | PASS (13/13) |
| purgeword | PASS (9/9) | PASS (9/9) |
| sweep | PASS (0 failures, 12796 simulated API calls) | PASS (0 failures, 12813 simulated API calls) |
| html_render | PASS (no failures) | PASS (no failures) |
| migration | PASS (no failures) | PASS (no failures) |
| v5 acceptance | PASS (112/112) | PASS (112/112) |
| edition + gate | PASS (10/10) | PASS (42/42) |
| smoke explore | PASS (no errors) | PASS (no errors) |
Counted checks in the suites that report counts: 334. Overall: all PASS.
| Environment | Result |
|---|---|
| Automated + simulator (both editions) | PASS |
Clean virtualenv install from requirements.txt, first start, suites with that venv |
PASS |
| Real AI provider (OpenAI-compatible endpoint, operator key) | PASS (10/10 checks, 74s) |
| Real Telegram groups | NOT RUN (needs the operator's test groups; checklist in the private QA archive) |
| Docker image build, systemd install on a VPS, Pterodactyl panel | NOT RUN in this workspace |
Counts (registered in the code)
canonical_commands v4.1.0= 114 v5= 173 +60 -1
command_names v4.1.0= 147 v5= 245 +98 -0
fa_text_commands v4.1.0= 27 v5= 163 +136 -0
ai_tools v4.1.0= 28 v5= 28 +0 -0
settings v4.1.0= 53 v5= 68 +15 -0
sections: {'ai': 7, 'answers': 10, 'desk': 10, 'filters': 21, 'general': 5, 'history': 1, 'invites': 8, 'locks': 7, 'logs': 5, 'members': 10, 'mod': 26, 'owner': 2, 'privacy': 6, 'schedule': 10, 'stats': 13, 'tools': 15, 'utils': 10, 'welcome': 7}
callback prefixes: ['op']
catalog problems: none
The 301+ new-capability target of the v5 plan is not met by this alpha; see CHANGELOG.md for what is actually new.
Upgrade
- From 4.1.0: back up
data/pilot.dband.env, put the new files over the old ones, start. Schema 2 → 3 runs automatically with a backup first. /updatefetches only stable releases from GitHub. For this pre-release: send the selfhost (or owner-hosted) zip, the manifest and the.sigto the bot in private, then/update inbox.
License
AGPL-3.0 from 5.0.0 on, with NOTICE (attribution) and TRADEMARKS.md (name/logo policy). 4.0.0 and 4.1.0 stay MIT. Not legal advice.
RayZen Pilot 4.1.0
RayZen Pilot 4.1.0
New: /purgeword
Deletes every message from the last 48 hours that contains a word.
/purgeword متینalso matches attached forms:متینو,متینه,متینجان,متینجان. It ignoresي/ی,ك/ک, diacritics and half-spaces.ثمتینdoesn't match.- Several spellings in one run, comma-separated:
/purgeword متین، matin. - It always asks first: "N messages with «متین» from K people in the last 48h. Delete them?" with Yes / Cancel. Only the admin who asked can confirm.
- Needs the Delete messages right, and the bot needs it too. It deletes everyone's matching messages, admins included.
- Persian text command: «حذف کلمه متین». The AI assistant can do it too, and always shows the count first.
/purgeword on|offturns the index on or off for a group.offalso clears it.
Privacy change
Bots can't search a Telegram chat, so the bot now keeps a 48-hour word index for /purgeword: normalized words plus chat, message id, sender id and time. It doesn't keep the message text. Rows older than 48 hours are deleted automatically. Commands and messages to the bot aren't indexed. /forgetme, /resetdata and /purgeword off remove the index.
Upgrading
The database moves to schema v2 on first start, and a backup is written to data/backups/ first.
- VPS (git):
cd RayZen-Pilot && git pull && sudo rayzen update vps - VPS (zip):
sudo rayzen update rayzen-pilot-vps.zip - Panel: upload the new
rayzen-pilot-host.zipover the old files..envanddata/stay as they are.
Files
| File | For |
|---|---|
rayzen-pilot-host.zip |
Bot host panels (Pterodactyl Python egg) |
rayzen-pilot-vps.zip |
Linux servers with systemd, and Docker |
rayzen-pilot-dev.zip |
Source + offline test suite (no secrets) |
SHA256SUMS.txt |
Checksums |
Full notes: CHANGELOG.md
RayZen Pilot 4.0.0
RayZen Pilot 4.0.0. A Persian-first Telegram group manager that starts with every filter off.
Downloads
| File | For |
|---|---|
| rayzen-pilot-host.zip | Bot host panels (Pterodactyl Python egg). Unarchive, fill in .env, press Start. |
| rayzen-pilot-vps.zip | Linux servers with systemd (sudo bash install.sh) and Docker. |
| rayzen-pilot-dev.zip | Source with the offline test suite. |
| SHA256SUMS.txt | Checksums for the files above. |
No zip contains a token or API key. Put yours in .env.
What's in 4.0.0
- One router and one service layer for commands, Persian text commands, buttons and AI plans.
- Safe by default: nothing is deleted and no permissions change until an admin turns something on.
- Locks restore the previous permissions when lifted. Night lock, reminders and announcements survive restarts.
- Verified log routes with retries,
/whyfor deletions,/pauseto stop all filters at once. /aiturns a plain request into allowlisted actions and waits for Yes before anything high-impact runs. The model name is never shown.- Older RayZen databases are imported on first start (backed up first). Old filter switches stay off.
- VPS installer with a
rayzencommand for status, logs, backup and update.
Quick start
git clone https://github.com/matttsys/RayZen-Pilot.git
cd RayZen-Pilot/vps
sudo bash install.sh