tm2027 · mobile · v2 — по фидбеку «без замудрёного»

Просто твои терминалы. С телефона.

Никаких парадигм, карточек и allowlist'ов. Приложение делает одну вещь: показывает живые терминалы, уже запущенные в tm2027, и даёт в них печатать. Скан QR → ты в tailnet → список панов → тап → терминал. Всё.

1

Что это

Телефон — ещё одно стекло к тем же панам. Чтение — живой снапшот экрана (herdr pane read, 2–4 раза/сек пока смотришь), ввод — pane send-keys через сокет. Attach-мост не нужен вовсе — правило «один мост на пан» не задевается, дека ничего не теряет.

Телефонвстроенный Tailscale
(QR-онбординг)
gatewayтонкий мост к сокету herdr:
read + send-keys + список панов
herdr / tm2027те же паны, те же агенты —
ничего не дублируется
ВыкинулиОставили
✖ attention stream, карточки, свайпы✔ список панов — как рейл деки
✖ allowlist, risk-бейджи, approve-шиты✔ терминал во весь экран + клавиатура
✖ парадигмы (экипаж/пульт/котодек)✔ ряд спецклавиш: Esc·Tab·Ctrl·стрелки·y·n
✖ виджеты, часы, Live Activity✔ простой пуш «пан ждёт» → тап → терминал
2

Вход: скан QR — и ты внутри

Единственная «умная» часть, и она была в ТЗ: дека показывает одноразовый QR (ключ Tailscale, TTL 10 мин, отзывается после входа) — телефон сканирует и оказывается в tailnet. Без ввода IP, без VPN-профилей, без приложения Tailscale.

tm2027 — подключить телефонEsc
одноразовый ключ · истечёт через 09:32
дека · показать QR
9:41▲▲▲ ●●●
Подключить деку
наведи на QR в tm2027
скан · 3–5 секунд
9:41▲▲▲ ●●●
Паны
LOCAL HERDR · 28 ms
tm2027 · main
claude · pane 3git push? [y/n]
codex · pane 1cargo test…
kimi · pane 4thinking…
shell · pane 2$ _
ssh-agent
grok · pane 7exit 101
сразу список панов · дальше QR не нужен
3

Терминал — весь экран, живой, с вводом

Тап по пану — и ты в нём. Экран обновляется пока смотришь; печатаешь системной клавиатурой, спецклавиши — рядом над ней. Ответить агенту «y» — одна кнопка. Пинч — размер шрифта.

‹ pane 3 · claude⚠ live
claude · fix/rail-cache Running tests… ✔ 41 passed (2.3s) git commit ✔ c873d9c rail cache memo ⚠ Permission required Bash(git push origin fix/rail-cache) [y] allow · [n] deny
Esc
Tab
Ctrl
y
n
3A · портрет · key-bar над клавиатурой
‹ pane 3 · claude · fix/rail-cache⚠ live · 41:32
claude · fix/rail-cache Running tests… ✔ 41 passed (2.3s) git commit ✔ c873d9c rail cache memo ⚠ Permission required: Bash(git push origin fix/rail-cache) [y] allow · [n] deny
Esc
Tab
Ctrl
C
y
n
3B · ландшафт · fullbleed, клавиатура по тапу на ⌨
3AПортрет с key-barдефолт

Открыл — сразу можно печатать. Ряд спецклавиш настраивается (какие клавиши, порядок).

3BЛандшафт fullbleed

80 колонок читаются без зума. Автоповорот: положил телефон набок — получил этот режим.

3CОба сразу

Портрет = 3A, поворот = 3B. Ноль настроек. Так и сделаем, если не возразишь.

4

iPad и раскладушки

Та же пара «список + терминал», просто рядом. На раскладушке шов = граница колонок.

Паны
tm2027 · main
claude · 3
codex · 1
kimi · 4
shell · 2
ssh-agent
grok · 7
pane 3 · claude · fix/rail-cache⚠ live
claude · fix/rail-cache Running tests… ✔ 41 passed (2.3s) git commit → c873d9c rail cache memo ⚠ Permission required Bash(git push origin fix/rail-cache) [y] allow · [n] deny
Esc
Tab
Ctrl
y
n
iPad / развёрнутая книжка · список слева, терминал справа; с внешней клавиатурой — полноценный ввод
5

Пуш — простой

Одно правило: пан ждёт ввода или упал → пуш. Тап → сразу этот терминал. Кнопки y/n в пуше — опция в настройках, по умолчанию выключены.

9:41
понедельник, 25 августа
⌁ TM2027 · сейчас
pane 3 · claude ждёт ввода
git push origin fix/rail-cache? [y/n]
⌁ TM2027 · 4 мин
pane 7 · grok завершился
exit 101
тап = терминал этого пана, курсор уже там
MVPПорядок сборки

Неделя 1: gateway (read + send-keys + список) и терминал на телефоне по прямому адресу.
Неделя 2: QR-онбординг со встроенным Tailscale.
Неделя 3: пуши + iPad-сплит.
Каждый этап — уже рабочее приложение.