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
| Standard | Large | |
|---|---|---|
| Maschine | 2 vCPU, 8 GB | 4 vCPU, 16 GB |
| Nutzer | 39 € / Monat | 78 € / Monat |
| Beitrag zum gemeinsamen Kontingent | 200 Stunden | 400 Stunden |
| Kontingentstunden pro Laufstunde | 1 | 2 |
| Über das Kontingent hinaus | 0,20 € / Stunde | 0,40 € / Stunde |
| Höchstbetrag pro Nutzer im Monat | 99 € | 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-Ergebnisse | ja |
| Dotfiles, Shell-Verlauf, Git-Konfiguration, SSH-Schlüssel | ja |
npm i -g, pip --user, uv tool, pipx, cargo install, go install | ja |
| Deine Anmeldung bei Claude Code | ja |
apt install | nein |
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
doneCommitte 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-filesDer 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>.gitZwei Dinge solltest du nicht kopieren:
~/.git-credentialsund~/.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 8000Port 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
claudeEs 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 frembenchDeshalb ü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.
| Tasten | Was sie tun |
|---|---|
Ctrl-b c | Neues Fenster: hier einen zweiten Agenten starten |
Ctrl-b n / Ctrl-b p | Nächstes / vorheriges Fenster |
Ctrl-b 0 … Ctrl-b 9 | Direkt zu einem Fenster springen |
Ctrl-b w | Aus 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 z | Einen Bereich auf Vollbild vergrößern und zurück |
Ctrl-b d | Trennen: 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/startupläuft nur, wenn die Sitzung zum ersten Mal angelegt wird, nicht erneut pro Fenster. - Unterschiedlich große Tabs verkleinern sich nicht gegenseitig.
aggressive-resizeist 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 devInnerhalb 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:
| Port | Dienst |
|---|---|
| 5173 | node |
| 8000 | python3 |
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:
nodestattvite, weil sich der Prozess so nennt. Sie zeigtUnbekanntfü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
localhostoder0.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.
| Zugangsdaten | Ort | Was sie erreichen |
|---|---|---|
| Git-Zugang | ~/.git-credentials | git clone / push / pull und Forgejos eigene API unter /api/v1/… |
| API-Zugang | ~/.config/fremforge/token | die 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.