1# consola — cliente Android del daemon shuma
2
3App del rizoma (`com.rizoma.consola`) para administrar y operar **sesiones
4PTY persistentes** del `shuma-daemon` (de `~/tawasuyu`) a través del
5`shuma-gateway`. Cada sesión es típicamente un `claude code` (o un shell)
6que vive en el daemon desacoplado de la app: cerrar el terminal = DETACH,
7la sesión sigue corriendo y puedes volver a adjuntarte.
8
9## Qué hace
10
11- **Lista de sesiones** (`POST /rpc` → `PtyList`): vivas/muertas, comando,
12 tamaño, adjuntos. Crear (`PtySpawn`) y matar/reapear (`PtyKill`).
13- **Terminal** (`GET /ws/pty`): emulador vt100/xterm propio (colores 16/256/
14 truecolor, negrita/inverso, pantalla alterna, región de scroll, cursor).
15 Entrada por teclado virtual + fila de teclas especiales (esc/tab/^C/^D/^L/
16 flechas/⌫/↩). Al crear, el WS hace spawn+attach y devuelve el id.
17- **Ajustes**: URL del gateway + token (DataStore).
18
19## Conectar
20
211. En la máquina del daemon, levanta el gateway apuntando al socket del
22 daemon:
23
24 ```sh
25 # opcional: token
26 export SHIPOTE_GATEWAY_TOKEN=... # si quieres auth
27 export SHIPOTE_GATEWAY_LISTEN=0.0.0.0:7378 # para alcanzarlo desde el móvil
28 cargo run -p shuma-gateway
29 ```
30
312. En la app → ⚙ ajustes → URL:
32 - Emulador de Android: `http://10.0.2.2:7378` (loopback del host).
33 - Dispositivo real: `http://<ip-del-host>:7378` (misma LAN o túnel).
34 - Token: el mismo de `SHIPOTE_GATEWAY_TOKEN`, o vacío si no se usó.
35
36## Notas de la v0.1
37
38- Sin scrollback propio en el cliente: el daemon reenvía su scrollback al
39 adjuntarse y el emulador reconstruye la pantalla visible.
40- Texto plano (`usesCleartextTraffic`) para LAN/túnel; para internet, poner
41 el gateway detrás de TLS y usar `https://`.
42- Transporte: OkHttp (WS + HTTP); JSON con `org.json`. Sin postcard/Noise
43 directos (eso lo cubre el gateway).
README.md
consola — cliente Android del daemon shuma
App del rizoma (com.rizoma.consola) para administrar y operar sesiones
PTY persistentes del shuma-daemon (de ~/tawasuyu) a través del
shuma-gateway. Cada sesión es típicamente un claude code (o un shell)
que vive en el daemon desacoplado de la app: cerrar el terminal = DETACH,
la sesión sigue corriendo y puedes volver a adjuntarte.
Qué hace
- Lista de sesiones (
POST /rpc → PtyList): vivas/muertas, comando,
tamaño, adjuntos. Crear (PtySpawn) y matar/reapear (PtyKill).
- Terminal (
GET /ws/pty): emulador vt100/xterm propio (colores 16/256/
truecolor, negrita/inverso, pantalla alterna, región de scroll, cursor).
Entrada por teclado virtual + fila de teclas especiales (esc/tab/^C/^D/^L/
flechas/⌫/↩). Al crear, el WS hace spawn+attach y devuelve el id.
- Ajustes: URL del gateway + token (DataStore).
Conectar
-
En la máquina del daemon, levanta el gateway apuntando al socket del
daemon:
# opcional: token
export SHIPOTE_GATEWAY_TOKEN=... # si quieres auth
export SHIPOTE_GATEWAY_LISTEN=0.0.0.0:7378 # para alcanzarlo desde el móvil
cargo run -p shuma-gateway
-
En la app → ⚙ ajustes → URL:
- Emulador de Android:
http://10.0.2.2:7378 (loopback del host).
- Dispositivo real:
http://<ip-del-host>:7378 (misma LAN o túnel).
- Token: el mismo de
SHIPOTE_GATEWAY_TOKEN, o vacío si no se usó.
Notas de la v0.1
- Sin scrollback propio en el cliente: el daemon reenvía su scrollback al
adjuntarse y el emulador reconstruye la pantalla visible.
- Texto plano (
usesCleartextTraffic) para LAN/túnel; para internet, poner
el gateway detrás de TLS y usar https://.
- Transporte: OkHttp (WS + HTTP); JSON con
org.json. Sin postcard/Noise
directos (eso lo cubre el gateway).