Una línea. Cero puertos de entrada.
Tu línea, con un token de un solo uso, sale de la app. Abrila, entrá con Google y copiala.
Conectá tu primer servidor →Tu línea te espera en la app →
$ curl -fsSL https://onetty.app/install.sh | sh -s -- --token •••••• --owner ••••••
Entrá con Google para tener tu token
Requisitos
x86_64 o arm64 con glibc y systemd (Alpine y musl todavía no), curl y tar. Trae su propio Node.js (el oficial: al armar el paquete lo comparamos con el SHASUMS256 de nodejs.org) y un tmux estático fijado por hash. En tu servidor, el script verifica el paquete entero contra el sha256 que trae escrito (integridad, no firma). Se instala en tu home. Puede pedir sudo una vez, opcional, para que tus sesiones sigan corriendo cuando cerrás la sesión (linger); si no, corré vos sudo loginctl enable-linger $USER.
Si faltan curl o tar
sudo apt update && sudo apt install -y curl tar
sudo dnf install -y curl tar
sudo pacman -S --needed curl tar
sudo dnf install -y tar
sudo zypper install -y curl tar
RHEL, Rocky y Alma 8 o posterior.
Amazon Linux 2023 (trae curl). Amazon Linux 2 es demasiado viejo para el Node que trae el paquete.
Apple Silicon y Homebrew (para tmux). Corrélo en Terminal, con tu usuario y la sesión iniciada, no por SSH. Dejá la sesión iniciada y la Mac despierta. Las Mac con Intel no están soportadas.
Una vez, si no tenés Homebrew (ver brew.sh):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Dejá ese usuario con la sesión iniciada (la pantalla puede estar bloqueada) y que la Mac no se duerma mientras trabajan los agentes: Ajustes del Sistema › Energía › Evitar el reposo automático.
Tus agentes
El instalador no instala agentes de código. Se engancha a los que tenés: las sesiones nuevas de claude arrancan solas en tmux. Para Codex, Qwen y Grok, corré onetty wrap install. En las terminales que ya tenías abiertas, corré exec $SHELL (o abrí una nueva).
onetty wrap install # Codex, Qwen, Grok
exec $SHELL # las terminales que ya tenías abiertas
Leelo antes de correrlo
El script es sh común, se lee de punta a punta: baja el paquete de tu arquitectura, lo compara con el sha256 que trae escrito adentro (integridad, no una firma), lo desarma en tu home y corre el setup. Bajalo, leelo y después corrélo:
curl -fsSLO https://onetty.app/install.sh
less install.sh
sh install.sh --token … # tu línea, de la app
Qué escribe y dónde
Nada fuera de tu home. El token vale una vez, durante una hora.
~/.local/share/onetty/— las versiones, la actual, y su propio Node.js y tmux~/.local/bin/onetty— el comando~/.config/onetty/— claves, ajustes y las claves de avisos de cada dispositivo que los active- el servicio de usuario:
onettyyonetty-update.timeren Linux; los launch agentsapp.onetty.*en macOS - el bloque del wrapper en
~/.bashrc/~/.zshrc, y los hooks en los ajustes de tus agentes
Lo que queda escuchando
Solo un socket local para los hooks de tu agente (127.0.0.1, con token). Nada escucha en la red. Comprobalo:
# Linux
ss -tlnp | grep "pid=$(systemctl --user show -p MainPID --value onetty),"
# macOS
lsof -nP -iTCP -sTCP:LISTEN -a -p "$(launchctl list | awk '/app.onetty.serve$/{print $1}')"
Esperado: una línea en 127.0.0.1.
HTTPS de salida a onetty.app, hub.onetty.app y el host de los paquetes (storage.googleapis.com hoy). Nada de entrada.
Comprobar que anda
onetty agent status # ¿conectado al hub?
onetty setup --check # servicio, hooks, actualizaciones
onetty serve --host (modo directo) sí escucha fuera de localhost; no es lo que describe esta página.
Actualizaciones
Prendidas por defecto: busca cada 15 minutos y, si una actualización falla, vuelve atrás. Las actualizaciones todavía no están firmadas. Para apagarlas:
systemctl --user disable --now onetty-update.timer # Linux
launchctl bootout gui/$(id -u)/app.onetty.update # macOS
Desinstalar
onetty hooks uninstall
onetty wrap uninstall
systemctl --user disable --now onetty onetty-update.timer
rm -rf ~/.local/share/onetty ~/.local/bin/onetty ~/.config/onetty
onetty hooks uninstall
onetty wrap uninstall
launchctl bootout gui/$(id -u)/app.onetty.serve
launchctl bootout gui/$(id -u)/app.onetty.update
rm -f ~/Library/LaunchAgents/app.onetty.*.plist
rm -rf ~/.local/share/onetty ~/.local/bin/onetty ~/.config/onetty
Después quitá el servidor de tu equipo en la app.
Problemas comunes
- «falta curl» o «falta tar»
- Instalalos con el gestor de paquetes de tu distribución (los comandos están en Requisitos) y volvé a pegar tu línea.
- Las sesiones se mueren al cerrar la sesión
- Falta linger. Corré una vez
sudo loginctl enable-linger $USER. - La Mac se durmió
- Los agentes se frenan cuando la Mac duerme. Prendé Evitar el reposo automático y dejá tu usuario con la sesión iniciada.
- Detrás de un proxy
- El
curldel instalador respetaHTTPS_PROXY, pero el servicio del agente todavía no sale por un proxy: necesita HTTPS de salida directo ahub.onetty.app. Si necesitás un proxy, contanos. - El token venció o se usó dos veces
- Un token vale una vez, durante una hora. Abrí la app y pedí una línea nueva.
¿Se trabó? Contanos, con la salida de onetty setup --check.