AI-CLI-tools registreren op een server
Gebruik je Claude Code, Cursor CLI of een andere AI-commandlinetool op een externe Linux-server, dan kan de desktop-app op je eigen computer die sessies niet zien. Installeer daarvoor de headless agent op de server. Die registreert dezelfde commandlinetools als de desktop-app (Claude Code, Cursor CLI, Codex CLI, Gemini CLI, OpenCode, Aider en Ollama), elke lopende sessie apart, met het project en of de tool aan het werk is of op je wacht.
Installeren
curl -fsSL https://app.timeuno.io/install-agent.sh | bash
Het script:
- downloadt het programma voor je processor (x86_64 of arm64) naar
~/.local/share/timeuno/bin/en controleert de checksum. Alsminisigngeïnstalleerd is, controleert het ook de handtekening van de release; - maakt een link
timeuno-agentin/usr/local/bin(of in~/.local/binals het daar niet kan schrijven); - voegt een shell-hook toe voor bash, zsh en fish die de naam noteert van elke opdracht die je uitvoert (meer daarover hieronder);
- richt een systemd-gebruikersservice in en zet lingering aan, zodat de agent blijft draaien nadat je uitlogt.
Zet TIMEUNO_NO_SERVICE=1 om de systemd-service over te slaan, en TIMEUNO_NO_SHELL_HOOK=1 om de shell-hook over te slaan. Zet TIMEUNO_REF op een releasetag (zoals agent-v0.2.0) om een specifieke versie te installeren.
Koppelen
timeuno-agent pair
Dit toont een link. Open die in de browser op je eigen computer, niet op de server, en keur de koppeling goed. Zie Een apparaat koppelen. Daarna:
systemctl --user start timeuno-agent
Wat je apparaat verlaat
De agent verstuurt dezelfde gegevens als de desktop-app: wanneer elke AI-sessie begint en eindigt, of de AI aan het werk is of wacht, het model, het aantal tokens en de kosten, en de projectmap. Je prompts verlaten nooit je apparaat, in dit geval de server. Dat geldt ook voor de antwoorden van de AI, de uitvoer van opdrachten en je code.
Zodat de regels op je urenstaat zeggen waaraan je werkte, verstuurt hij ook deze taakdetails:
- de titel die de AI-tool zelf aan de sessie gaf;
- de onderwerpen van de commits die de AI maakte;
- de paden van de bestanden die de AI bewerkte, relatief aan de projectmap;
- het soort taak (fix, bouwen, testen, documentatie…) en het gebied waar het om ging (facturatie, inloggen…), op je apparaat gekozen uit een vaste lijst, nooit in jouw woorden;
- via de shell-hook de naam van elke opdracht die je uitvoert, bij een paar tools zoals git, npm, make of docker ook het eerste woord erna (
git push,docker compose), nooit de rest van de regel, en de map waarin je die uitvoert, met je thuismap als~.
Alles in een titel of commitonderwerp dat op een sleutel of token lijkt, wordt eerst vervangen door [redacted]. Meer daarover in AI-tools.
Wil je geen taakdetails meer versturen, zet dan Instellingen → Jouw gegevens → Taakdetails delen uit. De al opgeslagen details worden verwijderd. Bij zijn volgende check-in stopt de agent met versturen en maakt hij het bestand van de shell-hook leeg, met de opdrachten die hij nog niet had verstuurd. De tijdregistratie loopt gewoon door.
Shell-hook
Voor elke shell die op de server staat (bash, zsh, fish) voegt het installatiescript de hook toe: één regel aan het eind van ~/.bashrc of ~/.zshrc die eindigt op # timeuno-shell-hook, en voor fish een bestand in ~/.config/fish/conf.d/. Vóór elke opdracht schrijft de hook de naam en map ervan naar een bestand dat de agent verstuurt. Alleen de naam van de opdracht blijft over, bij een paar tools zoals git, npm, make of docker ook het eerste woord erna, nooit de rest van de regel: git commit -m "login repareren" wordt git commit, en vim notities.txt wordt vim. Hij noteert alleen namen die bij een echte opdracht horen, dus een verkeerd getypte regel of een geplakt geheim blijft niet bewaard. Zolang de agent niet gekoppeld is of je account geen taakdetails deelt, schrijft de hook niets.
- Wil je hem bij de installatie overslaan, zet dan
TIMEUNO_NO_SHELL_HOOK=1. - Wil je hem later toevoegen, voer dan
timeuno-agent shell-hook installuit. - Wil je hem verwijderen, voer dan
timeuno-agent shell-hook removeuit. Dat verwijdert ook de opdrachten die hij nog niet had verstuurd. timeuno-agent statustoont voor bash, zsh en fish of de hook geïnstalleerd is, wanneer hij voor het laatst een opdracht noteerde en hoe groot zijn bestand is.
Commando’s
| Commando | Wat het doet |
|---|---|
timeuno-agent pair | Koppelt de agent aan je account. |
timeuno-agent status | Toont de versie, of updates automatisch gaan, welke AI-tools de agent heeft gevonden en de staat van de shell-hook per shell. |
timeuno-agent shell-hook install | Voegt de shell-hook toe (het installatiescript doet dit voor je). |
timeuno-agent shell-hook remove | Verwijdert de shell-hook. |
timeuno-agent update | Installeert nu meteen de nieuwste versie. |
timeuno-agent run | Draait de agent op de voorgrond (de service doet dit voor je). |
timeuno-agent version | Toont de versie. |
Updates
Als de agent als systemd-service draait, zoekt hij een paar minuten na het opstarten naar een nieuwe versie en daarna elke 6 uur. Hij controleert de handtekening, vervangt zichzelf en herstart.
- Voer na
timeuno-agent updatehet commandosystemctl --user restart timeuno-agentuit. - Automatische updates zet je uit met
"auto_update": falsein~/.config/timeuno/config.json, of doorTIMEUNO_NO_AUTO_UPDATE=1in de omgeving van de service te zetten.
Agents die met versie 0.1.0 zijn geïnstalleerd, kunnen zichzelf niet bijwerken. Voer het installatiecommando dan één keer opnieuw uit.
Als systemctl mislukt
Zegt systemctl --user Failed to connect to bus: Permission denied, zet dan XDG_RUNTIME_DIR=/run/user/$(id -u) in die shell en probeer het opnieuw.