Status: Implementation IMPLEMENTED × Exposure PUBLIC (macOS builds). Windows and Linux targets exist in the electron-builder config but macOS is the shipped target.

Overview

allternit-desktop (@allternit/desktop, in surfaces/allternit-desktop) is the Electron shell that bundles the whole stack so it runs locally out of the box: the workspace web UI, the Rust allternit-api server, gizzi-code, and supporting services (mux, voice, connector sidecar, office engine, computer-use driver). You can also point it at your own Allternit instance. See BYOC overview. The workspace UI is a Vite + React app built from the separate allternit-ai repository. scripts/prepare-platform-static.cjs packages its static export into the app; set ALLTERNIT_AI_PATH to build against a specific checkout.

Local ports

Defaults from src/main/config.ts:

Global hotkeys

The Quick Chat window loads the workspace UI with /?mini=1.

Local development

Build and package

build:electron runs prepare:* steps first (platform static, computer-use driver, ACU gateway, Lima, Lume, mux, mesh node, office engine, API binary, connector catalog and sidecar) and verify:packaged-resources.

Layout

IPC channels (Quick Chat)

The main process registers many other channels (for example miniApps:*); see src/main/unified-main.ts.

Allternit Factory views

Shipping with the Allternit Factory build. These views are the approved design and are not live yet.
Desktop is the graphical product for the Allternit Factory. There’s no new mode: the Factory’s four parts show up in places Desktop already has, and every view reads the same engine as Gizzi. The views draw the same picture for the same input (no random layout), show ”—” when empty, and take counts from the judge, never from narrative. Desktop ships allternit-factory and gizzi in resources/bin and puts gizzi on your PATH at first run.

How this relates to the Agency Kernel

Desktop hosts the Allternit API and Gizzi runtime locally. It is not part of the Agency Kernel; the kernel’s Agency API is a Cloud API surface. See Architecture.

Prompt-cache countdown

After a cache-bearing response, Gizzi Code shows a separate cache row under its model/context footer. Desktop and the web/phone/PWA workspace show the same indicator inside the latest reply’s post-run orb telemetry, alongside time, tokens, and cost. Clicking the telemetry also includes a Cache row in the details. Existing custom status-line commands are preserved. The row updates every 30 seconds without sending a model request. Green means warm, amber means less than 20% of the TTL remains, and red means the estimated TTL has elapsed. The block bar shows time remaining. last hit is the share of the latest request’s input read from cache, not a session-wide hit rate. When cold, may re-cache shows the latest reported input footprint. Expiry is an estimate from the request TTL, not a guarantee that the provider still holds the cache. Changes to model, tools, or context may invalidate it earlier. Unknown provider TTLs have no countdown. Native requests with a known TTL currently use five-minute ephemeral markers; Gizzi’s interactive cache path uses its configured five-minute or one-hour TTL. No keepalive requests are sent. Miss counts and causes are omitted when not reported.

Mode controls and rail selection

Use the floating mode icons to switch between Home, Bots, Code and ACI. Scroll over the mode wheel to cycle through modes, or hover or focus it to reveal the other modes. The selected mode and rail tab have a translucent glass highlight with a fine Allternit double-slash detail. Icons respond to hover and press; keyboard focus stays visible. Motion and transparency follow your system accessibility preferences.