KI-CLI-Tools auf Remote-Servern erfassen
Wenn du Claude Code, Cursor CLI oder ein anderes KI-Kommandozeilentool auf einem entfernten Linux-Server nutzt, kann die Desktop-App auf deinem eigenen Computer diese Sitzungen nicht sehen. Installiere dafür den Headless-Agent auf dem Server. Er erfasst dieselben Kommandozeilentools wie die Desktop-App (Claude Code, Cursor CLI, Codex CLI, Gemini CLI, OpenCode, Aider und Ollama), jede laufende Sitzung einzeln, mit ihrem Projekt und ob sie gerade arbeitet oder auf dich wartet.
Installieren
curl -fsSL https://app.timeuno.io/install-agent.sh | bash
Das Skript:
- lädt das Binary für deine CPU (x86_64 oder arm64) nach
~/.local/share/timeuno/bin/herunter und prüft seine Prüfsumme. Istminisigninstalliert, prüft es zusätzlich die Signatur des Releases; - verlinkt es als
timeuno-agentin/usr/local/bin(oder~/.local/bin, falls es dort nicht schreiben darf); - richtet für bash, zsh und fish einen Shell-Hook ein, der den Namen jedes Befehls festhält, den du ausführst (mehr dazu unten);
- richtet einen systemd-Benutzerdienst ein und aktiviert Lingering, damit der Agent weiterläuft, nachdem du dich abgemeldet hast.
Setze TIMEUNO_NO_SERVICE=1, um den systemd-Dienst auszulassen, und TIMEUNO_NO_SHELL_HOOK=1, um den Shell-Hook auszulassen. Setze TIMEUNO_REF auf ein Release-Tag (etwa agent-v0.2.0), um eine bestimmte Version zu installieren.
Verbinden
timeuno-agent pair
Der Befehl gibt einen Link aus. Öffne ihn im Browser auf deinem eigenen Computer, nicht auf dem Server, und bestätige die Verbindung. Siehe Gerät verbinden. Danach:
systemctl --user start timeuno-agent
Was dein Gerät verlässt
Der Agent sendet dieselben Daten wie die Desktop-App: wann jede KI-Sitzung beginnt und endet, ob sie arbeitet oder wartet, das Modell, Token-Anzahl und Kosten sowie den Projektordner. Deine Prompts verlassen nie dein Gerät, hier also den Server. Dasselbe gilt für die Antworten der KI, die Ausgaben von Befehlen und deinen Code.
Damit deine Stundenzettel-Zeilen sagen, woran du gearbeitet hast, sendet er außerdem diese Aufgabendetails:
- den Titel, den das KI-Tool selbst der Sitzung gegeben hat;
- die Betreffzeilen der Commits, die die KI erstellt hat;
- die Pfade der Dateien, die die KI bearbeitet hat, relativ zum Projektordner;
- die Art der Aufgabe (Fehlerbehebung, Entwicklung, Tests, Doku…) und den betroffenen Bereich (Abrechnung, Login…), auf deinem Gerät aus einer festen Liste gewählt, nie in deinen Worten;
- über den Shell-Hook den Namen jedes Befehls, den du ausführst, bei einigen Tools wie git, npm, make oder docker auch sein erstes Wort (
git push,docker compose), nie den Rest der Zeile, und den Ordner, in dem du ihn ausführst, wobei dein Home-Ordner als~erscheint.
Alles in einem Titel oder einer Commit-Betreffzeile, das wie ein Schlüssel oder Token aussieht, wird vorher durch [redacted] ersetzt. Mehr dazu unter KI-Tools.
Um keine Aufgabendetails mehr zu senden, schalte Einstellungen → Deine Daten → Aufgabendetails teilen aus. Die bereits gespeicherten Details werden gelöscht. Bei seiner nächsten Rückmeldung hört der Agent auf, sie zu senden, und leert die Datei des Shell-Hooks mit den Befehlen, die er noch nicht gesendet hat. Die Zeiterfassung läuft weiter.
Shell-Hook
Für jede Shell, die auf dem Server vorhanden ist (bash, zsh, fish), richtet der Installer den Hook ein: eine Zeile am Ende von ~/.bashrc bzw. ~/.zshrc, die auf # timeuno-shell-hook endet, und für fish eine Datei in ~/.config/fish/conf.d/. Vor jedem Befehl schreibt der Hook dessen Namen und Ordner in eine Datei, die der Agent sendet. Nur der Name des Befehls bleibt, bei einigen Tools wie git, npm, make oder docker auch sein erstes Wort, nie der Rest der Zeile: Aus git commit -m "Login reparieren" wird git commit, aus vim notizen.txt wird vim. Er hält nur Namen fest, hinter denen ein echter Befehl steht, eine vertippte Zeile oder ein eingefügtes Geheimnis bleibt also nicht hängen. Solange der Agent nicht verbunden ist oder dein Konto keine Aufgabendetails teilt, schreibt der Hook nichts.
- Um ihn bei der Installation auszulassen, setze
TIMEUNO_NO_SHELL_HOOK=1. - Um ihn später einzurichten, führe
timeuno-agent shell-hook installaus. - Um ihn zu entfernen, führe
timeuno-agent shell-hook removeaus. Dabei werden auch die Befehle gelöscht, die er noch nicht gesendet hat. timeuno-agent statuszeigt für bash, zsh und fish, ob der Hook installiert ist, wann er zuletzt einen Befehl festgehalten hat und wie groß seine Datei ist.
Befehle
| Befehl | Was er tut |
|---|---|
timeuno-agent pair | Verbindet den Agent mit deinem Konto. |
timeuno-agent status | Zeigt die Version, ob Updates automatisch laufen, welche KI-Tools er gefunden hat und den Zustand des Shell-Hooks je Shell. |
timeuno-agent shell-hook install | Richtet den Shell-Hook ein (das übernimmt sonst der Installer). |
timeuno-agent shell-hook remove | Entfernt den Shell-Hook. |
timeuno-agent update | Installiert sofort die neueste Version. |
timeuno-agent run | Führt den Agent im Vordergrund aus (das übernimmt sonst der Dienst). |
timeuno-agent version | Gibt die Version aus. |
Updates
Läuft der Agent als systemd-Dienst, sucht er ein paar Minuten nach dem Start und danach alle 6 Stunden nach einer neuen Version. Er prüft die Signatur, tauscht sich selbst aus und startet neu.
- Führe nach
timeuno-agent updateden Befehlsystemctl --user restart timeuno-agentaus. - Um automatische Updates abzuschalten, setze
"auto_update": falsein~/.config/timeuno/config.jsonoderTIMEUNO_NO_AUTO_UPDATE=1in der Umgebung des Dienstes.
Agents, die mit Version 0.1.0 installiert wurden, können sich nicht selbst aktualisieren. Führe den Installationsbefehl einmal erneut aus.
Wenn systemctl fehlschlägt
Meldet systemctl --user den Fehler Failed to connect to bus: Permission denied, setze in dieser Shell XDG_RUNTIME_DIR=/run/user/$(id -u) und versuche es erneut.