Roblox executor/version aggregator for Windows, macOS, Android, and iOS. It normalizes each service’s reported Roblox client version, validates it, and outputs a single JSON payload that’s easy to consume.
- PC baseline match (Windows/macOS): compares each service to Roblox LIVE CDN version.
- Mobile strictness (Android/iOS): marks a service updated only if Roblox’s mobile API returns
UpgradeAction === "None"for that app build. - Per‑version timing: tracks wait time until update; shows current elapsed or historical average in the output.
- Diagnostics:
?selftest=1,?diag=1(mobile),?diagpc=1(PC). - Caching & history: minimizes endpoint load and preserves recent timing data.
Note: timing values are measured in hours, not minutes.
- PHP 7.4+ (8.x OK)
- cURL extension enabled
- Outbound HTTPS to:
clientsettingscdn.roblox.comand the listed service endpoints - The web server user must be able to write to
./cache_v2/
-
Place
index.phpin a web-served directory. -
Ensure
cache_v2/is writable:mkdir -p cache_v2 && chmod 775 cache_v2 -
Fetch the default output:
curl -s 'https://your.host/index.php' | jq .
-
Run a self-test:
curl -s 'https://your.host/index.php?selftest=1' | jq .
| Constant | Default | Description |
|---|---|---|
UA |
Chrome-like UA | HTTP user-agent for requests |
HTTP_TIMEOUT |
12 | Per-request timeout (seconds) |
CORS_ALLOW |
* |
CORS allow-origin header |
CACHE_DIR_V2 |
./cache_v2 |
Cache directory |
AGG_CACHE_TTL |
1800 | Cache TTL for main payload (seconds) |
RBLX_VERS_TTL |
1800 | TTL for Roblox baseline (seconds) |
DEBUG_MODE |
false | If false, serves cached payload when fresh |
All are GET and return JSON.
| Query | Description |
|---|---|
| (none) | Aggregated results (cached unless DEBUG_MODE=true). |
?include_backends=1 |
Adds detailed per-service backend status. |
?selftest=1 |
Checks PHP, cURL, cache directory, and Roblox reachability. |
?diag=1 |
Mobile diagnostics: extraction details and Roblox validation. |
?diagpc=1 |
PC diagnostics: normalized versions vs Roblox baseline. |
-
The script fetches Roblox’s official version info from:
https://clientsettingscdn.roblox.com/v2/client-version/WindowsPlayer/channel/LIVEhttps://clientsettingscdn.roblox.com/v2/client-version/MacPlayer/channel/LIVE
-
It extracts the
clientVersionUploadvalue, which looks likeversion-31fc142272764f02. -
Each executor’s endpoint is fetched, and a version-like string is extracted.
-
After normalization (removing prefixes, lowercasing), the script compares the value to the Roblox LIVE baseline.
-
If they match exactly, that service is marked as
updated: true.
-
The script extracts a numeric version from each service, such as
2.695.960. -
It builds the Roblox app version identifier:
- Android →
AppAndroidV2.695.960 - iOS →
AppiOSv2.695.960(note lowercase v)
- Android →
-
It queries Roblox’s mobile client API:
https://clientsettingscdn.roblox.com/v1/mobile-client-version?appVersion=<identifier> -
Roblox returns JSON like:
{ "data": { "UpgradeAction": "None" } } -
If
UpgradeActionequalsNone, the service is counted as updated.
{
"windows": {
"zenith": {"updated": true, "version": "version-31fc142272764f02", "avg": {"version-31fc142272764f02": 47}}
},
"RobloxVersions": {
"windows": "version-31fc142272764f02",
"macos": "version-7a1b3c4d5e6f7890",
"ios": ["version-2.695.956"],
"android": ["version-2.695.960"]
}
}Field meanings:
updated– Whether the service matches Roblox (PC) or passesUpgradeAction=None(mobile).version– The extracted, normalized version string (always prefixed withversion-).avg– The time (in hours) this version has been pending or historically averaged.
Defined inline under $SERVICES_INLINE grouped by platform. Example:
"zenith" => [
"url" => "https://zenith.win/api/v1/status",
"field" => "roblox_version"
]cache_v2/versions_cache_v2.json– main aggregated payload (30m TTL)cache_v2/backends_status_v2.json– backend debug infocache_v2/History_v2.json– version timing logs (max 10 waits per version)cache.rblx_versions_v2.json– Roblox baselines (30m TTL)
- 500 or blank: check web server log and
php-error.log. - Roblox HTTP fails: outbound firewall or DNS issue.
unreachable: endpoint offline.no_version_reported: specify afieldpath.- Mobile always false: inspect
?diag=1to see Roblox API response.
MIT. See LICENSE.