ZSTATION // WORKSPACE OF ISOLATED WEB APPS

// a from-scratch station.app port — Tauri v2 desktop shell · native isolated webviews · cyberpunk HUD · powered by zstation-core

Engineering Report GitHub

Status: in active development. The Tauri v2 desktop shell, the cyberpunk HUD front-end, the native session-isolated webview host, and the embeddable zstation-core engine are implemented and wired together. This page is an overview; the engineering report tracks status by area. Features are marked planned unless implemented — nothing here claims a working capability that is not yet in the codebase.

zstation is a workspace of isolated web apps written in Rust — a from-scratch port of the defunct station.app, built as a Tauri v2 desktop application behind a cyberpunk HUD. One window arranges your web apps (Slack, Gmail, Discord, Notion, Linear, Claude, …) as Trello-like draggable/resizable tiles, each running in its own isolated session so logging into one never leaks cookies or storage into another. Its board engine is extracted as zstation-core, an embeddable library so the same station board can be reused inside the other MenkeTechnologies GUI apps. It is a paid product, created by MenkeTechnologies.

Real session isolation

Each tile is a native, separately-partitioned webview floated over the window — not an iframe. Slack/Gmail/etc. forbid framing and iframes share the cookie jar anyway; only native partitioned webviews truly isolate a login.

Rust + Tauri v2

A native desktop shell rather than a browser-wrapped web app — the UI is a Tauri v2 WebView, the logic is Rust. Child webviews come from Tauri v2's WebviewWindow::add_child.

Embeddable core

The board engine lives in zstation-core, decoupled from the GUI, so the same code can embed in other MenkeTechnologies apps behind the shared zgui-core toolkit.

Trello-like board

Drag, resize and stack tiles; distinct partitions never share anything, so a second account of the same service is just a tile with its own session name (slack:work).

How isolation works

Each tile is isolated by partition: on macOS/iOS via WebviewBuilder::data_store_identifier([u8; 16]) (a stable id hashed from the partition name), and on Windows via .data_directory(<app_local_data>/partitions/<partition>). Tiles that share a partition share a login; distinct partitions never share cookies or storage. The host commands live in app/src-tauri/src/station_webview.rs and the mountable view calls them through the frontend/station-host.js shim.

GUI baseline (the 10-point family contract)

R1 ⌘K command palette · R2 Stryke Hooks editor · R3 embedded terminal · R4 shared cyberpunk theme · R5 tab bar + tile dashboard · R6 logo top-left · R7 fuzzy filters · R8 sortable/resizable tables · R9 clip-engine arrangement grid · R10 multi-pane file browser — all consumed from the shared submodules and wired in the app shell.

Where it goes next

See the engineering report for the two-layer split, the host command surface and status by area, and the MenkeTechnologiesMeta umbrella for the wider desktop stack.