Desktop builds¶
Every desktop path below is served from https://tebhos.com under /dl/desktop/ and is built from four coordinates.
| Coordinate | Values |
|---|---|
channel |
stable, canary |
platform |
win32, darwin, linux |
arch |
x64, arm64 |
format |
setup, portable, dmg, zip, appimage, deb, rpm, tar_gz |
A format only exists for the platform it belongs to: setup (installer .exe) and portable (portable .zip) are Windows, dmg and zip are macOS, and appimage, deb, rpm and tar_gz are Linux.
Published platforms
TEBHOS currently publishes Windows (win32) and Linux (linux) builds for x64 and arm64. The darwin platform is accepted by every route, but no macOS build is published yet, so darwin paths return 404.
A value outside the tables above returns 404. None of these routes need authentication.
Release metadata¶
Get latest release¶
GET /dl/desktop/{channel}/{platform}/{arch}/latest
Returns the newest published version for the platform and architecture, with a download URL and checksum for each format of that version. Cached for five minutes.
| Field | Type | Description |
|---|---|---|
| version | string | The release version, a calendar version such as 2026.913.215607 |
| pub_date | string | ISO 8601 publication time |
| minimum_system_version? | string | Minimum operating system version, present only when the release declares one |
| files | object | Map of format → release file object |
Release file object¶
| Field | Type | Description |
|---|---|---|
| url | string | Version-pinned download URL: /dl/desktop/{channel}/{platform}/{arch}/{version}/{format} |
| sha256 | ?string | Lowercase hex SHA-256 of the file, or null when no checksum was published |
| checksum_url | ?string | URL of the .sha256 sibling, or null when sha256 is null |
{
"version": "2026.913.215607",
"pub_date": "2026-09-13T21:56:07Z",
"files": {
"portable": {
"url": "https://tebhos.com/dl/desktop/stable/win32/x64/2026.913.215607/portable",
"sha256": "9f2c0e...c41a",
"checksum_url": "https://tebhos.com/dl/desktop/stable/win32/x64/2026.913.215607/portable.sha256"
},
"setup": {
"url": "https://tebhos.com/dl/desktop/stable/win32/x64/2026.913.215607/setup",
"sha256": "51be7d...08e3",
"checksum_url": "https://tebhos.com/dl/desktop/stable/win32/x64/2026.913.215607/setup.sha256"
}
}
}
The absolute URLs in files are built from the instance's configured public API address. Returns 404 when nothing has been published for the platform and architecture.
List versions¶
GET /dl/desktop/{channel}/{platform}/{arch}/versions
Returns published versions, newest first. Each entry has the same shape as Get latest release. Cached for five minutes.
| Query | Type | Description |
|---|---|---|
| limit? | integer | Page size, default 25, clamped to 1–100 |
| before? | string | Only return versions newer than this version |
| after? | string | Only return versions older than this version |
| Field | Type | Description |
|---|---|---|
| versions | array | Release metadata objects, newest first |
| has_more | boolean | Whether more versions match beyond this page |
To page backwards through history, pass the last version of the previous page as after.
Artifacts¶
Download the latest build¶
GET /dl/desktop/{channel}/{platform}/{arch}/latest/{format}
Streams the newest build in the requested format as an attachment (Content-Disposition: attachment; filename=...). The response is no-store, so the link always follows the newest release. This is the URL the website download button uses, for example https://tebhos.com/dl/desktop/stable/win32/x64/latest/setup.
GET /dl/desktop/{channel}/{platform}/{arch}/latest/{format}.sha256
Returns the checksum of that build as text/plain, in the form {sha256} {filename} followed by a newline.
Download a specific version¶
GET /dl/desktop/{channel}/{platform}/{arch}/{version}/{format}
GET /dl/desktop/{channel}/{platform}/{arch}/{version}/{format}.sha256
The same, pinned to one version. version must be three dot-separated numbers (for example 2026.913.215607). Both responses are cached for a year. Returns 404 when that version has no file in that format, or no checksum.
All artifact routes accept GET and HEAD and honour Range.
Update feeds¶
The desktop app updates itself from files published next to the builds, under the same /dl/desktop/{channel}/{platform}/{arch}/ base. Each platform's updater reads the feed its framework expects:
| Platform | Feed files |
|---|---|
| Windows | releases.win.json, RELEASES, and the *-full.nupkg packages they reference |
| macOS | RELEASES.json |
| Linux | The latest release document |
| All | manifest.json |
GET /dl/desktop/{channel}/{platform}/{arch}/{filename}
Returns a raw file from the release directory. Feed files (manifest.json, RELEASES*, releases*, assets*.json, *.yml) are served inline and cached for five minutes; every other file is served as an attachment and cached for a year. filename must be a plain file name of at most 128 characters: a name that contains /, \ or .., or starts with ., returns 400.
Use the metadata, not file names
Build file names are an implementation detail of the release pipeline. Link to the latest/{format} shortcut or to the url values in the release metadata instead of constructing file names yourself.