Selbst gehosteter Dienst
Ark0N/Codeman avatar
Ark0N/Codeman

Codeman von Ark0N: Leitstelle für sieben Coding-CLIs in tmux-Sitzungen

Selbstgehostete Missionssteuerung für KI-Coding-Agenten: Führen Sie Claude Code, OpenCode, Codex und Gemini CLI rund um die Uhr von jedem Gerät aus aus und beobachten Sie jeden Subagenten live.

755 Sterne107 ForksTypeScriptMIT

Auf einen Blick

Was ist das?
Codeman startet Claude Code, OpenCode, Codex, Antigravity, Gemini, Pi oder Grok in beständigen tmux-Sitzungen und streamt sie in den Browser. Wir sehen uns Installer, Erreichbarkeit, lokales Echo, Respawn-Controller und die Grenzen des Mehrbenutzerbetriebs an.
Für wen ist es gedacht?
Geeignet ist Codeman für Einzelpersonen, die Claude Code, OpenCode oder Codex über viele Stunden unbeaufsichtigt arbeiten lassen und von unterwegs auf dasselbe Terminal zugreifen wollen; der Einzeiler von getcodeman.com und codeman web bringen eine Instanz auf localhost:3000. Ungeeignet ist der Mehrbenutzerbetrieb dort, wo echte Trennung gebraucht wird, weil die README selbst davor warnt, und ungeeignet ist Windows ohne WSL, da tmux Pflicht ist.
Darf ich es kommerziell nutzen?
Ja. MIT ist eine freizügige Lizenz: Sie dürfen darauf aufbauende Software nutzen, verändern und verkaufen, solange Sie die Urheberrechts- und Lizenzhinweise beibehalten.
Wird es noch gepflegt?
Ja. Die letzten Commits kamen vor 4 Tagen.
In welcher Sprache ist es geschrieben?
Hauptsächlich TypeScript, laut der Sprachstatistik von GitHub.

Die Antworten beruhen auf den GitHub-Daten des Projekts (zuletzt abgeglichen am 14. September 2026) und auf unserer Analyse. Sie sind keine Rechtsberatung.

TIEFGEHENDE OPEN-SOURCE-ANALYSE

Sieben CLIs in tmux: Was Codeman tatsächlich startet

Codeman nennt sich eine selbst gehostete Leitstelle für KI-Coding-Agenten. Laut README startet das Werkzeug Claude Code, OpenCode, Codex, Antigravity, Gemini, Pi oder Grok in beständigen tmux-Sitzungen, überträgt das echte Terminal in den Browser und hält die Agenten in Gang, wenn niemand mehr hinsieht: Es fragt bei Leerlauf erneut an, setzt fort, wenn ein Nutzungslimit zurückgesetzt wird, führt geplante Aufträge aus und zeigt Hintergrundagenten in Echtzeit.

Voraussetzung ist mindestens eine dieser CLIs. Der Installer erkennt, welche davon vorhanden sind; findet er keine, bietet er Claude Code oder OpenCode an. Ein Hinweis im README betrifft Gemini CLI: Seit der Umstellung durch Google sei sie nur noch für Unternehmenskonten verfügbar, und Antigravity gelte als ihr Nachfolger.

Das Projekt ist in TypeScript geschrieben, nutzt Fastify als Serverframework und steht unter MIT. Das Material verzeichnet 725 Sterne, 102 Forks und 9 offene Issues; der letzte Push datiert auf den 27. August 2026, derselbe Tag wie codeman@1.23.2.

Was der Installer von getcodeman.com nach ~/.codeman/app holt

Der Einstieg besteht aus einem Einzeiler:

curl -fsSL https://getcodeman.com/install | bash

Danach folgt:

codeman web

Der Installer legt laut README Node.js, tmux und eine Build-Werkzeugkette nach, falls etwas fehlt; node-pty bringt für Linux keine fertigen Binaries mit und wird deshalb aus dem Quelltext übersetzt. Anschließend klont er Codeman nach ~/.codeman/app und baut es. Die Oberfläche ist danach unter http://localhost:3000 erreichbar.

Drei Verhaltensweisen verdienen Aufmerksamkeit. Vor jeder Systemänderung wird gefragt. Am Ende wählt man zwischen direktem Start, Einrichtung als Hintergrunddienst über systemd oder launchd und gar keinem Start. Wer denselben Einzeiler erneut aufruft, aktualisiert eine bestehende Installation; lokale Änderungen werden zur Seite gelegt statt verworfen, und ein laufender Dienst wird neu gestartet und geprüft. Ohne angeschlossenes Terminal brechen ändernde Schritte ab, es sei denn, CODEMAN_NONINTERACTIVE=1 ist gesetzt.

Erreichbarkeit: tailscale serve, 0.0.0.0 mit CODEMAN_PASSWORD oder nur 127.0.0.1

Wie das Dashboard erreichbar ist, entscheidet der Installer in drei Varianten. Tailscale bindet auf Loopback und stellt tailscale serve davor, womit eine Adresse der Form https://machine.tailnet.ts.net mit echtem Zertifikat entsteht und das Tailnet als Anmeldung dient. Die zweite Variante bindet auf 0.0.0.0, also für alle Geräte im Netz, und empfiehlt nachdrücklich ein Passwort. Die dritte bleibt bei 127.0.0.1.

Wer auf einen Netzwerk-Bind verzichtet und trotzdem kein Passwort setzt, muss das ausdrücklich bestätigen und bekommt eine deutliche Warnung. Ein von Hand gestartetes codeman web fällt auf Loopback zurück.

Für den Dauerbetrieb gibt es codeman web -d mit Protokoll unter ~/.codeman/web.log sowie codeman service install für eine systemd-User-Unit oder einen LaunchAgent. Der Dienst schreibt den aktuellen PATH in die Unit, weil launchd sonst nur /usr/bin:/bin:/usr/sbin:/sbin weitergibt und ein über Homebrew installiertes node unsichtbar bliebe.

xterm-zerolag-input: Lokales Echo gegen 200 bis 300 Millisekunden Umlaufzeit

Tastendrücke über eine entfernte Verbindung brauchen laut README 200 bis 300 Millisekunden bis zur Anzeige. Dagegen setzt Codeman ein Overlay mit lokalem Echo: Ein DOM-Overlay in xterm.js stellt die Eingabe sofort dar, während die Weiterleitung im Hintergrund entprellte Pakete an das PTY schickt. Shell-Funktionen wie Tab-Vervollständigung und Verlaufssuche bleiben dabei erhalten.

Das Overlay übersteht Verbindungsabbrüche, weil noch nicht gesendete Eingaben in localStorage liegen. Die Implementierung ist als eigenes npm-Paket xterm-zerolag-input ausgekoppelt.

Zum selben Themenkreis gehört die mobile Oberfläche: ein touch-optimiertes Terminal, Wisch-Navigation und ein QR-Login, dessen Einmal-Token laut README alle 60 Sekunden wechselt. Das README begründet diese Rotation mit einer Studie der USENIX Security 2025 zu Schwachstellen in QR-Anmeldungen.

Respawn-Controller, Orchestrator und state.json für lange Läufe

Für unbeaufsichtigte Läufe existiert der Respawn-Controller. Er erkennt inaktive Agenten, sendet Fortsetzungsaufforderungen, arbeitet Befehle zur Kontextverwaltung ab und führt Sitzungen weiter; das README nennt als Ziel mehr als 24 Stunden ohne Aufsicht. Vorgesehen sind mehrschichtige Leerlauferkennung, ein Schutz gegen hektisches Neustarten und eine Bewertung des Zustands. Die Fortsetzung bei Abonnement-Limits ist optional und liest die Rücksetzzeit aus. Fünf Voreinstellungen unterscheiden sich in Leerlauf- und Laufzeitwerten.

Der Orchestrator zerlegt ein Ziel in Phasen, hält zur Freigabe an, prüft jede Phase und kann bei Fehlern neu planen. Sein Zustand liegt in state.json und übersteht Neustarts.

Wie hoch der Ressourcenbedarf solcher Läufe ausfällt, beziffert das README nicht; dazu fehlen Angaben in der Dokumentation.

Subagenten-Fenster, TeamWatcher und drei Ebenen Verschachtelung

Die Ansicht der Subagenten ist der Teil, den die Kurzbeschreibung hervorhebt. Jeder Subagent erscheint laut README in einem ziehbaren schwebenden Fenster mit Aktivitätsprotokoll und Verbindungslinie zur übergeordneten Sitzung. Statusabzeichen zeigen aktiv, im Leerlauf oder abgeschlossen; Modellnamen sind farbig codiert. Verschachtelte Hierarchien werden bis zu drei Ebenen unterstützt.

Bei mehreren Agenten verfolgt ein Ausführungsfenster Phasen, Token je Agent und das gerade benutzte Werkzeug. Teams aus dem experimentellen Agenten-Feature von Claude Code erkennt ein TeamWatcher. Die Leerlauferkennung arbeitet team-bewusst, damit der Respawn-Controller nicht dazwischenfunkt, während Teamkollegen noch arbeiten.

Wie verlässlich die Erkennung bei unbekannten Ausgaben arbeitet, dazu macht das README keine Angabe.

Loopback, scrypt-Hashes, fehlende Nutzertrennung und tmux als schlichterer Weg

Zur Sicherheit führt das README mehrere Punkte auf. Standardmäßig wird auf Loopback gebunden, HTTP-Basisauthentifizierung stellt ein undurchsichtiges Sitzungs-Cookie aus, und die Ratenbegrenzung greift je IP. Eine Allowlist für den Host-Header blockt DNS-Rebinding, hinzu kommen CSRF-Schutz, Prüfung des WebSocket-Origin und Escaping von Agent-Ausgaben gegen XSS. Telemetrie gibt es laut README keine.

Die Grenze sitzt beim Mehrbenutzerbetrieb. Er ist optional, bringt eigene Arbeitsbereiche und scrypt-gehashte Passwörter mit, warnt aber ausdrücklich, dass Nutzer gegeneinander nicht isoliert werden. Wer Trennung braucht, soll laut README auf Docker-Sitzungen oder SSH-Sitzungen ausweichen; unabhängige Prüfungen dieses Designs sind nicht verzeichnet.

Wer lediglich beständige Terminals sucht, erreicht mit tmux und SSH dasselbe Ziel ohne Dashboard, verliert dann aber Respawn, Orchestrator und die Subagenten-Ansicht.

Redaktionelles Fazit

Geeignet ist Codeman für Einzelpersonen, die Claude Code, OpenCode oder Codex über viele Stunden unbeaufsichtigt arbeiten lassen und von unterwegs auf dasselbe Terminal zugreifen wollen; der Einzeiler von getcodeman.com und codeman web bringen eine Instanz auf localhost:3000. Ungeeignet ist der Mehrbenutzerbetrieb dort, wo echte Trennung gebraucht wird, weil die README selbst davor warnt, und ungeeignet ist Windows ohne WSL, da tmux Pflicht ist. Zuerst prüfen: Erkennt der Installer die vorhandene CLI, bleibt die Sitzung nach codeman web --stop in tmux erhalten, und muss die Instanz tatsächlich über 0.0.0.0 erreichbar sein?

Offizielle Quellen

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Community-Notizen

Community-Notizen