Orbit Desktop
A point-and-click interface for Orbit that runs on your laptop, not your server.
There is an app now. It builds on Linux, macOS and Windows, talks to the server over SSH, and covers the everyday work: look, deploy, roll back, retire, read the log, the traffic and the metrics, and add a new site through a wizard. What there isn't is a download: the packages are built unsigned, and unsigned is what makes macOS and Windows treat them as suspicious. That takes two developer accounts, not more code.
There is no download yet. The Linux, macOS and Windows packages are built on every tag, but unsigned — and an unsigned installer is the one macOS and Windows present as suspicious. It gets signed when the accounts exist, not with a workflow carrying three empty secrets that goes green having done nothing.
It connects over SSH with the keys you already have. The server gains no process, no port, not a byte of state. It has exactly the same standing as your terminal.
- Status
- In development
- Version
- v0.1.0 · no release yet
- Stack
- Rust · Tauri · Svelte · SSH
- Repository
- Public, on GitHub
- License
- MIT
Orbit refuses to have a web panel, and the reason is a good one: it elevates itself to root and runs arbitrary commands, so a panel on top of that wouldn't be a panel — it'd be a root shell exposed to the internet. Orbit Desktop is the other answer to the same question.
Screenshots of what already works
Screenshots of the real application against its own fake server. The data is sample data and the interface says so in the corner: we have not pasted a client's server in here.
Orbit Desktop
It never writes to the server
It doesn't touch /etc/nginx, /etc/orbit or systemd: it only invokes orbit. An app's .conf is sourced from Bash, so it's code that runs as root. Writing to it from a window isn't editing data.
The server gains nothing
No process, no port, no file. If Orbit Desktop disappeared tomorrow, the server wouldn't notice.
It speaks SSH, not an API of its own
Your keys, your ssh-agent, your ~/.ssh/config with its ProxyJump. We don't invent authentication and we don't reimplement an SSH client.
Secrets don't cross the contract
orbit env list gives the names of the variables. Values are requested one at a time, on purpose: a panel that shows the whole .env leaks the database password in the first screenshot somebody pastes into an issue.
Unknowns aren't painted as values
A null isn't a zero. "Couldn't ask" isn't "no changes." A zero is a claim.
Multi-server, for free
A client that speaks SSH to several servers is v2.0's orbit remote add, with no control plane and no daemon. It falls out of the architecture rather than out of a feature somebody has to write.
Ready to build something big?
Pick what you want to build, add a few extras, and watch your plan take shape in real time. No emails, no waiting. Go ahead — play.