In den meisten Agenten-Infrastrukturen steckt eine stille Annahme: dass Agenten strukturierte Schnittstellen brauchen. APIs, Schemas, Tool-Definitionen, Protokolle wie MCP oder A2A. Die Lücke zwischen einem LLM und einem System, so die Annahme, muss etwas Maschinenlesbares überbrücken.
clive geht von einer anderen Annahme aus. LLMs können ausgezeichnet Text lesen und darüber nachdenken. Das Terminal produziert Text. Also haben wir einem Agenten ein Terminal und eine Tastatur gegeben.
Die Kernschleife
clive lässt ein LLM in einer tmux-Session laufen. Die Schleife ist einfach:
1. agent reads the current terminal screen
2. agent decides what to type
3. agent sends keystrokes to the pane
4. tool executes, produces output
5. repeat
Keine Schemas. Keine Tool-Definitionen. Keine strukturierten Aufrufe. Der Agent beobachtet den Zustand, handelt, beobachtet das Ergebnis, handelt wieder. Genauso geht ein Entwickler vor, der sich per SSH auf einem fremden Rechner anmeldet und sich durch ein Problem arbeitet.
Das funktioniert, weil tmux Beobachtung und Handlung trennt. capture-pane liefert einen sauber gerenderten Schnappschuss des Bildschirms: die Wahrnehmung des Agenten. send-keys tippt in das Pane: seine Motorik. Der Shell-Zustand zwischen den Zügen ist sein Arbeitsgedächtnis.
Die zwei Kanäle
Eine Designentscheidung ist wichtig genug, um sie ausdrücklich zu nennen: Große Inhalte gehen nie durch das Terminal.
Das Terminal ist für die Interaktion da: Befehle, kurze Ausgaben, Navigation. Dateien sind für Inhalte da, also für alles, was größer ist als ein Bildschirm. Muss der Agent eine große Datei verarbeiten, liest der Session-Manager sie direkt von der Festplatte und fügt sie in den LLM-Kontext ein. Das Terminal bekommt sie nie zu sehen. Damit entfallen Scrollback-Probleme, ANSI-Rauschen und verschwendete Token. Shell-Befehle gehen an das Pane. Datei-Lesevorgänge umgehen es vollständig. Der Session-Manager wählt den Weg anhand des Befehlstyps.
Die CLI als universelle Schnittstelle
Im Grunde geht es um Schnittstellendesign.
Jedes CLI-Tool, das es gibt (lynx, mutt, curl, whisper, yt-dlp, taskwarrior, sqlite3), wird für den Agenten sofort nutzbar. Sie müssen keinen MCP-Server implementieren, keine API kapseln und kein Schema definieren. Der Agent liest die Ausgabe, denkt darüber nach und reagiert, genau wie ein Mensch.
Ändert sich das Tool, passt sich der Agent an. Es gibt keine fragile Abbildung zwischen Tool-Ausgabe und strukturiertem Schema, die bricht, sobald sich das Format ändert. Der Agent liest, was dasteht, und kommt selbst dahinter.
Das gilt auch über Rechnergrenzen hinweg. Aus Sicht des Agenten ist eine SSH-Verbindung nicht von einer lokalen Shell zu unterscheiden. Eine eingeschränkte Shell auf einem entfernten Server, die nur die von Ihnen ausdrücklich erlaubten Befehle freigibt, wird zu einem Dienst, den der Agent nutzen kann. Die SSH-Grenze liefert Authentifizierung, Autorisierung und Nachvollziehbarkeit über die bestehende Infrastruktur. Ein neues Protokoll ist nicht nötig.
Dieselbe Logik reicht bis zur Kommunikation zwischen Agenten. Jeder Agent, der Text auf einem Terminal ausgibt, kann über dieselbe Schleife von einem anderen Agenten gesteuert werden oder mit ihm kommunizieren. Die CLI wird zur Leitung zwischen den Agenten.
Was das ersetzt
clive ersetzt weder MCP noch REST-APIs. Für programmatische, deterministische Tool-Aufrufe mit hohem Durchsatz bleiben strukturierte Schnittstellen die richtige Wahl.
clive ersetzt die Notwendigkeit, solche Schnittstellen für Tools zu implementieren, die bereits eine CLI haben. Diese Kategorie ist groß: die meisten Entwickler-Tools, die meisten Systemprogramme, die meisten Werkzeuge zur Datenverarbeitung, die meisten Kommunikations-Clients. Was in einem Terminal läuft, kann clive steuern.
Das Terminal war die ursprüngliche Schnittstelle zum Computer: So bedienten Menschen Rechner, bevor es GUIs gab. Wie sich zeigt, passt dieselbe Schnittstelle, über SSH betrieben und als Textstrom beobachtbar, auch ganz selbstverständlich zu Agenten.
Wir haben clive gebaut, um diese Hypothese zu testen. Der Code liegt auf github.com/ikangai/clive.
Aus dem Englischen übersetzt: zum Originalbeitrag