Skip to content

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
curl https://tebhos.com/dl/desktop/stable/win32/x64/latest
{
  "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.