Zum Hauptinhalt springen

frembench — Dev-Benches

frembench ist eine Linux-Maschine, die du minutenweise mietest und im Browser erreichst: eine Dev-Bench. Sie hat dieselbe Sprach-Toolchain wie deine CI-Runner; was auf einer Bench baut, baut also auch in der CI.

Was sie kostet

Ein Bench-Nutzer kostet 39 € pro Monat und enthält 200 Stunden Laufzeit. Über das Kontingent hinaus kostet sie 0,20 € pro Stunde, und die Summe ist fest gedeckelt: Deine Rechnung kann nie über 99 € pro Bench-Nutzer im Monat liegen, egal wie intensiv du die Benches nutzt. Bei einem einzelnen Nutzer greift der Deckel bei 500 Stunden Laufzeit; danach läuft die Bench ohne weitere Kosten weiter. Alle Beträge hier sind in EUR, der Währung, in der Benches abgerechnet werden, wie auch der Rest deines Abonnements.

Die Stunden werden über alle Bench-Nutzer gebündelt, so wie CI-Minuten. Das Kontingent ist 200 Stunden × Nutzer, gemessen an allem, was die Benches deiner Organisation gelaufen sind; zwei Nutzer teilen sich also 400 Stunden: Eine ausgelastete Bench zehrt vom Kontingent einer ruhigeren Kollegin, statt direkt in die Mehrkosten zu gehen. Der Deckel wird ebenso gebündelt: Er liegt bei 99 € pro Bench-Nutzer, nicht pro Maschine; eine einzelne Bench in einer Organisation mit zwei Nutzern kann also mehr als 99 € ausmachen, während die Organisation innerhalb von 198 € bleibt.

Zwei Größen

StandardLarge
Maschine2 vCPU, 8 GB4 vCPU, 16 GB
Nutzer39 € / Monat78 € / Monat
Beitrag zum gemeinsamen Kontingent200 Stunden400 Stunden
Kontingentstunden pro Laufstunde12
Über das Kontingent hinaus0,20 € / Stunde0,40 € / Stunde
Höchstbetrag pro Nutzer im Monat99 €198 €

Ein Large-Nutzer zählt in jeder Hinsicht als zwei Bench-Nutzer; alles auf dieser Seite gilt also auch für ihn, mit verdoppelten Zahlen: ein Kontingent für die ganze Organisation, dieselbe sekundengenaue Messung, derselbe Deckel. Ein ruhiger Nutzer jeder Größe gleicht einen ausgelasteten aus. Ein Admin der Organisation kauft Large-Nutzer auf der Abrechnungsseite und wählt die Größe, wenn er einer Person einen Nutzer zuweist; die Bench wird in der Größe des Nutzers ihres Eigentümers angelegt.

Zwei Details, die man kennen sollte, weil sie ändern, was du tatsächlich zahlst:

  • Die Zeit wird in Sekunden gemessen und einmal gerundet, am Ende des Zeitraums. Eine Bench schläft nach 30 Minuten Leerlauf ein und wacht auf, wenn du dich verbindest; ein Arbeitstag besteht also aus vielen kurzen Abschnitten. Würde jeder einzelne auf eine Minute aufgerundet, kämen zwanzig zehnsekündige Aufwachvorgänge als zwanzig Minuten auf die Rechnung, und du würdest für unsere eigene Schlafoptimierung bezahlen.
  • 200 Stunden sind weit mehr als ein Arbeitsmonat an verbundener Zeit. Das Kontingent bemisst sich an der Zeit, in der eine Bench wach ist, nicht an den Stunden, die du an der Tastatur verbringst; ein Agent, der einen langen Job ausführt, zählt, ein ungenutzter Editor nicht.

Nutzer werden beim Hinzufügen oder Entfernen anteilig berechnet, wie jeder andere Nutzer. Wie sich das in den restlichen Tarif einfügt, zeigt die Preisseite.

Du musst sie nicht verwalten. Sie wacht auf, wenn du dich verbindest, und schläft von selbst ein, wenn niemand verbunden ist und nichts läuft.

Was erhalten bleibt und was nicht

Das ist das Eine, das du vor der Nutzung einer Bench verstehen solltest, weil es alles andere prägt.

Deine Bench hat zwei Festplatten. Das Profilvolume mit 50 GB gehört dir und bleibt erhalten. Die Boot-Platte wird bei jedem Aufwachen aus einem frischen Image neu aufgebaut; so bekommst du Patches ohne Wartungsfenster und ohne je zu einem Neustart aufgefordert zu werden.

$HOME liegt auf dem Profilvolume. Also:

WasÜbersteht das Schlafen
Dein Code, deine node_modules, deine Build-Ergebnisseja
Dotfiles, Shell-Verlauf, Git-Konfiguration, SSH-Schlüsselja
npm i -g, pip --user, uv tool, pipx, cargo install, go installja
Deine Anmeldung bei Claude Codeja
apt installnein

apt ist die bewusste Ausnahme: Systempakete sind das, wofür das Image da ist. Brauchst du eines jeden Morgen, gehört es ins Image. Eröffne ein Issue, statt es in dein Shell-Profil zu skripten; mit dem wöchentlichen Neubau ist es dann nicht mehr dein Problem.

Deine Dateien mitnehmen

Dein Profilvolume überdauert das Schlafen, aber nicht deine Bench. Entfernt ein Admin der Organisation deinen Bench-Nutzer, wird die Bench mit entfernt:

  • Sie stoppt sofort, und du kannst sie nicht wieder öffnen, weder im Browser noch mit fremforge bench attach.
  • Ihr Profilvolume wird 30 Tage aufbewahrt. In diesen 30 Tagen kann ein Admin der Organisation das Entfernen auf der Verwaltungsseite Benches der Organisation rückgängig machen. Das bringt die Bench zurück, wie sie war, schlafend, auf derselben Platte, mit deinem Nutzer.
  • Nach 30 Tagen wird das Profilvolume gelöscht. Es lässt sich nicht wieder anhängen oder wiederherstellen, und eine neue Bench beginnt immer mit einem leeren Profil.

Nimm also mit, was du behalten willst, solange du die Bench noch hast, etwa bevor du ein Projekt oder die Organisation verlässt. Ist sie bereits entfernt, bitte einen Admin der Organisation, das Entfernen innerhalb der 30 Tage rückgängig zu machen, kopiere deine Dateien wie unten beschrieben heraus und lass sie dann wieder entfernen.

Es gibt kein scp, rsync oder SSH auf eine Bench: Sie hat keinen eingehenden Netzwerkweg, und fremforge bench attach gibt dir ein Terminal, keine Dateiübertragung. Was du mitnimmst, verlässt die Bench über frem.sh, auf einem der drei Wege unten.

Deine Arbeit pushen

Code gehört in Git, und die Bench hat bereits einen Git-Zugang für frem.sh. Um jedes Repository unter deinem Home-Verzeichnis zu finden, in dem etwas noch nicht gepusht ist (nicht committete Änderungen oder Commits auf einem Branch, der auf keinem Remote liegt):

find ~ \( -name node_modules -o -name .cache \) -prune -o -name .git -print 2>/dev/null |
while read -r g; do
  r=$(dirname "$g")
  if [ -n "$(git -C "$r" status --porcelain)" ] ||
     [ -n "$(git -C "$r" log --branches --not --remotes --oneline -1)" ]; then
    echo "not pushed: $r"
  fi
done

Committe und pushe jedes davon. Kannst du nicht auf den Branch pushen, auf dem du bist, pushe auf einen eigenen Branch (git switch -c wip/<topic>, dann git push -u origin HEAD). git stash list zeigt Stashes, die ein Push nicht mitnimmt.

Alles andere: ein privates Repository

Dotfiles, Notizen und Arbeitsdateien, die zu keinem Repository gehören, können in ein eigenes privates Repository. Lege in deiner Organisation über die Weboberfläche von frem.sh eines an (New repository, Sichtbarkeit Private), zum Beispiel bench-files-<your-login>. Darfst du in der Organisation keine Repositorys anlegen, frag einen Owner der Organisation. Dann auf der Bench:

mkdir ~/bench-files && cd ~/bench-files
cp -a ~/.bashrc ~/.tmux.conf ~/notes .   # whatever you want to keep
git init -b bench-files
git add -A
git commit -m "Files from my bench"
git remote add origin https://frem.sh/<org>/bench-files-<your-login>.git
git push -u origin bench-files

Der Branch heißt bench-files statt main, damit der Branch-Schutz deiner Organisation, der standardmäßig main abdeckt, den Push nicht abweist. Auf deiner eigenen Maschine:

git clone -b bench-files https://frem.sh/<org>/bench-files-<your-login>.git

Zwei Dinge solltest du nicht kopieren:

  • ~/.git-credentials und ~/.config/fremforge/token. Sie sind für die Bench ausgestellt, werden widerrufen, wenn sie verschwindet, und funktionieren nirgendwo sonst.
  • Eigene Secrets wie private SSH-Schlüssel oder Zugangsdaten für Cloud-CLIs. Jeder mit Zugriff auf das Repository kann sie lesen, auch die Owner der Organisation. Erzeuge stattdessen neue auf deiner nächsten Maschine.

Git eignet sich schlecht für große Binärdateien; beschränke das Repository also auf das, was du wirklich brauchst.

Eine einzelne kleine Datei: im Browser herunterladen

Für eine kleine Datei gibt es eine Abkürzung über Weitergeleitete Ports. Pack, was du willst, in eine Datei und stelle ihr Verzeichnis bereit:

mkdir -p ~/outbox
tar -czf ~/outbox/dotfiles.tar.gz -C ~ .bashrc .tmux.conf
cd ~/outbox && python3 -m http.server 8000

Port 8000 erscheint unter Weitergeleitete Ports. Öffne ihn, klicke auf die Datei, um sie herunterzuladen, und stoppe den Server dann mit Ctrl-c. Eine weitergeleitete Antwort ist auf 8 MB begrenzt; das funktioniert also nur für kleine Dateien. Für alles Größere nimm ein Repository.

Einen Agenten ausführen

Codex und opencode sind vorinstalliert. Beide stehen unter Open-Source-Lizenzen, deshalb liefern wir sie mit.

Claude Code ist nicht vorinstalliert, und der Grund ist eine Lizenz, kein Versehen: Seine Bedingungen sind keine Open-Source-Lizenz, und dies ist ein Produkt, das wir verkaufen; es mitzuliefern hieße, proprietäre Software weiterzuverbreiten. Es ist ein Befehl, unter deiner eigenen Vereinbarung mit Anthropic:

frembench-install-claude-code
claude

Es wird wie jedes andere Paket, das du auf der Bench installierst, über den Egress-Proxy der Bench aus der öffentlichen npm-Registry installiert. Das tust du nur einmal: Installation und Anmeldung liegen auf deinem Profilvolume.

Keine Telemetrie von den vorinstallierten Werkzeugen. Nutzungsberichte und Update-Prüfungen sind für die Agenten und Werkzeuge abgeschaltet, mit denen eine Bench kommt (OpenChamber, opencode, Codex, Mistral Vibe, Claude Code, wenn du es installierst, sowie die Cloud-, Build- und Paketwerkzeuge), und jeder Build des Bench-Images prüft das. Einige Werkzeuge laden weiterhin Inhalte, die sie zum Arbeiten brauchen, keine Daten über dich: die Modellliste von opencode, den Plugin-Katalog von Codex und die Versionsprüfung der Azure CLI beim ersten Start. Willst du die Berichte eines Werkzeugs wieder einschalten, setze seine Variable selbst.

Mehrere Dinge gleichzeitig ausführen

Dein Bench-Terminal ist keine nackte Shell: Es verbindet sich mit einer tmux-Sitzung namens frembench:

tmux new-session -A -s frembench

Deshalb übersteht ein Agent einen zugeklappten Laptop, und so lässt du auch mehrere gleichzeitig laufen. Die Präfixtaste ist das übliche Ctrl-b, und die Maus ist aktiviert.

TastenWas sie tun
Ctrl-b cNeues Fenster: hier einen zweiten Agenten starten
Ctrl-b n / Ctrl-b pNächstes / vorheriges Fenster
Ctrl-b 0 … Ctrl-b 9Direkt zu einem Fenster springen
Ctrl-b wAus einer Liste der Fenster wählen
Ctrl-b ,Aktuelles Fenster umbenennen; lohnt sich, benenne sie nach Aufgabe
Ctrl-b %In nebeneinanderliegende Bereiche teilen
Ctrl-b "In übereinanderliegende Bereiche teilen
Ctrl-b zEinen Bereich auf Vollbild vergrößern und zurück
Ctrl-b dTrennen: alles läuft weiter

Ein zweiter Browser-Tab spiegelt, er verzweigt nicht. Jede Verbindung geht an dieselbe Sitzung frembench, sodass zwei Tabs dasselbe Fenster zeigen und sich darum streiten. Nutze für parallele Arbeit Fenster und Bereiche, nicht mehr Tabs.

Willst du doch zwei Tabs mit unterschiedlichem Inhalt, gib dem zweiten eine eigene Sicht auf dieselben Fenster:

Ctrl-b :  new-session -t frembench -s second
Ctrl-b :  switch-client -t second

-t frembench gruppiert die neue Sitzung mit der ursprünglichen, sodass beide dieselbe Fensterliste sehen, aber jede auf einem anderen Fenster stehen kann. Ein neu geöffneter Tab landet immer auf frembench; du gibst switch-client also pro Tab erneut ein.

Zwei Details, die Leute überraschen:

  • Ein neues Fenster ist eine einfache Login-Shell. ~/.frembench/startup läuft nur, wenn die Sitzung zum ersten Mal angelegt wird, nicht erneut pro Fenster.
  • Unterschiedlich große Tabs verkleinern sich nicht gegenseitig. aggressive-resize ist eingeschaltet, daher richtet sich die Größe eines Fensters nach dem Client, der es gerade ansieht, und nicht nach dem kleinsten verbundenen.

Einen Dev-Server im Browser öffnen

Eine Bench hat keinen eingehenden Netzwerkweg. Nichts im Internet kann sie erreichen, und das ist keine Einschränkung, die wir beseitigen wollen: Genau deshalb ist der Verbindungsweg vertretbar.

Dev-Server funktionieren trotzdem. Starte einen wie gewohnt:

npm run dev

Innerhalb weniger Sekunden erscheint der Port unter Weitergeleitete Ports: eine eigene Karte auf der frembench-Seite unter „Was sie wach hält“; auf der Vollbild-Terminalseite unter der Shell. Klicke darauf. Die Verbindung läuft ausgehend über denselben Kanal wie dein Terminal; kein Port wird freigegeben und kein Tunnel-Programm ist beteiligt.

Die Karte nennt, was lauscht, und wo:

PortDienst
5173node
8000python3

Einiges, was du wissen solltest:

  • Angeboten werden nur Ports, auf denen deine Bench tatsächlich lauscht. Du kannst keinen beliebigen Port anfordern, und auch sonst niemand, der einen Link hat.
  • Die Spalte Dienst zeigt den Kurznamen des Prozesses selbst, von der Bench gelesen: node statt vite, weil sich der Prozess so nennt. Sie zeigt Unbekannt für einen Port, dessen Prozess sich nicht bestimmen ließ, und auf einer Bench mit einem Image von vor dieser Funktion, die sie beim nächsten Aufwachen bekommt.
  • Ein Server, der nur an die private Adresse der Bench gebunden ist, wird nicht aufgeführt, weil eine Weiterleitung dorthin scheitern würde. Binde an localhost oder 0.0.0.0.
  • SSH wird nie angeboten. Nutze das Terminal.
  • Hot Reload funktioniert. Eine weitergeleitete Seite wird vom eigenen Origin deiner Bench ausgeliefert, und ein WebSocket, der von diesem Origin aus geöffnet wird, wird ebenfalls durchgereicht; genau das braucht der Live-Reload-Kanal eines Dev-Servers. Hier stand früher, dass das nicht funktioniert; das wurde geschrieben, bevor es den Origin pro Bench gab, und blieb stehen, nachdem er kam.

So erreichst du auch eine Web-Oberfläche für Agenten wie OpenChamber. Sie ist auf jeder Bench installiert und startet bei jedem Aufwachen auf Port 3000, geschützt durch ein für deine Bench erzeugtes Passwort (OPENCHAMBER_UI_PASSWORD in ~/.frembench/openchamber.env): Öffne diesen Port. Führe nicht openchamber tunnel aus; das ist ein Cloudflare-Tunnel, und die Weiterleitung oben ist sowohl der souveräne Weg als auch der, der dich bereits authentifiziert.

Die API-Zugangsdaten auf einer Bench

Eine Bench authentifiziert sich bei frem.sh mit zwei Zugangsdaten, und zu wissen, welche welche ist, spart einen Nachmittag.

ZugangsdatenOrtWas sie erreichen
Git-Zugang~/.git-credentialsgit clone / push / pull und Forgejos eigene API unter /api/v1/…
API-Zugang~/.config/fremforge/tokendie fremforge-API unter /_app/api/v1/…

Beide stellt die Plattform für dich aus. Du legst sie nicht an, fügst sie nicht ein und erneuerst sie nicht, und du solltest sie nicht durch ein persönliches Token ersetzen.

Er wird bei jedem Aufwachen neu ausgestellt

Der API-Zugang ist ein ffp_…-Token, das beim Start deiner Bench ausgestellt wird, etwa einen Tag gültig ist und widerrufen wird, wenn die Bench einschläft. Das nächste Aufwachen stellt ein neues aus. Deshalb kann es gefahrlos auf dem Profilvolume liegen: Ein Token, das von einer entsorgten Platte gelesen wird, ist bereits widerrufen.

Die praktische Folge: Eine Änderung daran, was deine Bench darf, wirkt beim nächsten Aufwachen, nicht sofort. Wurde eine Fähigkeit gerade für dich freigeschaltet und lehnt die API trotzdem ab, lass die Bench einschlafen und wieder aufwachen, bevor du einen Fehler meldest.

Er handelt als du, mit geringerer Reichweite

Das Token ist an deine Identität gebunden, nicht an eine Organisation. Jede Anfrage wird weiterhin gegen deine tatsächliche Owner-Rolle in der Organisation geprüft; eine Bench kann also nie eine Organisation erreichen, die du nicht auch von deinem Laptop aus erreichen könntest.

Was es bewusst nicht enthält: Abrechnung, SSO-Konfiguration, Änderungen an Nutzern und die Fähigkeit, weitere Tokens auszustellen. Das sind die Scopes, deren Folgen das Wegwerfen der Bench überdauern würden. Alles andere, was eine Bench im Alltag braucht, ist enthalten: Organisationen, Runner, Befunde, SBOMs, Lesezugriffe auf das Audit-Log, Abhängigkeits-Updates, Deployment-Umgebungen und Secrets sowie das Starten und Herunterladen eines Datenexports.

403 Token lacks required scope '…' von einer Bench bedeutet, dass der Endpunkt existiert und deinem Bench-Zugang dieser Scope fehlt. Es bedeutet nicht, dass die Funktion fehlt. Die Formulierung lässt sich leicht als „kein solcher Endpunkt“ missverstehen; prüfe den Scope, bevor du irgendetwas über die API schließt.

Owner der Organisation können den API-Zugang der Benches für die ganze Organisation unter Verwaltung → Authentifizierungsrichtlinie vollständig abschalten. Standardmäßig ist er eingeschaltet.

Ihn nutzen

curl -fsS https://frem.sh/_app/api/v1/orgs/<your-org>/environments \
  -H "Authorization: Bearer $(cat ~/.config/fremforge/token)"

Beachte das Präfix /_app. Der blanke Pfad /api/v1/… ist Forgejos eigene API, die dieses Token nicht annimmt, und ihre Fehlermeldung zitiert das Token, das du geschickt hast. Füge die Ausgabe eines fehlgeschlagenen Aufrufs also nicht in ein Ticket oder einen Chat ein.

Schlafen, Aufwachen und was dir berechnet wird

Berechnet werden die Minuten, in denen deine Bench wach ist. Eine schlafende Bench kostet nur ihr Profilvolume; es lohnt sich also, genau zu wissen, was sie wach hält.

Was sie wach hält

Deine Bench bleibt wach, solange irgendetwas davon zutrifft:

  • Jemand ist verbunden: ein Browser-Tab oder eine SSH-Sitzung, die tatsächlich verbunden ist.
  • Ein Agent arbeitet. Nicht bloß läuft: siehe unten.
  • Du hältst sie wach, über die Bench-Seite.

Trifft nichts davon zu, schläft die Bench nach 30 Minuten ein.

Was „ein Agent arbeitet“ bedeutet

Ein Agent, der an einem Prompt wartet, arbeitet nicht, und diese Unterscheidung entscheidet über deine Rechnung. Eine Claude-Sitzung, die über Nacht offen bleibt, sieht nach jedem naiven Maßstab beschäftigt aus: Sie nutzt weiterhin etwa 1 % einer CPU. Deshalb entscheiden wir nicht allein anhand der CPU.

Ein Agent gilt als arbeitend, wenn eines davon zutrifft:

  • er hat in den letzten 10 Minuten in seinen eigenen Sitzungsverlauf geschrieben, oder
  • er oder etwas, das er gestartet hat, nutzt mindestens 10 % eines CPU-Kerns.

Das Zweite gibt es für lange Tool-Aufrufe. Startet dein Agent einen dreißigminütigen Build, schreibt er dreißig Minuten lang nichts, während er wartet; aber der Compiler, den er gestartet hat, ist beschäftigt, also bleibt die Bench wach.

Ein tatsächlich untätiger Agent hält deine Bench also etwa 10 Minuten nach seiner letzten Aktivität nicht mehr, und die Bench schläft etwa 30 Minuten danach ein: rund 40 Minuten nach deiner letzten Interaktion, wenn nichts anderes sie hält.

Der eine Fall, den du uns sagen musst

Ein langer Job, den du selbst gestartet hast, nicht über einen Agenten, hält die Bench nicht wach. Ein make -j, ein Datenimport, ein Dauertest: Startest du ihn in einer Shell und klappst den Laptop zu, schläft die Bench darunter ein.

Das ist Absicht. Würde jeder beschäftigte Prozess eine Maschine wach halten, könnte eine untätige Bench durch irgendetwas für immer Kosten verursachen, und das Billigste, was man auf der Maschine eines anderen laufen lassen kann, ist ein Krypto-Miner. Die Regel lautet daher: Wir zählen nur Arbeit, die wir einem Agenten zuordnen können, und alles andere ist deine Entscheidung: Halte die Bench wach und gib sie wieder frei, wenn der Job fertig ist.

Verbunden bleiben funktioniert auch, denn ein verbundener Client hält die Bench selbst wach.

Das Aufwachen geschieht automatisch: Verbinde dich, und sie kommt zurück. Deine Dateien liegen, wo du sie gelassen hast, und deine Terminal-Anordnung kommt mit ihnen zurück: Die Fenster, die du offen hattest, werden in denselben Verzeichnissen neu angelegt, und Claude, Codex, opencode und OpenChamber werden neu gestartet, jeweils fortgesetzt in der Sitzung, in der sie waren, wartend an einem Prompt. Nichts wird für dich erneut abgespielt; ein Agent handelt nicht, während du weg bist.

Zwei Dinge kommen nicht zurück. Eine Sitzung, die ohne fortsetzbare ID gestartet wurde, kommt als neue Sitzung im richtigen Verzeichnis zurück, und jeder andere lang laufende Prozess, dein eigener Dev-Server oder ein Build, wird nicht neu gestartet. Trag ihn in ~/.frembench/restore-commands.txt ein, ein Befehlsname pro Zeile, wenn du das willst.

Halte eine Bench wach, wenn du einen langen Job hast, den unsere Erkennung nicht sehen würde, über die Bench-Seite. Das ist nicht dauerhaft: Eine Bench, die zu lange ohne Neubau gelaufen ist, wird trotzdem gepatcht, denn eine ungepatchte Maschine im Internet ist nichts, was man sich durch Wachhalten erkaufen können sollte.

Eine bekommen

Dev-Benches werden pro Organisation freigeschaltet. Hat deine Organisation sie, liegt die Seite unter Einstellungen → Dev benches; wenn nicht, sagt die Seite das. Der Admin deiner Organisation legt fest, wie viele Benches gleichzeitig laufen dürfen.

Eine Bench pro Organisation

Eine Bench gehört einer Organisation, nicht dir. Bist du Mitglied mehrerer Organisationen mit Bench-Nutzern, bekommst du in jeder eine Bench: getrennte Maschinen, getrennte Profile, jeweils abgerechnet an die Organisation, die den Nutzer vergeben hat. Du kannst keine Bench in einer Organisation anlegen, die keine Nutzer gekauft hat; keiner Organisation kann also eine Maschine berechnet werden, der sie nicht zugestimmt hat.

Profile folgen dir nicht zwischen Organisationen. Jede Bench hat ihr eigenes Profilvolume; die Werkzeuge, die Shell-Konfiguration und die Zugangsdaten, die du auf einer Bench installierst, gibt es auf einer Bench in einer anderen Organisation nicht. Richte jede ein, die du nutzt.

Das folgt aus der Grenze zwischen Organisationen und ist keine Einschränkung, die wir beseitigen wollen: Ein gemeinsames Profil hieße, dass eine Organisation dafür bezahlt, die Arbeit einer anderen zu speichern, und es würde Dateien über eine Grenze tragen, auf die sich Kunden verlassen.

Benches schlafen unabhängig voneinander nach dreißig Minuten Leerlauf ein; Benches in mehreren Organisationen halten also nicht mehrere Maschinen am Laufen. Nur die, die du tatsächlich nutzt, bleibt wach.

Warum Claude Code nicht vorinstalliert ist

Das Bench-Image liefert codex (Apache-2.0) und opencode (MIT) einsatzbereit mit. Claude Code ist nicht vorinstalliert, und das ist eine Lizenzentscheidung, kein Versehen: Seine Lizenz ist nicht Open Source, und frembench ist ein Produkt, das wir verkaufen. Es in unserem Image mitzuliefern hieße, es als Teil von etwas weiterzuverbreiten, für das wir Geld verlangen.

Es selbst zu installieren ist ein Befehl, und dann läuft es unter deiner Vereinbarung mit Anthropic statt unter unserer. Deshalb übersteht es auch das Schlafen: Dein Profilvolume behält es, du installierst es also einmal pro Bench.

Das ist dieselbe Regel, die überall im Produkt gilt: Abhängigkeiten, die wir mitliefern, sind souverän, aktuell und vollständig unter Open-Source-Lizenzen. Was diesen Test nicht besteht, bringst du selbst mit; wir bündeln es nicht.