Design Dieselbe App · zwei Designs
Überblick Server einrichten Tastenübersicht

Doku · Tastenübersicht

Jede Taste, und warum es sie gibt.

Ein Telefon hat keine Strg-Taste, kein Esc, kein Tab und kein Scrollrad, und die Bildschirmtastatur verdeckt die Hälfte dessen, was du lesen wolltest. Die Tastenleiste ist die Antwort darauf. Diese Seite ist das Ganze davon: was jede Taste tut, was ein langer Druck stattdessen tut und was das Orange bedeutet.

Die Tasten unten sind genau so gezeichnet, wie die App sie zeichnet, in ihrer dunklen Gestalt. Im hellen Design sind die Formen runder und das Orange eine Spur wärmer; nichts verschiebt sich.

Die Tastenleiste

Zwei Reihen unter dem Terminal, immer da. Die obere Reihe sind Werkzeuge, die untere Tasten.

Ctrl
Tab Esc
TasteTippenGehalten oder lang gedrückt
Pfeiltasten. ↑ sitzt in der Werkzeugreihe direkt über ↓, in Reichweite desselben Daumens.Wiederholt, nach kurzem Halten etwa achtzehnmal pro Sekunde — zum Zurückgehen durch die Shell-Historie oder eine lange Zeile.
Ein Bild aus der Galerie wählen, nach ~/.cookbox/uploads auf den Rechner hochladen und den Pfad in den Prompt einfügen.—
Die Android-Zwischenablage in die Sitzung einfügen. Sagt es deutlich, wenn die Zwischenablage leer ist oder das System es verweigert.Rastet auf löschen ein — siehe unten.
Die Bildschirmtastatur ein- oder ausblenden.Schaltet die Taste auf Diktat um — siehe unten.
CtrlStrg für die nächste Taste scharfschalten.—
TabTab.Rastet auf ⇧Tab ein, bis du erneut lang drückst.
Enter — was für einen Agenten abschicken heißt.Rastet auf ⌥⏎ ein: ein Zeilenumbruch, der nicht abschickt.
EscEscape. Unterbricht einen Claude-Code-Durchgang, verlässt den Einfügemodus eines Editors.—

Was das Orange bedeutet

Eine Taste wird orange, wenn sie scharf ist — wenn sie etwas anderes tut, als auf ihr steht, oder wenn ein Modus läuft. Sonst ist nichts in der Leiste farbig, eine orange Taste ist also immer ein laufender Modus, in dem du steckst und den du vielleicht vergessen hast.

Ctrl Ctrl

Strg, scharf. Tippe sie an, dann einen Buchstaben, für ^C und Verwandte. Auf einer Bildschirmtastatur gibt es keinen Modifikator zum Halten, also rastet sie stattdessen ein: das erste getippte Zeichen verbraucht sie, und über die Pfeiltasten hinweg bleibt sie absichtlich scharf — das ist es, was den zweiten Druck auf ← oder → weiter unten möglich macht.

pu

Die Pfeile, mit scharfem Strg. ↑ und ↓ beschriften sich zu pu und pd um — Bild auf und Bild ab — damit du siehst, was Strg aus ihnen gemacht hat, bevor du dich festlegst. ← und → behalten ihre Pfeile und werden Wort-links und Wort-rechts; tippe dieselbe zweimal innerhalb etwa einer halben Sekunde und sie springt stattdessen an den Anfang oder das Ende der Zeile. Diese Steigerung gibt es für ↑/↓ bewusst nicht: zweimal eine Seite hochzublättern ist völlig gewöhnlich und darf nicht an den Anfang des Puffers fliegen.

Tab ⇧Tab

Rück-Tab, eingerastet. Drücke Tab lang, und die Beschriftung wechselt zu ⇧Tab und bleibt dort — in jeder TUI, die eine Auswahl durchläuft, ist das eine echte Taste, und auf einem Telefon ist sonst kein Platz dafür. Erneut lang drücken führt zurück.

⌥

Enter, das nicht abschickt. Agenten lesen Enter als „jetzt senden“, für die zweite Zeile eines Prompts braucht es also eine andere Taste. Drücke Enter lang, um ⌥⏎ einzurasten; das kleine ⌥ in der Ecke ist dafür da, dass eine über Nacht stehen gebliebene Rastung sichtbar ist, bevor sie deine nächste Nachricht schluckt.

Einfügen, auf Löschen eingerastet. Drücke Einfügen lang, und es wird zur Löschtaste: ein Tippen wirft die Zeile weg, die du gerade schreibst. Sie sendet ^E und dann ^U — ans Zeilenende, dann zurück bis zum Anfang löschen — sodass die ganze Zeile verschwindet, wo auch immer der Cursor gerade steht, in einer Shell wie in jedem Agenten. Keine der beiden Hälften unterbricht etwas, ein bereits laufender Durchgang bleibt also unberührt; das ist der Unterschied zu ^C. Ein Prompt über mehrere Zeilen braucht ein Tippen pro Zeile.

Die Bildschirmtastatur. Orange, solange die Tastatur oben ist. Sie ist die einzige Taste, die sie einblendet — alles andere, auch ein Tippen auf das Terminal, lässt sie bewusst in Ruhe, damit die Tastatur keinen Text verdeckt, den du gerade liest.

Diktat. Drücke die Tastatur-Taste lang, und sie wird zum Mikrofon. Tippen startet das Zuhören — Orange heißt, das Telefon nimmt dich auf — und erneutes Tippen stoppt es. Wörter landen im Prompt, sobald sie erkannt sind. Erneut lang drücken führt zur Tastatur zurück.

Gesten auf dem Terminal

GesteTutWarum gerade diese
Nach oben / unten wischenScrollen — siehe den nächsten Abschnitt, denn das ist das Einzige, was nicht überall gleich ist.Die naheliegende Geste für die naheliegende Aufgabe.
Einmal tippenDen Cursor dorthin setzen, wo du getippt hast — aber nur entlang der Zeile, auf der er ohnehin steht, umbrochene Zeilen eingeschlossen. Überall sonst passiert nichts.Schneller, als einen Pfeil zu halten. Es ist nur waagerecht, weil Hoch in einer Shell der vorige Befehl ist und keine Cursorbewegung: ein Tippen zwei Zeilen höher würde still wegwerfen, was du geschrieben hast. Ein Terminal ist ein Raster aus Zellen, und nichts darin sagt, welche davon die gerade bearbeitete Zeile sind — die Zeile des Cursors ist also die einzige ehrliche Antwort.
Doppelt tippenDie Tastatur ein- oder ausblenden.Ein einzelnes Tippen hebt eine Auswahl auf. Eine Tastatur, die beim einzelnen Tippen hochkommt, würde den Text verdecken, den du gerade zum Lesen angetippt hast.
Lang drückenDas Wort unter deinem Finger auswählen; weiterziehen erweitert die Auswahl in beide Richtungen. Loslassen kopiert sie.Auswählen muss absichtlich sein. Ein Ziehen, das beginnt, bevor der Druck erkannt ist, gilt stattdessen als Wischen.
Zwei Finger zusammenziehenDie Terminalschrift ändern, 8–22 px.Es ist derselbe Wert wie Terminalgröße in den Einstellungen — setze ihn so oder so, beide bleiben im Gleichschritt.

Scrollen, was nicht überall gleich ist

Auf einem Telefon gibt es keinen Rückblättpuffer zum Verschieben: das Terminal, auf das du siehst, ist ein lebendes Bild auf einer Maschine woanders, und was „hoch“ bedeutet, hängt davon ab, wer es zeichnet. Cookbox sieht nach, was im Bereich läuft, und wählt:

Was im Bereich läuftEin Wischen sendetWas du siehst
Alles in zellij — ein Agent, vim, htop, eine einfache ShellEinen Bildschirm voll Mausrad-Rasten, an der Zelle unter deinem Finger.Zellij scrollt den Rückblättpuffer dieses Bereichs — oder reicht die Raste an ein Vollbildprogramm weiter, das die Maus angefordert hat, und dieses Programm scrollt selbst. Zellij entscheidet, denn zellij ist das, was es weiß. Agenten sind kein Sonderfall: keiner der drei blättert selbst, und sie zu behandeln, als täten sie es, ergibt ein Wischen, das nichts tut.
Eine Vollbild-TUI in tmuxPageUp / PageDown, direkt an das Programm.Die eigene Historie des Programms. tmux' Maus ist aus, solange du sie nicht eingeschaltet hast, also muss diese Seite die Wahl treffen.
Eine einfache Shell in tmuxCtrl-B [ für den Kopiermodus, dann blättern.Der Rückblättpuffer des Multiplexers. Der Modus endet von selbst, sobald du tippst.

Ein Bereich bleibt dort stehen, wo du ihn gescrollt hast, und das Einzige, was ihn zum lebenden Bild zurückschnappen lässt, ist ein Tastendruck — das Öffnen einer Sitzung setzt ihn deshalb für dich wieder nach unten. Ohne das öffnet eine Sitzung, die am oberen Ende ihrer Historie stehen blieb, genau dort, und Zurückwischen tut gar nichts, bis du eine Taste drückst — was genau wie ein kaputtes Wischen aussieht.

Eines erreicht kein Wischen: ein Programm, das auf dem alternativen Bildschirm läuft, hinterlässt im Multiplexer überhaupt keine Historie, es gibt dort also nichts zu scrollen. Das ist eine Eigenschaft des Programms, nicht von Cookbox — die Codex-TUI ist der übliche Fall, und in ihrem eigenen Issue-Tracker steht der Wunsch, stattdessen inline zu zeichnen.

Scharfes Strg plus ↑/↓ sendet PageUp/PageDown, egal was im Bereich läuft — für den Fall, dass dir eine Taste lieber ist als ein Wisch, und es ist der Weg zum Blättern eines Programms, das ein eigenes hat. Du musst tmux' Kopiermodus nie von Hand verlassen: die erste Taste, die du tippst, beendet ihn, denn eine Shell, die deinen Befehl still verschluckt, ist ein schlimmerer Fehler als ein offen gelassener Rückblättpuffer. Zellij hat überhaupt keinen Modus zum Verlassen.

Stimme: Diktat und Aufnahmen

Zwei verschiedene Dinge, an zwei verschiedenen Orten.

Diktat, innerhalb eines Terminals

Drücke lang, um daraus zu machen, tippe zum Zuhören, tippe zum Stoppen. Es ist Androids eigene Spracherkennung, das Transkript ist also das, was der Dienst auf deinem Telefon erzeugt — nichts wird an Cookbox gesendet. Gut für einen Satz Anweisung; nicht für einen Absatz lautes Nachdenken.

Aufnahmen, vom Sitzungsbildschirm

Das in der unteren Leiste der Sitzungsliste öffnet den Rekorder, der für den Absatz lautes Nachdenken da ist.

  • Aufnehmen, dann die Datei benennen. Aufnahmen sind .m4a, liegen auf dem Telefon unter Musik in dem in den Einstellungen gesetzten Ordner und bleiben dort, bis du sie löschst.
  • Wähle, was der Agent damit tun soll — transkribieren, zusammenfassen, tiefer graben, Kochen starten — und ergänze einen Folge-Prompt, wenn die Kästchen es nicht sagen.
  • Wähle eine Zielsitzung und leite weiter. Das Audio wird auf den Rechner geladen und dem Agenten übergeben; eine Claude-Code- oder Codex-Sitzung kann es annehmen, andere Agenten nicht, deshalb erscheinen nur die in der Liste, die es können.
  • Die Grenze liegt bei 24 MB pro Aufnahme — ungefähr eine Stunde Sprache.

Ansicht: Ports und Weiterleitung

Ansicht ist die Antwort auf „der Dev-Server läuft, und jetzt?“. Sie listet die TCP-Ports, die auf dem Rechner tatsächlich lauschen, mit dem Prozess, der jeden hält.

  • Tippe einen Port an, um ihn über die bestehende SSH-Verbindung weiterzuleiten. Keine Firewall-Änderung und nichts veröffentlicht — der Tunnel besteht nur, solange die App ihn hält.
  • Erneut tippen öffnet ihn, entweder in der App oder im Browser des Telefons. Die Ansicht in der App ist ein iframe ohne eigenen Verlauf, alles was richtig navigiert will also in den Browser.
  • Speichere Port und Pfad zusammen als Favorit; beim nächsten Mal steht er oben in der Liste, noch bevor der Port überhaupt erkannt ist.
  • Die Stopp-Taste in einer Zeile schließt diese Weiterleitung und lässt die Sitzung in Ruhe.

pm2

Läuft auf dem Rechner pm2, sagt die Ansicht das über den Ports, in einer Zeile, die du lesen kannst, ohne sie zu öffnen: wie viele Apps laufen, wie viele nicht, die Systemlast gegen die Kernzahl, was pm2' Apps zusammen kosten, und der freie Speicherplatz. Last und Speicherplatz sind nicht von pm2 — es hat keine Systemzahlen — sie kommen im selben Umlauf aus /proc und df.

  • Tippe die Zeile an, um eine Zeile je Prozess aufzuklappen: ein Punkt für den Zustand, was er an CPU und Speicher kostet, wie lange er läuft und wie oft er neu gestartet ist. Eine davongelaufene Neustartzahl wird eingefärbt, denn das ist die Zahl, die sagt, dass etwas still in einer Absturzschleife hängt.
  • Jede Zeile trägt ihre eigenen Tasten — neu starten und stoppen für eine laufende App, starten für eine angehaltene. Sie sprechen den Prozess über pm2' eigene Id an und nicht über den Namen, weil Namen sich über Namensräume und Cluster-Instanzen hinweg wiederholen.
  • Es aktualisiert sich, solange die Anzeige sichtbar ist — aufgeklappt alle sechs Sekunden, zugeklappt langsamer — und hört auf, wenn du den Bildschirm verlässt. Nichts wird gepusht; eine Messung ist ein Umlauf, und ein Umlauf dauert etwa eine fünftel Sekunde und kostet ein viertel Kilobyte.
  • Nichts hier startet einen pm2-Daemon. Jeder pm2-Befehl startet einen, wenn keiner läuft, deshalb liest Cookbox stattdessen die pid-Datei des Daemons und spricht erst dann mit pm2, wenn die einen lebenden Prozess nennt. Ein Rechner mit installiertem pm2 und nichts Laufendem sagt genau das und bietet keine Tasten an.
  • Über die Leitung gehen acht Zahlen pro Prozess. pm2 jlist gibt die vollständige Umgebung jeder App zurück — zehnerweise Kilobytes, und dort liegen die Geheimnisse eines Servers — sie wird deshalb auf dem Rechner reduziert, und der Rest verlässt ihn nie.
  • pm2 gilt pro Benutzer. Du siehst den Daemon des Kontos, mit dem du dich anmeldest, nicht jedes pm2 auf der Maschine.

Dateien

  • Die Ordnertaste öffnet die Dateien des Rechners — aus einem Terminal beginnt sie im Arbeitsverzeichnis dieser Sitzung, aus der Ansicht im Heimatverzeichnis des SSH-Benutzers.
  • Das Zeichen in jeder Zeile sagt, was die Datei ist — Seite, Bild, Film, Notiz, Archiv — weil ein langer Name seine Endung längst an die Auslassungspunkte verliert, bevor du sie lesen kannst.
  • Textdateien werden an Ort und Stelle angezeigt, nur lesbar, die ersten 256 KB. Alles andere — ein PDF, ein Bild, ein Archiv — bietet In anderer App öffnen: Cookbox holt die Datei herunter (bis 25 MB) und übergibt sie dem, was auf dem Telefon diesen Typ öffnet. In Cookbox steckt kein PDF-Betrachter und in der Webview, in der es zeichnet, auch nicht — der eigene Betrachter des Telefons ist also die ehrliche Antwort.
  • Die Hakentaste macht aus der Liste eine Auswahl: Zeilen antippen, Ordner eingeschlossen, dann Herunterladen. Eine einzelne Datei kommt als sie selbst an, unkomprimiert — eine Datei zu komprimieren bringt nur Wartezeit und einen Entpackschritt. Ein Ordner, oder mehreres auf einmal, kommt als eine .zip an, auf dem Rechner gebaut und direkt hinausgestreamt, sodass dort nichts zum Aufräumen geschrieben wird. Ein Rechner ohne zip und ohne python3 fällt auf .tar.gz zurück, wofür Android eine App braucht.
  • Ein Download zählt während des Laufens auf einem Balken über der Liste hoch. Der Balken füllt sich nicht bis zu einem Prozentsatz, weil es kein Ziel gibt, auf das er zulaufen könnte: das Archiv entsteht, während es gesendet wird. Alles landet in den Downloads des Telefons, wo es die App überlebt, und der Name, unter dem es gelandet ist, steht neben In Downloads gespeichert, mit einer Ordnertaste, die diesen Bildschirm öffnet. Der Name lohnt das Lesen: ein zweiter Download desselben Ordners wird umbenannt statt überschrieben, so wie ein Browser es macht. Die Obergrenze liegt bei 25 MB pro Download, abgelehnt statt abgeschnitten.

Die Leiste über dem Terminal

TasteTut
Zurück zur Sitzungsliste. Die Sitzung bleibt am Leben und der Agent arbeitet weiter — das ist kein Ausweg aus irgendetwas.
Was der Agent tut: grün arbeitet, gelb wartet auf eine Antwort von dir, grau untätig oder unbekannt. Die Sitzungsliste schreibt dasselbe in Worten aus.
Die Dateien, die diese Sitzung geschrieben hat, beginnend in ihrem eigenen Arbeitsverzeichnis.
Verlassen, was drei Möglichkeiten öffnet: andere trennen (andere Clients von dieser Sitzung werfen), dich selbst trennen oder die Sitzung endgültig schließen. Nach sechs Sekunden klappt es zurück in die Taste, denn ein Menü, das die Taste ersetzt hat, aus der es kam, lässt nichts zum Abbrechen übrig.
mp / sshAuf welchem Transport das Terminal läuft. mp ist moshpit — lokales Echo, übersteht einen Netzwechsel; ssh heißt, es ist zurückgefallen, und ist eine Tatsache und kein Fehler.