Android
Нативный клиент на Kotlin и Compose, пакет net.varyen.clauder. Все экраны свои, а не веб-морда в webview: главная с дашбордом, проекты, чаты, лента сессии, чат с агентом, субагенты, экран агентов, расход, браузер файлов, git, терминал, чат с opencode, настройки.
Подключение
Снимком QR-кода на вводном экране: адрес и ключ вводить руками не нужно. Код показывает карточка «Это подключение» в настройках сервера.
Переехали на другой адрес — код пересобирается, и телефон подхватит его тем же снимком.
Уведомления
Держит foreground-служба со своим SSE-потоком. Firebase нет вовсе: это значит, что уведомления идут напрямую с вашей машины и не зависят ни от чьего облака, но и телефон должен разрешить службе жить в фоне.
Приходят они обо всём, что происходит на машине, а не только о чатах, начатых с телефона: вопрос от claude в терминале доедет так же — если подключены хуки.
Подробности про то, чем это отличается от Web Push, — в разделе Уведомления.
Где пойдёт сессия
Форма нового чата начинается со строки «Где» — с выбора машины, а не папки: каталоги, модели и команды у каждой машины свои. Машина здесь — это профиль сервера, и слотов четыре: домашний, запасной, ещё один и сам телефон.
Сервер на телефоне приложение поднимает само — с рутом через su, без рута через службу команд Termux, — и показывает, на какой стадии подъём. Чат, начатый на телефоне, автоматически никуда не переезжает, даже если телефонный сервер замолчал: молчание там обычное состояние, а не поломка.
Подробно — Где идёт сессия.
Где отличается от веб-морды
Терминал — без полной эмуляции: вывод показывается текстом, вычищенным от ANSI-последовательностей, ввод — строкой по Enter, а клавиш, которых нет на экранной клавиатуре, — кнопками: Ctrl+C, Tab, стрелки истории, Esc, Ctrl+D. Курсорные программы (vim, top) — в веб-морду.
Установка — APK со страницы релизов, подписанный. В сторах приложения нет.
Остальное держится в паритете намеренно: возможность, появившаяся в веб-морде, приезжает в Android отдельной правкой, а не «когда-нибудь».