SPACE.LA
◀ music select
tish / company / shipped

tish-desktop

The cross-device app runtime for Tish: a Tish shell and a capability broker driving Tauri webviews, with one CLI to scaffold, run, sign and ship desktop apps

BPM
195
GRADE
SS
LEVEL
8
RELEASES
11
YEARS
2026–2026

tish-desktop is how a Tish program becomes a desktop app. The app's logic runs as a compiled Tish shell; the interface runs in Tauri webviews; and between them sits BrokerCore, a capability broker the UI talks to through invoke(cmd, args), listen(event) and shared state.*. The same protocol is meant to carry a single codebase across web, desktop and mobile, with Apple-native surfaces handled by its sibling, tish-apple.

The broker handles the desktop side: dock, tray, menus, notifications, titlebar styles and window geometry; clipboard, global shortcuts, native dialogs and folder pickers; stored preferences, autostart and an auto-updater; keyring secrets and OAuth2 PKCE sign-in with a deep-link callback; file drop, sleep blocking, and allowlisted shell.exec, http.fetch and printing. Anything outside the allowlist isn't reachable from the UI at all, the same secure-by-default approach Tish itself takes.

There is one CLI, mode, that covers the lifecycle: init scaffolds an app, dev runs the webview UI through Vite next to the compiled Tish/Tauri shell, build produces the binaries, and distribute handles release artifacts, macOS code signing and notarization, updater manifests and the GitHub release. doctor checks a machine for a given platform and surface. Lattish is the default UI layer, but it is optional — --ui none gives you the shell and a webview with plain DOM.

The examples cover the range: a basic ping-and-tick app with a second window, a sandboxed file browser, a full native-chrome demo, a bring-your-own-UI app with no framework, and a hybrid app that runs dual webviews and switches a screen between a native and a webview implementation at runtime. It publishes as @tishlang/tish-desktop on npm and as the tishlang_desktop, tishlang_app and tishlang_broker crates.

What runs on it

Dune IDE is the big one. Its desktop app is a tish-desktop host: the IDE's shell is written in Tish on tishlang_desktop, porting what used to be a hand-written Tauri backend into Tish command families over the broker, with the Tish workbench as the interface. The same build pulls tishlang_desktop straight from crates.io, so it also shows the published packages working without sibling checkouts.

tish-apple, the native macOS and iOS hosts for Tish JSX, builds on tish-desktop's capability broker (tishlang_broker), so a Tish app talks to the same invoke, listen and state.* protocol whether it is in a desktop webview or a native Apple view.

before this

  • tish2026the language its apps are written in; the runtime ships Tish to the desktop

history

  1. v3.1.1
  2. v3.1.0
  3. v3.0.1
  4. v3.0.0
  5. v1.4.3
  6. v1.4.2
  7. 1.4.2
  8. 1.4.2
  9. v1.4.1
  10. 1.4.1
  11. 1.4.1
  12. v1.3.2
  13. 1.3.2
  14. 1.3.2
  15. v1.2.5
  16. 1.2.6
  17. 1.2.6
  18. v1.1.4
  19. 1.1.4
  20. v1.1.0
  21. 1.1.4