Am Ende läuft Claude Code in einem Terminal-Pane, Codex in einem anderen, und nebenher laufen ein paar Chats und Agenten. Ein einziges Board in osFoundry zeigt sie alle. Wenn Claude Code bei "Do you want to make this edit?" anhält, wandert seine Karte innerhalb einer Sekunde in die Spalte Needs you (braucht dich). Ein Klick öffnet das Pane genau an diesem Prompt. Du antwortest, und die Karte geht zurück auf Running (läuft).
Wer macht was
| Claude Code | osFoundry-Desktop-App | |
|---|---|---|
| Login | Sein eigener Claude-Login, in seinem eigenen Prozess | Hält nichts davon. Bei einem Agenten, den sie selbst gestartet hat, entfernt sie einen geerbten ANTHROPIC_API_KEY, damit ein Lauf über das Abo nicht als API abgerechnet wird |
| Wo es läuft | Ein echtes PTY im Terminal-Bildschirm, in deinem Projektordner | Besitzt das PTY und hält eine emulierte Kopie des Bildschirms |
| Wer freigibt | Du, in Claude Codes eigenem Berechtigungs-Prompt | Antwortet nie für dich. Sie verschiebt nur die Karte und öffnet das Pane |
| Wie der Zustand bekannt wird | Claude Code zeichnet seine UI wie gewohnt | Liest den Bildschirm alle 700 ms gegen veröffentlichte Regeln und nimmt Hook-Meldungen an, wenn sie den Agenten gestartet hat |
| Wo die Daten bleiben | Deine Dateien, dein Terminal | Der Bildschirmtext bleibt im Speicher der App auf deinem Mac. Beim Beenden einer Agent-Session wird eine Zusammenfassung in deine Wissensdateien geschrieben |
Einrichtung
- Öffne den Terminal-Bildschirm (Seitenleiste Main → Terminal,
/terminal) und starte die Agenten wie gewohnt. Jedes Pane ist ein eigenes PTY.
~/code/shop-api (fix/checkout-retry) $ claude
~/code/shop-web $ codex
osFoundry erkennt Claude Code am Programm, das das Terminal belegt, oder an seinem Bildschirm, wenn du es über ein Wrapper-Skript gestartet hast. Konfigurieren musst du nichts.
- Öffne Sessions (Seitenleiste Main → Sessions,
/sessions). Jeder Chat, jeder einzelne Agent, jedes Team, jeder Loop und jede Terminal-Session ist eine Karte. Die Spalten sind Running, Needs you, Paused (pausiert), Idle (untätig), Done (erledigt) und Failed (fehlgeschlagen). Du kannst eine Karte nicht in eine Spalte ziehen, um ihren Zustand festzulegen; die Spalte ergibt sich aus dem, was die Runtime meldet.
- Klick auf Filter (die Schaltfläche heißt Filtered, sobald ein Filter aktiv ist) und setz den Haken bei Needs me only (nur, was mich braucht). Die Arten (Chat, Agent, Team, Loop, Terminal) und der Zeitraum bleiben, wie sie waren.
Zwei Karten bleiben übrig: ein Chat, der eine Frage gestellt hat, und das Claude-Code-Terminal in shop-api.
Ein Chat landet hier, wenn seine neueste Nachricht mit einer Frage endet, auf deren Antwort er noch wartet. Ein Terminal landet hier, wenn sein Zustand blocked ist, und genau das zeigt der nächste Schritt.
- Klick auf die Karte
shop-api. Der Terminal-Bildschirm öffnet sich auf diesem Pane, der Prompt steht noch da. Die Leiste links markiert Claude Code als "Needs you · shop-api" und Codex als "Working · shop-web".
Bei mehreren offenen Panes springt Mod+. (⌘. auf dem Mac) zum nächsten Agenten, der dich braucht. Die Statusleiste sagt es auch: "⌘. to jump to what needs you".
- Antworte im Pane wie überall sonst: Enter auf
1. Yes. Claude Code macht weiter, und beim nächsten Durchlauf zeigen Leiste und Board es wieder als Working / Running.
- Wenn eine Agent-Session fertig ist und in Idle steht, zieh ihre Karte auf Done. Die App fragt vorher nach.
Bestätigen schreibt die Zusammenfassung und beendet dann die Session. Schlägt die Zusammenfassung fehl, bleibt die Session, wo sie war. Eine laufende Session lässt sich gar nicht auf Done ablegen: "This session is still running. Pause it first, then end it." (erst pausieren, dann beenden).
Ein echter Durchlauf
Beispiel. Das Pane aus den Screenshots und was osFoundry aus jedem Bildschirm schließt. Die Urteile kommen aus der Regeldatei von Claude Code, claude.toml, die mit der App ausgeliefert und auch unter osfoundry.io/agent-detection/claude.toml bereitgestellt wird.
~/code/shop-api (fix/checkout-retry) $ claude
● Retry now reuses the first charge. Updating the payment code.
Edit file src/payments/charge.ts
41 - const intent = await stripe.paymentIntents.create(params)
41 + const intent = await stripe.paymentIntents.create(params, {
42 + idempotencyKey: `charge-${order.id}`,
43 + })
Do you want to make this edit to charge.ts?
❯ 1. Yes
2. Yes, allow all edits during this session
3. No, and tell Claude what to do differently
auf dem Bildschirm state ausgelöste Regel Karte
Spinner, "esc to interrupt" working esc to interrupt Running
der Prompt oben blocked Do you want to (proceed|continue|make this edit|create) Needs you
... du drückst Enter auf "1. Yes"
wieder Spinner working esc to interrupt Running
● Update(src/payments/charge.ts)
⎿ Updated src/payments/charge.ts with 3 additions and 1 removal
● Bash(npm test -- payments)
⎿ Tests: 42 passed, 42 total
● Fixed. A second press of Pay now reuses the first charge.
Die Regel blocked steht absichtlich über der Regel working. Solange ein Prompt offen ist, kann in der Fußzeile von Claude Code noch "esc to interrupt" stehen, und die erste passende Regel gewinnt.
Wo die Grenze liegt
osFoundry beantwortet nie einen Prompt für dich. Andere Agenten können über das App-Tool runtime_send in ein Pane tippen, aber es verweigert ein Pane, das auf eine Entscheidung wartet. Antworten läuft über ein eigens benanntes Tool, runtime_answer, und du bestätigst jede Antwort. Die Prüfung läuft auf einem frischen Lesen des Bildschirms im Moment des Tippens, nicht auf dem letzten Durchlauf. So kann ein Prompt, der gerade erst aufgetaucht ist, keine Tastendrücke abfangen, die als normaler Text gemeint waren.
Ein Bildschirm, den osFoundry nicht lesen kann, wird als Idle gemeldet, nie als Needs you. Der Kommentar in detect.rs nennt den Grund: Ein einziger Fehlalarm, und niemand traut dem Badge mehr, und danach verpuffen auch die echten Alarme. Ist eine Regel unsicher, meldet die App deshalb lieber weniger als mehr.
Die Regeln sind Daten, kein Code. Eine heruntergeladene Regeldatei kann ändern, welche Muster greifen, sonst nichts. Sie kann nicht ändern, welches Programm läuft. Deine eigene Überschreibung kommt nach ~/.osfoundry/agent-detection/claude.toml.
Der Terminaltext bleibt im Speicher der Desktop-App. Nur eine Session, die du beendest, hinterlässt eine Spur außerhalb des Panes: ihre Zusammenfassung in deinen Wissensdateien, geschrieben, bevor irgendetwas abgelegt wird.
Als Nächstes
Starte ein zweites Claude Code in einem anderen Ordner, gib beiden eine Aufgabe, die eine Änderung braucht, und lass das Sessions-Board auf Needs me only gefiltert, während du etwas anderes machst. Falls du die Desktop-App noch nicht hast: Sie liegt auf der Download-Seite.






Top comments (0)