Registra CLI de IA en un servidor remoto
Si ejecutas Claude Code, Cursor CLI u otra herramienta de IA de línea de comandos en un servidor Linux remoto, la aplicación de escritorio de tu equipo no puede ver esas sesiones. Instala el agente headless en el servidor. Hace el seguimiento de las mismas herramientas de línea de comandos que la aplicación de escritorio (Claude Code, Cursor CLI, Codex CLI, Gemini CLI, OpenCode, Aider y Ollama), cada sesión en ejecución por separado, con su proyecto y si está trabajando o esperándote.
Instalar
curl -fsSL https://app.timeuno.io/install-agent.sh | bash
El script:
- descarga el binario para tu CPU (x86_64 o arm64) en
~/.local/share/timeuno/bin/y comprueba su checksum. Siminisignestá instalado, también comprueba la firma de la versión; - lo enlaza como
timeuno-agenten/usr/local/bin(o en~/.local/binsi no puede escribir ahí); - añade un hook de shell para bash, zsh y fish que anota el nombre de cada comando que ejecutas (más detalles abajo);
- configura un servicio de usuario de systemd y activa el lingering, para que el agente siga ejecutándose después de que cierres sesión.
Define TIMEUNO_NO_SERVICE=1 para omitir el servicio de systemd y TIMEUNO_NO_SHELL_HOOK=1 para omitir el hook de shell. Define TIMEUNO_REF con una etiqueta de versión (como agent-v0.2.0) para instalar una versión concreta.
Conectarlo
timeuno-agent pair
Esto muestra un enlace. Ábrelo en el navegador de tu propio equipo, no en el servidor, y aprueba la conexión. Consulta Conectar un dispositivo. Después:
systemctl --user start timeuno-agent
Qué sale de tu dispositivo
El agente envía los mismos datos que la aplicación de escritorio: cuándo empieza y termina cada sesión de IA, si está trabajando o esperando, el modelo, el número de tokens y el coste, y la carpeta del proyecto. Tus prompts nunca salen de tu dispositivo, que aquí es el servidor. Tampoco salen las respuestas de la IA, la salida de los comandos ni tu código.
Para que las líneas de tu hoja de horas digan en qué trabajaste, también envía estos detalles de las tareas:
- el título que la propia herramienta de IA le dio a la sesión;
- los asuntos de los commits que hizo la IA;
- las rutas de los archivos que editó la IA, relativas a la carpeta del proyecto;
- el tipo de tarea (corrección, desarrollo, pruebas, documentación…) y el área afectada (facturación, inicio de sesión…), elegidos en tu dispositivo de una lista fija, nunca con tus palabras;
- desde el hook de shell, el nombre de cada comando que ejecutas, más su primera palabra en algunas herramientas como git, npm, make o docker (
git push,docker compose), nunca el resto de la línea, y la carpeta donde lo ejecutas, con tu carpeta personal mostrada como~.
Todo lo que en un título o en el asunto de un commit parezca una clave o un token se sustituye antes por [redacted]. Más información en Herramientas de IA.
Para dejar de enviar los detalles de las tareas, desactiva Configuración → Tus datos → Compartir detalles de las tareas. Los detalles ya guardados se eliminan. En su siguiente conexión, el agente deja de enviarlos y vacía el archivo del hook de shell con los comandos que aún no había enviado. El registro del tiempo continúa.
Hook de shell
Para cada shell que haya en el servidor (bash, zsh, fish), el instalador añade el hook: una línea al final de ~/.bashrc o ~/.zshrc que termina en # timeuno-shell-hook, y para fish un archivo en ~/.config/fish/conf.d/. Antes de cada comando, el hook escribe su nombre y su carpeta en un archivo que el agente envía. Solo se guarda el nombre del comando, más su primera palabra en algunas herramientas como git, npm, make o docker, nunca el resto de la línea: git commit -m "arreglar login" queda como git commit, y vim notas.txt como vim. Solo anota nombres que corresponden a un comando real, así que una línea mal escrita o un secreto pegado no se guardan. Mientras el agente no esté conectado o tu cuenta no comparta los detalles de las tareas, el hook no escribe nada.
- Para omitirlo al instalar, define
TIMEUNO_NO_SHELL_HOOK=1. - Para añadirlo más tarde, ejecuta
timeuno-agent shell-hook install. - Para quitarlo, ejecuta
timeuno-agent shell-hook remove. También elimina los comandos que aún no había enviado. timeuno-agent statusmuestra, para bash, zsh y fish, si el hook está instalado, cuándo anotó el último comando y cuánto ocupa su archivo.
Comandos
| Comando | Qué hace |
|---|---|
timeuno-agent pair | Conecta el agente a tu cuenta. |
timeuno-agent status | Muestra la versión, si las actualizaciones son automáticas, qué herramientas de IA encontró y el estado del hook de shell en cada shell. |
timeuno-agent shell-hook install | Añade el hook de shell (el instalador lo hace por ti). |
timeuno-agent shell-hook remove | Quita el hook de shell. |
timeuno-agent update | Instala ahora la versión más reciente. |
timeuno-agent run | Ejecuta el agente en primer plano (el servicio lo hace por ti). |
timeuno-agent version | Muestra la versión. |
Actualizaciones
Cuando se ejecuta como servicio de systemd, el agente busca una versión nueva un par de minutos después de iniciarse y luego cada 6 horas. Verifica la firma, se reemplaza a sí mismo y se reinicia.
- Después de
timeuno-agent update, ejecutasystemctl --user restart timeuno-agent. - Para desactivar las actualizaciones automáticas, define
"auto_update": falseen~/.config/timeuno/config.json, o defineTIMEUNO_NO_AUTO_UPDATE=1en el entorno del servicio.
Los agentes instalados desde la versión 0.1.0 no pueden actualizarse solos. Ejecuta el comando de instalación otra vez, una sola vez.
Si systemctl falla
Si systemctl --user dice Failed to connect to bus: Permission denied, define XDG_RUNTIME_DIR=/run/user/$(id -u) en esa shell y vuelve a intentarlo.