About Orbrun

Orbrun is an unofficial DCSS client that puts you inside the dungeon. It connects to public WebTiles servers, speaks the same protocol as the official client, and renders the same game in first person, built to be played with a gamepad on a handheld — the Steam Deck first.

If you play WebTiles, this is your game, your account, your rc file, and your keys. Orbrun adds a 3D view and controller support on top; it does not ask you to relearn anything.

Getting started

Open orbrun.app, pick a server, and log in with your existing WebTiles account — or register a new one, or spectate without an account. Then start a game and play. There is nothing to install and no Orbrun account: your browser talks to the DCSS server directly.

To play through Steam, on a Deck or a desktop, see Add to Steam for the five steps that put Orbrun in your library with artwork.

Features

Controls

Keyboard

Everything works as in the official client, with one documented exception: direction keys are relative to where you are facing.

KeyDoes
k / ↑step forward
h l / ← →turn
j / ↓ and the diagonalsstep back, strafe
Shift + directionrun
Ctrl + directionattack
F12chat

Every other physical key passes through to the server untouched. Menus, prompts, targeting and text input take the same keys, in the same modes, with the same results as WebTiles. Orbrun's own menu (character, settings, controls, save and exit) is on the HUD; while spectating, Escape opens it.

Gamepad (standard mapping)

The action bar at the bottom of the screen always shows what each button does in the current mode, because the server, not a guess, says what mode you are in.

Add to Steam

Orbrun runs from your Steam library, on a Steam Deck, Windows, Linux or a Mac, as a non-Steam game that opens a kiosk browser on orbrun.app. Five steps, no script to run: see STEAM.md.

Version support

Orbrun reads each server's own gamedata at connect time, so it follows current stable and trunk without per-release work. A DCSS feature that arrives in a new tile or enum renders as soon as the server publishes it; anything the server does not publish draws nothing rather than guessing.

Security and privacy

Orbrun has no accounts of its own. Your browser connects directly to the DCSS server you choose over an encrypted WebSocket, exactly as the desktop WebTiles client does. Your password goes only into the login message and is never stored; a saved login keeps the server's login token, as the official client keeps its cookie. Settings and tokens live in your browser's local storage and go nowhere else.

Your rc options are read from the server, per account, per server, per game version. Orbrun never caches or overrides them.

The hosted site at orbrun.app counts page views anonymously — no cookies, no fingerprinting, nothing about your game — and relays the tile data your browser needs from the server you picked. Your game traffic never passes through it.

Not yet

Sound, the feel layer (sway, hit shake, vignettes), a desktop/Steam shell, and offline play against a local engine.

How it was built

Most of the code was written with Claude Code. The design, product decisions, testing, and review were mine. The contract every change is held to: match WebTiles, work with a controller, and never break the keyboard.

Thanks to PocketZot, the DCSS client for phones, for inspiring parts of Orbrun and for feedback.

The source is at https://github.com/Caeous/orbrun, licensed under AGPL-3.0-or-later. See ATTRIBUTION.md for its relationship to DCSS.

Feedback

Comments, questions, and bug reports are welcome at GitHub issues or caeous@gmail.com.