# Werkbank – Kurzanleitung für Werkzeuge und Agenten Was das hier ist: eine Stelle, an die man einen Projektordner schickt und eine laufende Adresse zurückbekommt. Kein Git nötig, keine Server-Einrichtung. Basis: https://gebaut.localdev.ai/v1 Anmeldung: Authorization: Bearer (Schlüssel beginnen mit wb_) Maschinenlesbar: https://gebaut.localdev.ai/openapi.json ## Einmalig: Schlüssel besorgen curl -sX POST https://gebaut.localdev.ai/v1/auth/login \ -H 'Content-Type: application/json' \ -d '{"email":"...","passwort":"..."}' # aus der Antwort den token nehmen, dann: curl -sX POST https://gebaut.localdev.ai/v1/schluessel \ -H "Authorization: Bearer " \ -H 'Content-Type: application/json' \ -d '{"name":"Claude Code"}' Der Schlüssel wird genau einmal angezeigt. Er läuft nicht ab und ersetzt das Passwort. ## Immer wieder: veröffentlichen cd mein-projekt zip -qr /tmp/projekt.zip . -x '*/node_modules/*' '*/.git/*' curl -sX POST https://gebaut.localdev.ai/v1/veroeffentlichen \ -H "Authorization: Bearer $WERKBANK_SCHLUESSEL" \ -F titel="Wetterlampe" \ -F datei=@/tmp/projekt.zip Die Antwort kommt, wenn die Seite steht: {"status":"live","live_url":"https://nutzer--wetterlampe.gebaut.localdev.ai", ...} Derselbe Aufruf mit demselben Titel ersetzt die alte Fassung – er darf beliebig oft laufen. Wer nicht warten will: `-F warten=false`, dann kommt nur `auftrag_id` zurück und der Stand steht unter `https://gebaut.localdev.ai/v1/auftraege/`. ## Was hochgeladen werden darf - Fertige Seite: `index.html` im Hauptordner. - Node: `package.json` im Hauptordner. Wir führen `npm install` aus und, falls vorhanden, `npm run build`. Entsteht dabei `dist`, `build` oder `out`, liefern wir das aus; sonst starten wir `npm start`. - Python: `requirements.txt` im Hauptordner. Flask, FastAPI, Streamlit und Django werden erkannt, sonst starten wir `main.py` oder `app.py`. - Läuft das Projekt als Server, muss es auf **Port 8080** und auf **0.0.0.0** hören. - Höchstens 100 MB und 5000 Dateien. `node_modules`, `.git` und `.venv` werden beim Auspacken weggelassen. ## Fehler Jeder Fehler kommt als `{"fehler": "kurz", "hinweis": "was zu tun ist"}`. Der Hinweis ist ein ganzer Satz und sagt, was zu ändern ist – er ist dafür gedacht, dem Nutzer unverändert vorgelesen zu werden.