One workspace. Every platform.
udctl runs where you do. Every client is free to start with, and they all connect to the same workspace — our cloud, or a server you run yourself.
Install the app
our cloud · or your own server
Desktop app
Local-first. Your data stays on your machine.
The desktop app ships the full stack — UI and backend in one install. Work fully offline with no account, or connect it to a remote server whenever you want to sync.
# macOS can also install with Homebrew (picks the build for your chip) brew tap oatnil-top/ud brew install --cask undercontrol
Windows: the installer is unsigned, so Windows shows an "unknown publisher" warning the first time you run it — click More info → Run anyway to continue.
Linux: make the AppImage executable first: chmod +x undercontrol-desktop-0.176.0.AppImage
Homebrew: Homebrew 6 requires trusting a third-party tap once: brew trust oatnil-top/ud. Older Homebrew and Linuxbrew have no trust subcommand — skip it there.
Command line
The same workspace, in your terminal — and your agents'.
One command gives you ud: kubectl-style commands, an interactive TUI, and the interface AI coding agents use to read and write your tasks. Install from npm, or from our Homebrew tap on macOS and Linux.
# requires Node.js 18+ npm install -g @oatnil/ud ud --version
# macOS / Linuxbrew brew tap oatnil-top/ud brew install ud
Web app
Nothing to install.
The hosted app runs in any modern browser — try it as a visitor before creating an account.
Browser extension
Clip the web into your workspace.
udctl Web Clipper saves any page as a task with a full-page snapshot — video transcripts included.
Mobile
iOS and Android — both in beta.
The native iOS app is in public beta — join on TestFlight and it installs like any app, updates included. Android installs from the APK below. The Apple Shortcut still gives you one-tap task capture, and the web app works great on mobile browsers.
Android: the APK comes straight from us rather than from Google Play, so the first install asks where the file came from — tap Settings → Allow from this source and the install continues.
Self-host
Or skip our cloud entirely.
Every client above also works against a server you run yourself. Pick your path: one all-in-one Docker image (amd64 and arm64), a bare-metal npm install, or Homebrew with brew services keeping it running — each a single ud-server binary with the web UI built in. A free Pro trial license (valid until 2027-01-03) is included on the self-hosting page.