Zurück zur Übersicht

Blog

Die Architektur hinter Tactic Remote: Aufbau einer verteilten Coding-Plattform

Wie wir ein System entworfen haben, das deinen Mac als einzige Wahrheitsquelle behält, während sich jede Interaktion auf deinem iPhone sofortig anfühlt.

Veröffentlicht Tags: Entwicklung / Architektur / Tiefenanalyse
Blog

Weitere Produkt- und Engineering-Updates aus dieser Kategorie.

Kategorie öffnen

Eine Remote-Entwicklungsplattform zu bauen klingt auf dem Papier unkompliziert: Code auf einer Maschine ausführen, auf einer anderen anzeigen. In der Praxis sind die Engineering-Herausforderungen tiefgreifend. Jede Millisekunde Latenz untergräbt das Vertrauen. Jede unterbrochene Verbindung riskiert Arbeitsverlust. Jede Sicherheitsabkürzung lädt zur Katastrophe ein.

Dieser Artikel führt durch die Architektur von Tactic Remote — die Entscheidungen, die wir getroffen haben, die Kompromisse, die wir akzeptiert haben, und die Prinzipien, die unsere technische Richtung leiten.

Das Kernproblem

Entwickler verlassen sich zunehmend auf KI-gestützte Coding-Tools wie Claude Code, aber diese Tools sind an Desktop-Terminals gebunden. Du kannst dich nicht vom Schreibtisch entfernen, ohne die Übersicht zu verlieren, was dein KI-Assistent tut. Tactic Remote existiert, um das zu lösen: Dein Mac bleibt der Ausführungsmotor, während dein iPhone zu einer erstklassigen Steuerungsoberfläche wird.

Die Herausforderung besteht darin, dass sich dies nahtlos anfühlt und nicht wie eine umständliche Remote-Desktop-Sitzung.

Mehrschichtige Architektur

Tactic Remote ist in vier unterschiedlichen Schichten aufgebaut, jede mit einer klaren Verantwortungsgrenze:

Schicht 1: Der Ausführungsmotor (Mac)

Am Fundament sitzt dein Mac, der Claude Code in einer tmux-Sitzung ausführt. Wir haben tmux bewusst gewählt — es bietet Prozesspersistenz, Sitzungsmultiplexing und eine gut verstandene Schnittstelle für programmatische Terminal-Steuerung. Die Mac-Begleit-App verwaltet den tmux-Lebenszyklus, überwacht die Sitzungsgesundheit und stellt eine leichtgewichtige HTTP-API für übergeordnete Verbraucher bereit.

Zentrale Designentscheidungen auf dieser Schicht:

  • Prozessisolation: Jede Claude Code-Sitzung läuft in ihrem eigenen tmux-Fenster und verhindert Kreuzkontamination zwischen Projekten.
  • Zustandspersistenz: tmux-Sitzungen überleben App-Neustarts, Netzwerkausfälle und sogar System-Schlafzyklen.
  • Minimaler Fußabdruck: Die Begleit-App verursacht im Leerlauf vernachlässigbaren CPU- und Speicher-Overhead.

Schicht 2: Die Transportschicht

Zwischen deinem Mac und iPhone befindet sich der Transport — entweder eine direkte lokale Netzwerkverbindung oder ein Cloudflare Tunnel für Fernzugriff.

Der lokale Modus nutzt mDNS/Bonjour für die Geräteerkennung und direktes HTTP für den Datentransfer. Dies bietet Umlaufzeiten unter 10ms in einem guten Netzwerk, wodurch sich Terminal-Streaming sofortig anfühlt.

Der Cloudflare Tunnel-Modus leitet den Datenverkehr über Cloudflares Edge-Netzwerk. Dies fügt Latenz hinzu (typischerweise 30-80ms), ermöglicht aber den Zugang von überall — einem Café, einem Pendlerzug oder von der anderen Seite der Welt. Wir nutzen den cloudflared-Daemon von Cloudflare auf der Mac-Seite, der eine ausschließlich ausgehende Verbindung herstellt, was bedeutet, dass keine Ports in deiner Firewall geöffnet werden müssen.

┌─────────────┐         ┌──────────────────┐         ┌─────────────┐
│   iPhone    │◄───────►│ Transportschicht  │◄───────►│     Mac     │
│ (Steuerung) │   HTTP  │  Local / CF Edge  │   HTTP  │(Ausführung) │
└─────────────┘         └──────────────────┘         └─────────────┘

Schicht 3: Der Sitzungsmanager

Der Sitzungsmanager ist das Gehirn der Operation. Er läuft auf dem Mac, pflegt ein Register aktiver tmux-Sitzungen, verfolgt deren Status (inaktiv, laufend, auf Eingabe wartend) und übernimmt die komplexe Choreografie der Wiederverbindung.

Wenn sich dein iPhone nach einer Netzwerkunterbrechung wieder verbindet, muss der Sitzungsmanager mehrere Fragen in Millisekunden beantworten:

  1. Welche Sitzungen waren vor der Unterbrechung aktiv?
  2. Hat sich während der Lücke Terminalausgabe angesammelt?
  3. Warten Sitzungen auf die Benutzergenehmigung für sensible Operationen?
  4. Was ist der aktuelle Prozessstatus jeder Claude Code-Instanz?

Wir lösen dies durch eine Kombination aus Event Sourcing (Aufzeichnung von Zustandsübergängen als unveränderliche Ereignisse) und Snapshot-Caching (periodisches Erfassen des Terminal-Pufferzustands für schnelle Wiederherstellung).

Schicht 4: Die mobile Schnittstelle

Die iPhone-App ist absichtlich kein Terminal-Emulator. Wir haben früh entschieden, dass ein vollständiges Terminal auf einem Telefonbildschirm eine schreckliche Benutzererfahrung schaffen würde. Stattdessen bietet die mobile Schicht:

  • Konversationsansicht: Claudes Überlegungen und Ausgaben in lesbarem Format sehen.
  • Terminal-Kurzansicht: Schneller Zugriff auf die rohe Terminalausgabe bei Bedarf.
  • Genehmigungskontrollen: Ein-Tipp-Genehmigung/-Ablehnung für Operationen, die menschliche Bestätigung erfordern.
  • Benachrichtigungsbrücke: Push-Benachrichtigungen für Aufgabenabschlüsse und Genehmigungsanfragen.

Resilienzmuster

Reale Netzwerke sind unzuverlässig. Telefone verlieren im Aufzug das Signal. Wi-Fi bricht ab, wenn du zwischen Räumen gehst. Unsere Resilienzstrategie basiert auf drei Prinzipien:

Disconnection als Normalfall annehmen. Jede Komponente ist so gestaltet, dass sie während einer Netzwerkpartition unabhängig funktioniert. Der Mac führt weiter aus. Das iPhone cached den letzten bekannten Zustand. Die Wiederverbindung löst ein Zustandsabgleichsprotokoll aus, keinen kompletten Neustart.

Niemals Arbeit verlieren. Terminalausgabe wird auf der Mac-Seite mit konfigurierbarer Aufbewahrung gepuffert. Selbst wenn dein iPhone eine Stunde offline ist, zeigt die Wiederverbindung alles, was passiert ist.

Sichtbar scheitern. Wenn etwas schiefgeht, sieht der Benutzer eine ehrliche Fehlermeldung, keinen Spinner, der sich nie auflöst. Wir haben stark in Verbindungszustandsindikatoren investiert, die die Realität innerhalb von Sekunden widerspiegeln.

Sicherheit durch Design

Die Remote-Ausführung von KI-generiertem Code wirft ernsthafte Sicherheitsfragen auf. Unser Sicherheitsmodell wird ausführlich in unserer Sicherheitsmodell-Dokumentation behandelt, aber die architektonischen Highlights umfassen:

  • Zero-Trust-Transport: Alle Kommunikation ist verschlüsselt, ob lokal (TLS) oder getunnelt (Cloudflares Verschlüsselungsschicht).
  • Genehmigungsschranken: Sensible Operationen (Dateischreibvorgänge, Shell-Befehle, Netzwerkzugriff) erfordern explizite mobile Genehmigung vor der Ausführung.
  • Keine Cloud-Abhängigkeit: Dein Code verlässt niemals deinen Mac. Tactic Remote ist eine Steuerungsebene, keine Datenebene.

Was kommt als Nächstes

Architektur ist nie fertig. Wir arbeiten aktiv an Multi-Mac-Unterstützung (ein iPhone mit mehreren Entwicklungsmaschinen verbinden), kollaborativen Sitzungen (mehrere Teammitglieder überwachen denselben Claude Code-Lauf) und tieferen IDE-Integrationen. Jede davon erfordert die Erweiterung der Architektur, ohne die aufgebaute Zuverlässigkeit zu gefährden.

Wenn du verteilte Entwicklerwerkzeuge baust, hoffen wir, dass diese Übersicht nützlich ist. Und wenn du diese Architektur aus erster Hand erleben möchtest, starte hier.

Tactic Remote ausprobieren

Coding-Agenten vom Smartphone aus steuern

Verbinde dich mit Claude Code, Codex und anderen Agenten auf deinem Mac-, Windows- oder Linux-Rechner. Prüfe den Fortschritt und sende die nächste Anweisung vom iPhone oder iPad.