Android
A native client in Kotlin and Compose, package net.varyen.clauder. Every screen is its own rather than the web UI in a webview: the home screen with the dashboard, projects, chats, the session feed, the agent chat, subagents, the agents screen, spend, the file browser, git, the terminal, Android devices, templates, the settings.
Connecting
By scanning a QR code on the intro screen: no typing the address and the key by hand. The code is shown by the "This connection" card in the server settings. The regular phone camera can scan it too: the link inside opens the app straight on the connection screen with the fields filled in.
Moved to another address — the code is rebuilt, and the phone picks it up with the same scan.
Notifications
Held by a foreground service with its own SSE stream. There is no Firebase at all: that means notifications come straight from your machine and depend on nobody's cloud — but it also means the phone has to let the service live in the background.
They arrive about everything happening on the machine, not only about chats started from the phone: a question from claude in the terminal gets through the same way — provided hooks are connected.
How this differs from Web Push is in Notifications.
Where the session will run
The new-chat form starts with the "Where" line — with a machine rather than a folder: directories, models and commands differ from machine to machine. A machine here is a server profile, and there are four slots: home, spare, one more and the phone itself.
The app brings the server up on the phone by itself — with root through su, without root through the Termux command service — and shows which stage it is on. A chat started on the phone never moves away automatically, even if the phone server goes quiet: silence there is a normal state, not a failure.
In detail — Where the session runs.
Without a Claude subscription the app offers a short dialog: a cloud (DeepSeek, OpenRouter, Kimi…), an API key and one button — checking, connecting and switching new chats to that cloud. It opens from the Claude sign-in dialog and from the banner on the home screen. With a server on the phone itself, a card in the Clauder Runtime companion does the same. Details — Models and providers.
Where it differs from the web UI
The terminal — without full emulation: the output is shown as text cleaned of ANSI sequences, the input is a line sent by Enter, and the keys the on-screen keyboard lacks are buttons: Ctrl+C, Tab, history arrows, Esc, Ctrl+D. Cursor programs (vim, top) belong in the web UI.
Installation — a signed APK; builds are handed out on request via @varyen on Telegram. The app is not in any store. After that the app updates itself: it checks its own version without the server, and the Update button in the settings downloads the APK and opens the system installer. The same place updates Claude Code — including the one inside WSL and in the Clauder Runtime companion, and the service announces new versions with a notification in the "Updates" channel. More in Updating.
Everything else is kept at parity on purpose: a feature that appeared in the web UI arrives on Android as its own change, not "some day".