Aktionen & der Exec-Server
Bauen, testen, starten — die wiederkehrenden Kommandos eines
Projekts sind Aktionen, definiert in .agent/actions.json und
sichtbar im Aktionen-Tab der App (Favoriten an die Toolbar pinnen,
Shortcuts vergeben).
Eine Aktion läuft als argv ohne Shell — &&, Pipes und $(…)
funktionieren dort nicht. Zusammengesetzte Kommandos gehören in ein
Skript:
{ "name": "Build app", "command": "sh scripts/app-build.sh"}Aktionen können vor dem Lauf auch Eingaben abfragen — Text, Zahl,
Datei, Ordner, Auswahl, Farbe — eingesetzt in {name}-Platzhalter im
Kommando.
Wer wirklich ausführt: der Exec-Server
Abschnitt betitelt „Wer wirklich ausführt: der Exec-Server“Eine sandboxed Mac-App darf keine beliebigen Prozesse starten. Also
führt die App selbst nichts aus:
Sie verbindet sich als MCP-Client mit
einem lokalen Exec-Server (Standard
http://127.0.0.1:8765/mcp, pro Projekt konfigurierbar in
.agent/settings.json). Jeder Server, der den Exec-Vertrag spricht,
funktioniert; die App ist server-agnostisch. Du startest den Server;
ein grünes Blitz-Symbol in der App heißt: verbunden.
Das Sicherheitsmodell sitzt dazwischen:
- Allowlist (
.agent/exec-allowlist.json): Kommandos, die ein erlaubtes Muster deckt, laufen; alles andere wird als Pending-Request geparkt, den du in der App bestätigst — einmal oder dauerhaft. - Das Arbeitsverzeichnis ist fest der Projekt-Root, und jeder Lauf hat ein Timeout.
Stream, Charts, Panels
Abschnitt betitelt „Stream, Charts, Panels“Aktions-Ausgabe streamt live, mit Stop-Knopf (Verbindungsabbruch
killt den Prozess) und Fortschritt aus [n/m]-Markern. Zwei
Erweiterungen:
- Charts — eine JSON-Zeile wie
{"kind":"chart", …}in der Ausgabe wird als echtes Diagramm gerendert; ein Profiling-Skript kann sein Ergebnis zeigen statt Spalten zu drucken. - Tool-UI-Panels — eine Aktion der Form
toolui:<kind> <paramsJSON>(etwatoolui:sqlite {"path": "{file}"}) öffnet lokal ein interaktives Panel, ganz ohne Server.
Eine Regel spannt sich über all diese Dateien: keine Secrets im
Repository. Tokens leben im Schlüsselbund oder kommen als
Umgebungsreferenz wie ${MY_TOKEN} — wenn eine Konfiguration
scheinbar ein Klartext-Secret braucht, ist das eine
Frage an den Owner, kein Commit.