diff --git a/_locales/de/_meta.ts b/_locales/de/_meta.ts
new file mode 100644
index 0000000..cf9a10f
--- /dev/null
+++ b/_locales/de/_meta.ts
@@ -0,0 +1,18 @@
+export default {
+ index: "Einführung",
+ 'getting-started': "App-Schnellstart",
+ studio: "Lizard Studio",
+ 'framework-guides': "Framework-Anleitungen",
+ guides: "Anleitungen",
+ platform: "Limits & Betrieb",
+ concepts: "Grundkonzepte",
+ deploy: "Bereitstellung",
+ variables: "Variablen",
+ networking: "Netzwerk",
+ addons: "Managed Addons",
+ sandboxes: "Sandboxes",
+ observability: "Observability",
+ cli: "CLI-Referenz",
+ dashboard: "App-Dashboard",
+ agents: "Coding Agents",
+};
diff --git a/_locales/de/addons/_meta.ts b/_locales/de/addons/_meta.ts
new file mode 100644
index 0000000..18a114f
--- /dev/null
+++ b/_locales/de/addons/_meta.ts
@@ -0,0 +1,6 @@
+export default {
+ index: "Überblick",
+ postgres: "Postgres",
+ redis: "Redis",
+ storage: "Object Storage (S3)",
+};
diff --git a/_locales/de/addons/index.mdx b/_locales/de/addons/index.mdx
new file mode 100644
index 0000000..04cd30d
--- /dev/null
+++ b/_locales/de/addons/index.mdx
@@ -0,0 +1,80 @@
+---
+description: "Stellen Sie verwaltetes Postgres, Redis und S3-kompatiblen Speicher mit einem einzigen lizard add-Befehl bereit und binden Sie sie dann per Referenz in Services ein."
+---
+
+
+
+# Verwaltete Addons
+
+Lizard stellt verwaltetes **Postgres**, **Redis** und **S3-kompatiblen Objektspeicher** mit einem einzigen Befehl bereit. Jedes Add-on befindet sich in Ihrem Projekt, stellt einen festen Satz von Umgebungsvariablen bereit und wird von Ihren Services über [Referenzen](/concepts/architecture#cross-resource-references) verwendet.
+
+
+
+## Ein Add-on bereitstellen
+
+```bash
+lizard add postgres # one addon
+lizard add postgres redis s3 # several at once
+lizard add --list # show available types
+```
+
+
+
+## Benennung
+
+Das **erste** Add-on eines bestimmten Typs erhält den bloßen Typ als Namen — daher funktioniert `${{postgres.DATABASE_URL}}` sofort. Zusätzliche Addons desselben Typs erhalten einen generierten Namen wie `postgres-autumn-bear`.
+
+Es gibt keinen Fallback über einen Typ-Alias: Eine Referenz muss den **tatsächlichen** Namen des Addons verwenden. Da Referenzen per ID gespeichert werden, können Sie ein Add-on später umbenennen, ohne bestehende Verbraucher zu beeinträchtigen:
+
+```bash
+lizard service rename --service postgres # addons rename through the same command
+```
+
+
+
+## Ein Add-on verwenden
+
+Referenzieren Sie die Variablen eines Addons aus jedem Service. Die Referenz wird beim Bereitstellen aufgelöst und automatisch rotiert, wenn sich die Zugangsdaten des Addons ändern:
+
+```bash
+lizard secrets set DATABASE_URL='${{postgres.DATABASE_URL}}' --service api
+lizard redeploy --service api
+```
+
+Beschränken Sie die Referenz auf die Services, die sie tatsächlich verwenden (siehe [Secret-Scoping](/variables#scoping)).
+
+
+
+## Variablen nach Typ
+
+| Add-on | Variablen |
+|-------|-----------|
+| **postgres** | `DATABASE_URL`, `PGHOST`, `PGPORT`, `PGUSER`, `PGPASSWORD`, `PGDATABASE`, `POSTGRES_USER`, `POSTGRES_DB`, `POSTGRES_PASSWORD` |
+| **redis** | `REDIS_URL` |
+| **s3** | `S3_ENDPOINT`, `S3_DEFAULT_BUCKET`, `S3_ACCESS_KEY_ID`, `S3_SECRET_ACCESS_KEY`, `S3_REGION` |
+
+
+
+## Browser im Dashboard
+
+Das [Dashboard](/dashboard) enthält einen Datenbrowser für jedes Add-on — einen SQL-/Tabellen-Editor für Postgres, einen Key-Browser für Redis und einen Bucket-/Objekt-Browser für S3 — sodass Sie Daten prüfen und bearbeiten können, ohne Lizard zu verlassen.
+
+
+
+## Speicher
+
+Daten-Volumes von Addons sind **nur erweiterbar**. Erhöhen Sie die Kapazität mit:
+
+```bash
+lizard scale --service postgres --storage 8192
+```
+
+
+
+## Anleitungen nach Typ
+
+- [Postgres](/addons/postgres)
+- [Redis](/addons/redis)
+- [Object Storage (S3)](/addons/storage)
+
+Warum ein Prototyp in der Regel alle drei gleichzeitig braucht, erfahren Sie unter [dem Rest des Stacks, den ein SaaS braucht](https://lizard.build/blog/google-antigravity-how-to-deploy-your-app-to-production#the-rest-of-the-stack-a-saas-needs).
diff --git a/_locales/de/addons/postgres.mdx b/_locales/de/addons/postgres.mdx
new file mode 100644
index 0000000..72d6fa2
--- /dev/null
+++ b/_locales/de/addons/postgres.mdx
@@ -0,0 +1,107 @@
+---
+description: "Stellen Sie auf Lizard eine verwaltete PostgreSQL-Datenbank bereit, verbinden Sie sie per Referenz mit einem Service, führen Sie Migrationen beim Bereitstellen aus und erweitern Sie ihren Speicher."
+---
+
+# Managed Postgres
+
+Eine verwaltete PostgreSQL-Datenbank, mit einem einzigen Befehl bereitgestellt und per Referenz mit Ihren Services verbunden.
+
+
+
+## Bereitstellen
+
+```bash
+lizard add postgres
+```
+
+Das erste Postgres-Add-on heißt `postgres`, daher funktioniert `${{postgres.DATABASE_URL}}` sofort.
+
+
+
+## Umgebungsvariablen
+
+Das Add-on stellt einen Standardsatz an Verbindungsvariablen bereit:
+
+| Variable | Beschreibung |
+|----------|-------------|
+| `DATABASE_URL` | Vollständige Verbindungszeichenfolge (`postgres://…`) |
+| `PGHOST` | Host |
+| `PGPORT` | Port |
+| `PGUSER` | Benutzer |
+| `PGPASSWORD` | Passwort |
+| `PGDATABASE` | Datenbankname |
+| `POSTGRES_USER` | Alias für den Benutzer |
+| `POSTGRES_DB` | Alias für die Datenbank |
+| `POSTGRES_PASSWORD` | Alias für das Passwort |
+
+
+
+## Einen Service verbinden
+
+Referenzieren Sie die Verbindungszeichenfolge aus dem konsumierenden Service und deployen Sie erneut:
+
+```bash
+lizard secrets set DATABASE_URL='${{postgres.DATABASE_URL}}' --service api
+lizard redeploy --service api
+```
+
+Die Referenz wird zur Bereitstellen-Zeit aufgelöst und automatisch rotiert, wenn sich die Zugangsdaten des Addons ändern — jeder konsumierende Service übernimmt den neuen Wert beim nächsten Bereitstellen.
+
+Prüfen Sie die Verbindung, ohne die Verbindungszeichenfolge auszugeben:
+
+```bash
+lizard run --service api -- sh -c 'psql "$DATABASE_URL" -c "SELECT 1"'
+```
+
+
+
+## Migrationen beim Bereitstellen ausführen
+
+Verwenden Sie für Migrationen einen Pre-Bereitstellen-Befehl. Gestalten Sie Migrationen so, dass sie sicher erneut ausgeführt werden können und sowohl mit der alten als auch mit der neuen Anwendungsversion kompatibel sind:
+
+```bash
+lizard service set api --set preDeployCommand="npm run migrate"
+lizard redeploy --service api
+```
+
+Für eine Django-App lautet der Befehl `python manage.py migrate`; [Python-App-Hosting](https://lizard.build/blog/python-app-hosting#deploying-django) enthält das entsprechende Pendant für Flask und FastAPI.
+
+
+
+## Daten durchsuchen und abfragen
+
+Öffnen Sie den **Postgres-Editor** im Dashboard (`lizard open`), um SQL auszuführen und Tabellen direkt zu durchsuchen. Für lokale Ad-hoc-Arbeiten führen Sie einen Befehl mit der in den Service injizierten Umgebung aus:
+
+```bash
+lizard run --service api -- sh -c 'exec psql "$DATABASE_URL"'
+```
+
+
+
+## Speicher erweitern
+
+Datenvolumes können nur vergrößert werden:
+
+```bash
+lizard scale --service postgres --storage 8192
+```
+
+
+
+## Mehrere Datenbanken
+
+Wenn Sie ein zweites Postgres hinzufügen, erhält es einen generierten Namen (z. B. `postgres-autumn-bear`). Referenzieren Sie es explizit:
+
+```bash
+lizard add postgres
+lizard secrets set ANALYTICS_URL='${{postgres-autumn-bear.DATABASE_URL}}' --service api
+```
+
+
+
+## Siehe auch
+
+- [Managed Addons](/addons) — Benennung, Referenzen und die Dashboard-Browser.
+- [Service-übergreifende Referenzen](/variables/references) — Referenzsyntax und Auflösung.
+
+Siehe [Speicher und Wiederherstellung](/platform/storage-and-recovery) für die Planung von Backup und Wiederherstellung. Lokal `lizard run` erfordert `psql` und einen erreichbaren Datenbank-Endpunkt; es läuft nicht innerhalb des deployten Service.
diff --git a/_locales/de/addons/redis.mdx b/_locales/de/addons/redis.mdx
new file mode 100644
index 0000000..7f70e8c
--- /dev/null
+++ b/_locales/de/addons/redis.mdx
@@ -0,0 +1,79 @@
+---
+description: "Fügen Sie eine Managed Redis-Instanz für Caching, Warteschlangen, Rate Limiting und Pub/Sub hinzu und verbinden Sie sie mit einem einzigen Verweis mit einem Service."
+---
+
+# Managed Redis
+
+Eine Managed Redis-Instanz für Caching, Warteschlangen, Rate Limiting und Pub/Sub.
+
+
+
+## Bereitstellen
+
+```bash
+lizard add redis
+```
+
+Das erste Redis-Add-on heißt `redis`, daher funktioniert `${{redis.REDIS_URL}}` sofort.
+
+
+
+## Umgebungsvariablen
+
+| Variable | Beschreibung |
+|----------|-------------|
+| `REDIS_URL` | Vollständige Verbindungszeichenfolge (`redis://…`) |
+
+
+
+## Einen Service verbinden
+
+```bash
+lizard secrets set REDIS_URL='${{redis.REDIS_URL}}' --service api
+lizard redeploy --service api
+```
+
+Der Verweis wird beim Bereitstellen aufgelöst und mit den Zugangsdaten des Addons rotiert.
+
+
+
+## Häufige Anwendungsfälle
+
+- **Cache** — speichert berechnete Ergebnisse anhand der Anfrage.
+- **Warteschlange / Worker** — kombinieren Sie Redis mit einem [Service im Worker-Modus](/deploy/workers), der Jobs verarbeitet.
+- **Rate Limiting / Sitzungen** — schneller gemeinsam genutzter Status über [Replikate](/deploy/scaling) hinweg.
+
+```bash
+# A worker that drains a Redis queue
+lizard add -r your-org/worker -n jobs
+lizard service set jobs --set containerPort=0
+lizard secrets set REDIS_URL='${{redis.REDIS_URL}}' --service jobs
+lizard redeploy --service jobs
+```
+
+
+
+## Schlüssel durchsuchen
+
+Öffnen Sie den **Redis-Browser** im Dashboard (`lizard open`), um Schlüssel und Werte zu prüfen. Für lokalen Zugriff:
+
+```bash
+lizard run --service api -- sh -c 'exec redis-cli -u "$REDIS_URL"'
+```
+
+
+
+## Speicher erweitern
+
+```bash
+lizard scale --service redis --storage 4096
+```
+
+
+
+## Siehe auch
+
+- [Managed Addons](/addons) — Benennung, Verweise und die Browser im Dashboard.
+- [Background Workers](/deploy/workers) — Redis mit einem Worker kombinieren, der eine Warteschlange verarbeitet.
+
+`lizard run` startet den Befehl lokal mit der ausgewählten Service-Umgebung. Installieren Sie `redis-cli` lokal und prüfen Sie, dass der Endpunkt erreichbar ist.
diff --git a/_locales/de/addons/storage.mdx b/_locales/de/addons/storage.mdx
new file mode 100644
index 0000000..4f999cd
--- /dev/null
+++ b/_locales/de/addons/storage.mdx
@@ -0,0 +1,108 @@
+---
+description: "S3-kompatibler Objektspeicher für Uploads, Assets und Backups. Erhalten Sie einen öffentlich lesbaren Bucket und Verbindungsvariablen mit einem einzigen lizard add s3."
+---
+
+# Object Storage (S3)
+
+S3-kompatibler Objektspeicher für Uploads, Assets und Backups. Die Bereitstellung eines `s3`-Add-ons erstellt außerdem einen **öffentlich lesbaren Bucket namens `default`**, sodass Sie Dateien ohne zusätzlichen Einrichtungsaufwand bereitstellen können.
+
+
+
+## Bereitstellen
+
+```bash
+lizard add s3
+```
+
+Das erste S3-Add-on heißt `s3`, daher funktionieren `${{s3.S3_ENDPOINT}}` und ähnliche sofort.
+
+
+
+## Umgebungsvariablen
+
+| Variable | Beschreibung |
+|----------|-------------|
+| `S3_ENDPOINT` | S3-kompatible Endpoint-URL |
+| `S3_DEFAULT_BUCKET` | Der automatisch erstellte Bucket-Name (`default`) |
+| `S3_ACCESS_KEY_ID` | Access Key |
+| `S3_SECRET_ACCESS_KEY` | Secret Key |
+| `S3_REGION` | Region |
+
+
+
+## Einen Service verbinden
+
+```bash
+lizard secrets set \
+ S3_ENDPOINT='${{s3.S3_ENDPOINT}}' \
+ S3_DEFAULT_BUCKET='${{s3.S3_DEFAULT_BUCKET}}' \
+ S3_ACCESS_KEY_ID='${{s3.S3_ACCESS_KEY_ID}}' \
+ S3_SECRET_ACCESS_KEY='${{s3.S3_SECRET_ACCESS_KEY}}' \
+ S3_REGION='${{s3.S3_REGION}}' \
+ --service api
+lizard redeploy --service api
+```
+
+
+
+## Verwendung mit einem AWS SDK
+
+Der Endpoint ist S3-kompatibel. Setzen Sie **path-style**-Adressierung:
+
+```ts
+import { S3Client } from "@aws-sdk/client-s3";
+
+const s3 = new S3Client({
+ endpoint: process.env.S3_ENDPOINT,
+ region: process.env.S3_REGION,
+ forcePathStyle: true, // required
+ credentials: {
+ accessKeyId: process.env.S3_ACCESS_KEY_ID!,
+ secretAccessKey: process.env.S3_SECRET_ACCESS_KEY!,
+ },
+});
+```
+
+
+
+## Öffentliche Dateien
+
+Objekte in jedem **öffentlichen** Bucket werden ohne Authentifizierung auf zwei Arten bereitgestellt:
+
+1. **Gateway-URL** (im Dashboard angezeigt):
+ ```
+ https://s3-.onlizard.com///
+ ```
+2. **Plattform-Proxy** (der Dashboard-Host, mit langlebigen unveränderlichen Cache-Headern):
+ ```
+ /api/s3//public//
+ ```
+
+Alles, was in den Bucket `default` hochgeladen wird, ist sofort öffentlich verfügbar unter:
+
+```
+/api/s3//public/default/
+```
+
+
+
+## Objekte durchsuchen
+
+Öffnen Sie den **S3-Browser** im Dashboard (`lizard open`), um Objekte und Buckets hochzuladen, herunterzuladen und zu verwalten.
+
+> **Bucket-ACL-Änderungen** (einen Bucket öffentlich/privat machen) sind in der CLI noch nicht verfügbar — verwalten Sie sie im Dashboard.
+
+
+
+## Speicher erweitern
+
+```bash
+lizard scale --service s3 --storage 16384
+```
+
+
+
+## Siehe auch
+
+- [Managed Addons](/addons) — Benennung, Referenzen und die Dashboard-Browser.
+- [Service-übergreifende Referenzen](/variables/references) — Referenzsyntax und Auflösung.
diff --git a/_locales/de/agents.mdx b/_locales/de/agents.mdx
new file mode 100644
index 0000000..326e238
--- /dev/null
+++ b/_locales/de/agents.mdx
@@ -0,0 +1,90 @@
+---
+description: "Steuere Lizard über einen KI-Coding-Agenten: Lies Lizard Skill, ermittle Befehlsschemata mit --json und deploye über Lizard CLI."
+---
+
+# Coding-Agents
+
+Lizard ist so konzipiert, dass es sich von KI-Coding-Agents genauso einfach steuern lässt wie von Menschen. Die CLI enthält ein **eingebettetes Skill**, das einem Agenten die gesamte Plattform vermittelt, und jeder Befehl ist über `--json` **selbstbeschreibend**, sodass Agents nie raten müssen.
+
+
+
+## Das eingebettete Skill
+
+Die maßgebliche Nutzungsanleitung befindet sich in der CLI und ist mit ihr versioniert, sodass sie immer zur installierten Version passt. Ein Agent liest sie mit:
+
+```bash
+lizard skills get core --json
+```
+
+Dies gibt `{ name, frontmatter, content, … }` zurück — `content` ist die vollständige Anleitung (Build-Pipeline, env-Priorität, Add-ons, Discovery, Exit-Codes). Zugehörige Unterbefehle:
+
+```bash
+lizard skills list # available embedded skills
+lizard skills get core # the core guide
+lizard skills path # where skills are stored
+```
+
+Da die Anleitung mit dem Binary gebündelt ist, aktualisiert `lizard upgrade` auch die Anweisungen des Agenten.
+
+
+
+## Selbstbeschreibende Befehle
+
+Agents ermitteln die exakten Flag-Formen zur Laufzeit, statt sich auf auswendig gelernte Syntax zu verlassen:
+
+```bash
+lizard --help --json # full command tree + exit codes
+lizard --help --json # a specific command's schema
+```
+
+Siehe [JSON & Automatisierung](/cli/json).
+
+
+
+## Bootstrapping in einem Agenten
+
+Ein typischer Agent-Ablauf:
+
+1. **Anleitung laden:** `lizard skills get core --json` → `content` lesen.
+2. **Authentifizierung optimistisch prüfen:** Führe die Aufgabe des Nutzers aus; bei Exit-Code `2` führe `lizard login` aus, gib die ausgegebene URL an den Nutzer weiter und versuche es dann erneut.
+3. **Kontext vor Änderungen auflösen:** `lizard status` (cwd-Link) und `lizard ps --json` (Services).
+4. **Handeln** mithilfe der Anleitung — `add`, `up`, `secrets`, `domain` usw., immer mit `--json`.
+
+Wenn das Binary `lizard` nicht vorhanden ist, installiere es zuerst:
+
+```bash
+npm install -g @lizard-build/cli
+```
+
+
+
+## Konventionen, denen Agents folgen sollten
+
+- **Übergib bei nicht interaktiven Aufrufen immer `--json`**.
+- **Bestätige destruktive Aktionen** (Service löschen, Add-on entfernen, ein projektweites Secret überschreiben, Prod-Neustart) mit dem Nutzer — die eigenen Prompts der CLI werden nur in einer TTY ausgelöst.
+- **Beschränke Secrets standardmäßig auf den Service, der sie verwendet**; reserviere `--global` für nachweislich öffentliche Werte. Siehe [Variablen & Secrets](/variables#scoping).
+- **Schreibe Dockerfiles nicht ungefragt** — lizardpack erkennt die meisten Stacks automatisch. Versuche zuerst ein Deployment. Siehe [Build-Pipeline](/concepts/build-pipeline).
+- **Verwende `lizard up` nicht, um einen git-basierten Service auf Upload umzustellen** — verwende `service set` + `redeploy`.
+
+
+
+## Editor-Integrationen
+
+Lizard Skill wird als öffentliches Bootstrap verteilt, damit Agents in Editoren und Assistenten es bei Bedarf installieren und laden und dann dieselbe CLI steuern können, die in dieser Dokumentation beschrieben wird. Die CLI ist die einzige verlässliche Quelle — es gibt keine separate Agent-API, die man lernen muss.
+
+Das gilt auch für KI-IDEs: Sie schreiben und testen eine App, hosten sie aber nicht. Siehe [Deployment einer in Google Antigravity gebauten App](https://lizard.build/blog/google-antigravity-how-to-deploy-your-app-to-production#deploy-an-antigravity-app-to-production-without-typing-a-command), wo das gesamte Deployment mit zwei Prompts ausgeführt wird.
+
+
+
+## Siehe auch
+
+- [`lizard skills`](/cli/skills) — die vollständige Befehlsreferenz.
+- [JSON & Automatisierung](/cli/json) — Ausgabe von `--json` und Schema-Discovery.
+- [Variablen & Secrets](/variables#scoping) — Konventionen zur Secret-Begrenzung, denen Agents folgen sollten.
+- [Deploye deine App aus Claude Code](https://lizard.build/blog/deploy-from-claude-code#deploy-from-claude-code-in-3-steps) — dasselbe Bootstrap als Walkthrough, mit den Prompts, die es steuern.
+
+
+
+## Eigenen MCP-Server hosten
+
+Ein Agent, der Lizard CLI verwendet, und eine Anwendung, die MCP bereitstellt, sind getrennte Workflows. Die oben genannten CLI-Befehle stellen keinen MCP-Transport bereit. Um deinen eigenen Server mit Streamable HTTP zu deployen, folge der [Remote-MCP-Anleitung](/guides/deploy-mcp-server).
diff --git a/_locales/de/cli/_meta.ts b/_locales/de/cli/_meta.ts
new file mode 100644
index 0000000..c6332e6
--- /dev/null
+++ b/_locales/de/cli/_meta.ts
@@ -0,0 +1,46 @@
+export default {
+ index: "Übersicht",
+ json: "JSON & Automatisierung",
+ '-- auth': { type: "separator", title: "Authentifizierung & Konto" },
+ login: "login",
+ logout: "logout",
+ whoami: "whoami",
+ workspace: "workspace",
+ '-- projects': { type: "separator", title: "Projekte & Verknüpfung" },
+ init: "init",
+ link: "link",
+ unlink: "unlink",
+ status: "status",
+ project: "project",
+ config: "config",
+ '-- create': { type: "separator", title: "Dienste & Add-ons erstellen" },
+ add: "add",
+ '-- deploy': { type: "separator", title: "Deployment" },
+ up: "up",
+ redeploy: "redeploy",
+ restart: "restart",
+ '-- svc': { type: "separator", title: "Dienstkonfiguration" },
+ service: "service",
+ port: "port",
+ scale: "scale",
+ '-- secrets': { type: "separator", title: "Secrets" },
+ secrets: "secrets",
+ '-- domains': { type: "separator", title: "Domains" },
+ domain: "domain",
+ '-- observability': { type: "separator", title: "Logs, Metriken & Ereignisse" },
+ logs: "logs",
+ metrics: "metrics",
+ events: "events",
+ ps: "ps",
+ '-- running': { type: "separator", title: "Befehle ausführen" },
+ run: "run",
+ ssh: "ssh",
+ '-- github': { type: "separator", title: "GitHub" },
+ git: "git",
+ '-- misc': { type: "separator", title: "Verschiedenes" },
+ regions: "regions",
+ open: "open",
+ docs: "docs",
+ upgrade: "upgrade",
+ skills: "skills",
+};
diff --git a/_locales/de/cli/add.mdx b/_locales/de/cli/add.mdx
new file mode 100644
index 0000000..820b734
--- /dev/null
+++ b/_locales/de/cli/add.mdx
@@ -0,0 +1,76 @@
+---
+description: "lizard add erstellt einen Service aus einem GitHub-Repo, einem leeren Service oder einem verwalteten Add-on. Vollständige Flag-Referenz mit praxisnahen Beispielen."
+---
+
+# lizard add
+
+Füge dem Projekt eine Datenbank, einen Service oder ein Repo hinzu.
+
+
+
+## Verwendung
+
+```bash
+lizard add [types...] [flags]
+```
+
+## Flags
+
+| Flag | Beschreibung |
+|------|-------------|
+| `-r, --repo ` | Einen Service aus einem GitHub-Repo erstellen |
+| `-s, --service ` | Einen leeren Service erstellen |
+| `-a, --addon ` | Verwaltete Add-ons hinzufügen (`postgres` / `redis` / `s3`) |
+| `-n, --name ` | Name für `${{name.KEY}}`-Referenzen |
+| `-v, --variables ` | Eine Umgebungsvariable vorbelegen (wiederholbar) |
+| `--region ` | Region für die Bereitstellung |
+| `--no-deploy` | Repo verknüpfen, aber den ersten Build überspringen |
+| `--list` | Verfügbare Datenbanktypen anzeigen |
+
+
+
+## Beispiele
+
+
+
+### Einen Service aus einem GitHub-Repo erstellen
+
+```bash
+lizard add -r your-org/your-app
+```
+
+Dadurch wird ein Service aus `github`-Quelle erstellt, das Repo geklont, der Stack automatisch erkannt, gebaut und eine Live-URL zurückgegeben.
+
+
+
+### Add-ons bereitstellen
+
+```bash
+lizard add postgres # one addon
+lizard add postgres redis s3 # several at once
+lizard add --list # show available types
+```
+
+
+
+### Einen leeren Service erstellen
+
+```bash
+lizard add -s worker
+```
+
+
+
+### Einen Service benennen und Variablen vorbelegen
+
+```bash
+lizard add -r your-org/monorepo -n api
+```
+
+
+
+## Siehe auch
+
+- [Von GitHub deployen](/deploy/github) — Repos verbinden, privater Zugriff und automatische Neu-Bereitstellungen bei Push
+- [Managed Addons](/addons) — Bereitstellung, Benennung und Verwendung von postgres/redis/s3
+- [lizard up](/cli/up) — das aktuelle Verzeichnis hochladen und deployen, statt ein Repo zu verknüpfen
diff --git a/_locales/de/cli/config.mdx b/_locales/de/cli/config.mdx
new file mode 100644
index 0000000..dd3c9eb
--- /dev/null
+++ b/_locales/de/cli/config.mdx
@@ -0,0 +1,63 @@
+---
+description: "lizard config apply überträgt eine lizard-config.json-Datei in Ihr Projekt, mit einem --dry-run-Flag, um die Änderungen zuerst in der Vorschau anzuzeigen."
+---
+
+# lizard config
+
+Eine `lizard-config.json`-Datei auf das Projekt anwenden.
+
+
+
+## Verwendung
+
+```bash
+lizard config apply [flags]
+```
+
+
+
+## Unterbefehle
+
+### `lizard config apply`
+
+Eine `lizard-config.json`-Datei auf das Projekt anwenden.
+
+| Flag | Beschreibung |
+|------|-------------|
+| `-f, --file ` | Konfigurationsdatei (Standard: `lizard-config.json`) |
+| `--dry-run` | Zeigt, was sich ändern würde, ohne die Änderungen anzuwenden |
+
+
+
+## Beispiele
+
+
+
+### Die Standard-Konfigurationsdatei anwenden
+
+```bash
+lizard config apply
+```
+
+
+
+### Eine Konfigurationsdatei aus einem benutzerdefinierten Pfad anwenden
+
+```bash
+lizard config apply -f ./configs/prod.json
+```
+
+
+
+### Änderungen in der Vorschau anzeigen, ohne sie anzuwenden
+
+```bash
+lizard config apply --dry-run
+```
+
+
+
+## Siehe auch
+
+- [lizard service](/cli/service) — einzelne Services verwalten
+- [Architecture](/concepts/architecture) — wie Workspaces, Projekte und Services zusammenhängen
diff --git a/_locales/de/cli/docs.mdx b/_locales/de/cli/docs.mdx
new file mode 100644
index 0000000..168015b
--- /dev/null
+++ b/_locales/de/cli/docs.mdx
@@ -0,0 +1,33 @@
+---
+description: "lizard docs öffnet die Lizard-Dokumentation direkt aus dem Terminal in deinem Standardbrowser. Verwendung und Beispiele."
+---
+
+# lizard docs
+
+Öffne die Dokumentation im Browser.
+
+
+
+## Verwendung
+
+```bash
+lizard docs
+```
+
+
+
+## Beispiele
+
+
+
+### Die Dokumentationswebsite öffnen
+
+```bash
+lizard docs
+```
+
+
+
+## Siehe auch
+
+- [CLI-Referenz](/cli) — Installation, globale Flags und Exit-Codes
diff --git a/_locales/de/cli/domain.mdx b/_locales/de/cli/domain.mdx
new file mode 100644
index 0000000..b3a8250
--- /dev/null
+++ b/_locales/de/cli/domain.mdx
@@ -0,0 +1,102 @@
+---
+description: "lizard domain zeigt die Domain eines Dienstes, erzeugt eine onlizard.com-Subdomain oder hängt einen benutzerdefinierten Hostnamen an und verifiziert ihn mit automatischem TLS."
+---
+
+# lizard domain
+
+Zeigt die aktuelle Domain an oder hängt eine benutzerdefinierte an.
+
+
+
+## Verwendung
+
+```bash
+lizard domain [hostname] [flags]
+```
+
+Der Hostname ist ein Positionsargument — es gibt kein Subcommand `add`. Wenn du `lizard domain` ohne Argumente ausführst, wird die aktuelle Domain des Dienstes angezeigt.
+
+## Flags
+
+| Flag | Beschreibung |
+|------|-------------|
+| `-s, --service ` | Dienst |
+| `--port ` | Freizugebender Port |
+
+
+
+## Unterbefehle
+
+### `lizard domain generate`
+
+Erzeugt eine neue `*.onlizard.com`-Subdomain.
+
+### `lizard domain verify `
+
+Prüft den TXT-Record und aktiviert die Domain. TLS wird automatisch bereitgestellt.
+
+### `lizard domain delete `
+
+Entfernt eine Domain (Alias `rm`).
+
+| Flag | Beschreibung |
+|------|-------------|
+| `-y, --yes` | Bestätigung überspringen |
+
+
+
+## Beispiele
+
+
+
+### Aktuelle Domain anzeigen
+
+```bash
+lizard domain
+```
+
+
+
+### Eine Subdomain erzeugen
+
+```bash
+lizard domain generate
+```
+
+
+
+### Eine benutzerdefinierte Domain anhängen
+
+```bash
+lizard domain app.example.com --service web
+```
+
+Lizard gibt die zu erstellenden DNS-Records zurück (einen `CNAME` für den Hostnamen und einen `TXT`-Record zur Verifizierung). Füge sie bei deinem DNS-Anbieter hinzu und verifiziere dann:
+
+```bash
+lizard domain verify app.example.com
+```
+
+
+
+### Eine Domain an einen bestimmten Port anhängen
+
+```bash
+lizard domain app.example.com --service web --port 8080
+```
+
+
+
+### Eine Domain entfernen
+
+```bash
+lizard domain delete app.example.com
+lizard domain rm app.example.com --yes
+```
+
+
+
+## Siehe auch
+
+- [Networking](/networking) — erzeugte Domains, TLS und Worker-Dienste
+- [In Regionen bereitstellen](/deploy/regions) — Regionsauswahl für Dienste
diff --git a/_locales/de/cli/events.mdx b/_locales/de/cli/events.mdx
new file mode 100644
index 0000000..aa8d998
--- /dev/null
+++ b/_locales/de/cli/events.mdx
@@ -0,0 +1,58 @@
+---
+description: "lizard events gibt den Bereitstellen-Verlauf eines Service und den aktuellen Replikat-Status aus, mit Flags zum Begrenzen der Einträge oder zum Auswählen eines einzelnen Service."
+---
+
+# lizard events
+
+Bereitstellen-Verlauf und Replikat-Status anzeigen.
+
+
+
+## Verwendung
+
+```bash
+lizard events [flags]
+```
+
+## Flags
+
+| Flag | Beschreibung |
+|------|-------------|
+| `-n, --limit ` | Anzahl der anzuzeigenden Einträge (Standard: 10) |
+| `-s, --service ` | Ereignisse für einen bestimmten Service anzeigen |
+
+
+
+## Beispiele
+
+
+
+### Bereitstellen-Verlauf und Replikat-Status anzeigen
+
+```bash
+lizard events
+```
+
+
+
+### Ereignisse für einen bestimmten Service anzeigen
+
+```bash
+lizard events --service api
+```
+
+
+
+### Mehr Einträge anzeigen
+
+```bash
+lizard events --limit 25
+```
+
+
+
+## Siehe auch
+
+- [Events & History](/observability/events) — was die einzelnen Einträge enthalten und wie sie der Bereitstellungen-Ansicht im Dashboard entsprechen
+- [lizard ps](/cli/ps) — eine schnelle Übersicht über den Status und die URL aller Services
+- [Bereitstellungen](/concepts/deployments) — der Bereitstellen-Lebenszyklus
diff --git a/_locales/de/cli/git.mdx b/_locales/de/cli/git.mdx
new file mode 100644
index 0000000..d30dbf1
--- /dev/null
+++ b/_locales/de/cli/git.mdx
@@ -0,0 +1,80 @@
+---
+description: "lizard git verbindet die GitHub App, meldet den Repository-Status und wechselt einen Service mit einer erneuten Bereitstellung auf einen anderen Branch."
+---
+
+# lizard git
+
+Verwalte die GitHub-Verbindung für das verknüpfte Projekt und seine Services.
+
+
+
+## Verwendung
+
+```bash
+lizard git connect
+lizard git status
+lizard git checkout [flags]
+```
+
+
+
+## Unterbefehle
+
+### `lizard git connect`
+
+Verbinde die GitHub App, um auf private Repositories zuzugreifen.
+
+### `lizard git status`
+
+Zeige die GitHub-Verbindung und den Repository-Status an.
+
+### `lizard git checkout `
+
+Wechsle einen Service auf einen anderen Branch und stelle ihn erneut bereit.
+
+| Flag | Beschreibung |
+|------|-------------|
+| `--detach` | Log-Streaming überspringen |
+
+
+
+## Beispiele
+
+
+
+### GitHub App verbinden
+
+```bash
+lizard git connect
+```
+
+
+
+### Verbindungs- und Repository-Status prüfen
+
+```bash
+lizard git status
+```
+
+
+
+### Einen Service auf einen anderen Branch umstellen
+
+```bash
+lizard git checkout api staging
+```
+
+
+
+### Branches wechseln, ohne Logs zu streamen
+
+```bash
+lizard git checkout api staging --detach
+```
+
+
+
+## Siehe auch
+
+- [Von GitHub bereitstellen](/deploy/github) — ein Repository verbinden, automatische erneute Bereitstellung bei Push und Monorepo-Einrichtung
+- [lizard add](/cli/add) — einen Service aus einem GitHub-Repository erstellen
diff --git a/_locales/de/cli/index.mdx b/_locales/de/cli/index.mdx
new file mode 100644
index 0000000..d360b3b
--- /dev/null
+++ b/_locales/de/cli/index.mdx
@@ -0,0 +1,86 @@
+---
+description: "Installiere und aktualisiere die lizard CLI, authentifiziere dich und schlage globale Flags, Exit-Codes und die Laufzeit-Schema-Erkennung für jeden Befehl nach."
+---
+
+
+
+# CLI-Referenz
+
+Die `lizard` CLI ist die primäre Schnittstelle zur Plattform. Diese Seite behandelt Installation, globale Flags, Exit-Codes und Laufzeit-Erkennung. Jeder Befehl hat seine eigene Referenzseite in der Seitenleiste — siehe [`lizard up`](/cli/up), [`lizard service`](/cli/service), [`lizard secrets`](/cli/secrets) und die übrigen.
+
+> Referenz generiert für CLI **v0.3.62**. Führe `lizard --help --json` aus, um das exakte, versionspassende Schema eines beliebigen Befehls zu sehen.
+
+
+
+## Installation & Aktualisierung
+
+```bash
+npm install -g @lizard-build/cli
+lizard --version
+lizard upgrade # update to the latest version
+lizard upgrade --check # check without installing
+```
+
+Verwende immer die global installierte `lizard`-Binärdatei — **nicht** `npx`. Hinweise zur Behebung von Berechtigungsfehlern findest du unter [Quickstart](/getting-started#1-install-the-cli).
+
+
+
+## Authentifizierung
+
+```bash
+lizard login # browser OAuth
+lizard login --token lzd_xxx # token auth
+lizard logout
+lizard whoami # current user, workspace, linked project
+```
+
+In CI solltest du `LIZARD_TOKEN` in der Umgebung setzen, statt `login` auszuführen.
+
+
+
+## Globale Flags
+
+| Flag | Beschreibung |
+|------|-------------|
+| `-V, --version` | CLI-Version ausgeben |
+| `--json` | Maschinell lesbare Ausgabe. Mit `--help` kombinieren, um das Schema eines Befehls auszugeben |
+
+Die meisten Befehle akzeptieren außerdem `-p, --project`, `-s, --service` und `-w, --workspace`, um statt der verknüpften Ressource eine bestimmte Ressource anzusteuern.
+
+## Exit-Codes
+
+| Code | Bedeutung | Was zu tun ist |
+|------|---------|------------|
+| `0` | Erfolg | fortfahren |
+| `1` | allgemeiner Fehler | Nachricht lesen |
+| `2` | Authentifizierung (401/403) | `lizard login` ausführen |
+| `3` | nicht gefunden (404) | Namen mit `lizard ps` / `lizard project list` prüfen |
+| `4` | Zeitüberschreitung (408/504) | erneut versuchen |
+| `5` | vom Benutzer abgebrochen | stoppen |
+
+
+
+## Laufzeit-Erkennung
+
+Die CLI dokumentiert sich selbst. Um den vollständigen Befehlsbaum, globale Flags und Exit-Codes anzuzeigen:
+
+```bash
+lizard --help --json
+```
+
+Für die exakten Argumente und Optionen eines beliebigen Befehls oder Unterbefehls:
+
+```bash
+lizard --help --json
+lizard --help --json # e.g. lizard service set --help --json
+```
+
+Das entspricht immer deiner installierten Version — ziehe es Vermutungen über Flag-Formen vor. So lernt auch ein Agent die CLI kennen, ohne darauf trainiert worden zu sein: siehe [Deployment aus Claude Code](https://lizard.build/blog/deploy-from-claude-code).
+
+
+
+## Konfiguration & Status
+
+- Die CLI speichert Authentifizierung und die Projektverknüpfung des aktuellen Verzeichnisses in `~/.lizard/config.json`.
+- `lizard status` zeigt die Workspace-/Projekt-/Service-Verknüpfung des cwd an (keine Authentifizierung erforderlich).
+- `lizard config apply` wendet eine `lizard-config.json`-Datei auf ein Projekt an (verwende `--dry-run` für eine Vorschau).
diff --git a/_locales/de/cli/init.mdx b/_locales/de/cli/init.mdx
new file mode 100644
index 0000000..022ee75
--- /dev/null
+++ b/_locales/de/cli/init.mdx
@@ -0,0 +1,64 @@
+---
+description: "lizard init erstellt oder wählt ein Projekt aus und verknüpft es mit dem aktuellen Verzeichnis, einschließlich der expliziten Form, die Sie in CI benötigen."
+---
+
+# lizard init
+
+Erstellen oder wählen Sie ein Projekt aus und verknüpfen Sie es mit dem aktuellen Verzeichnis.
+
+
+
+## Verwendung
+
+```bash
+lizard init [flags]
+```
+
+## Flags
+
+| Flag | Beschreibung |
+|------|-------------|
+| `-n, --name ` | Projektname (wird erstellt, falls nicht vorhanden) |
+| `-w, --workspace ` | Workspace-ID, Slug oder Name |
+| `--force` | Erneut verknüpfen, auch wenn bereits verknüpft |
+
+
+
+## Beispiele
+
+
+
+### Das aktuelle Verzeichnis interaktiv verknüpfen
+
+```bash
+lizard init
+```
+
+
+
+### In CI explizit verknüpfen
+
+`lizard up` führt `init` für Sie in einem TTY aus, aber in einer Nicht-TTY-Umgebung (CI) gibt es einen Fehler aus, statt stillschweigend ein Projekt zu erstellen. Verknüpfen Sie es zuerst explizit:
+
+```bash
+export LIZARD_TOKEN=lzd_xxx
+lizard init --name my-project
+lizard up --ci --service api
+```
+
+
+
+### Ein Verzeichnis erneut verknüpfen, das bereits verknüpft ist
+
+```bash
+lizard init --name my-project --force
+```
+
+
+
+## Siehe auch
+
+- [lizard link](/cli/link) — das aktuelle Verzeichnis mit einem vorhandenen Projekt verknüpfen, statt eines zu erstellen
+- [lizard status](/cli/status) — den verknüpften Workspace, das Projekt und den Service für das aktuelle Verzeichnis anzeigen
+- [lizard up](/cli/up) — das aktuelle Verzeichnis hochladen und bereitstellen
+- [Core Konzepte](/concepts/architecture) — Projekte, Services und die Build-Pipeline
diff --git a/_locales/de/cli/json.mdx b/_locales/de/cli/json.mdx
new file mode 100644
index 0000000..77bf2ec
--- /dev/null
+++ b/_locales/de/cli/json.mdx
@@ -0,0 +1,90 @@
+---
+description: "Skripte die lizard CLI: --json bei jedem Befehl, zeilengetrennte Ereignisse für Streaming-Builds, Schema-Erkennung und Token-Authentifizierung in CI."
+---
+
+
+
+# JSON & Automatisierung
+
+Die CLI ist dafür gemacht, per Skript gesteuert zu werden. Übergebe `--json` für maschinenlesbare Ausgabe, nutze sie in CI mit einem Token und ermittle das Schema jedes Befehls zur Laufzeit.
+
+Der andere Empfänger dieser Ausgabe ist ein KI-Coding-Agent — [Deployment aus Claude Code](https://lizard.build/blog/deploy-from-claude-code#how-lizard-handles-claude-code-deployment) zeigt, was er mit dem JSON eines fehlgeschlagenen Builds macht.
+
+
+
+## `--json` überall
+
+Füge `--json` zu jedem Befehl hinzu, um strukturierte Ausgabe zu erhalten. Die CLI schaltet auch automatisch auf JSON um, wenn stdout kein TTY ist.
+
+```bash
+lizard ps --json
+lizard secrets list --json
+lizard metrics --json
+```
+
+
+
+### Streaming-Befehle
+
+Bei Streaming-Befehlen (`lizard up` ohne `--detach`) gibt `--json` **pro Zeile genau ein JSON-Objekt** aus:
+
+```json
+{ "event": "log", "line": "Step 1/8 : FROM node:20" }
+{ "event": "log", "line": "..." }
+{ "event": "deployed", "status": "running", "url": "https://app.onlizard.com" }
+```
+
+Der Stream endet mit `done` oder `error` / `failed`. `lizard up` gibt zusätzlich ein abschließendes Ereignis `deployed` / `failed` / `deploying` mit `status` und `url` aus (dies kann `null` sein).
+
+
+
+### `logs --json` ist eine Momentaufnahme, kein Stream
+
+`lizard logs --json` gibt die **letzten 200 Zeilen** zurück (überschreibbar mit `--tail N`, maximal 1000) und beendet sich dann. Warte nicht darauf, wenn du weitere Ausgabe erwartest. Für einen bestimmten Vorfall verwende `--restart latest` oder `--restart `.
+
+
+
+## Schema-Erkennung
+
+Gib die exakten Argumente, Optionen und Exit-Codes eines beliebigen Befehls aus:
+
+```bash
+lizard --help --json # whole tree + global flags + exit codes
+lizard service set --help --json # one command
+```
+
+Die Form der Antwort ist `{ cli, version, command: { arguments, options, subcommands }, globalOptions, exitCodes }`. Da sie aus deiner installierten Binärdatei erzeugt wird, passt sie immer zu deiner Version — ziehe sie fest codierten Flags vor.
+
+
+
+## CI / Headless-Nutzung
+
+Authentifiziere dich mit einem Token und verknüpfe das Projekt explizit (headless `up` erstellt kein Projekt automatisch):
+
+```bash
+# Set LIZARD_TOKEN through your CI secret store.
+lizard init --name my-project
+lizard up --ci --service api --detach
+```
+
+Prüfe Exit-Codes, um deine Pipeline zu verzweigen:
+
+| Code | Bedeutung |
+|------|---------|
+| `0` | erfolgreich |
+| `1` | allgemeiner Fehler |
+| `2` | Authentifizierung — Token fehlt/abgelaufen |
+| `3` | nicht gefunden |
+| `4` | Zeitüberschreitung |
+| `5` | abgebrochen |
+
+```bash
+if lizard redeploy --service api --json; then
+ echo "Deploy succeeded"
+else
+ status=$?
+ echo "Deploy failed with code $status" >&2
+ lizard logs --build --json || true
+ exit "$status"
+fi
+```
diff --git a/_locales/de/cli/link.mdx b/_locales/de/cli/link.mdx
new file mode 100644
index 0000000..a5f70de
--- /dev/null
+++ b/_locales/de/cli/link.mdx
@@ -0,0 +1,60 @@
+---
+description: "lizard link verknüpft das aktuelle Verzeichnis mit einem bestehenden Projekt und optional mit einem bestimmten Service oder Workspace."
+---
+
+# lizard link
+
+Verknüpfen Sie das aktuelle Verzeichnis mit einem bestehenden Projekt (und optional mit einem Service).
+
+
+
+## Verwendung
+
+```bash
+lizard link [service] [flags]
+```
+
+## Flags
+
+| Flag | Beschreibung |
+|------|-------------|
+| `-p, --project ` | Projektname, Slug oder ID |
+| `-s, --service ` | Zu verknüpfender Service |
+| `-w, --workspace ` | Workspace |
+
+
+
+## Beispiele
+
+
+
+### Mit einem bestehenden Projekt verknüpfen
+
+```bash
+lizard link --project my-project
+```
+
+
+
+### Mit einem Projekt und einem bestimmten Service verknüpfen
+
+```bash
+lizard link my-service --project my-project
+```
+
+
+
+### Innerhalb eines bestimmten Workspace verknüpfen
+
+```bash
+lizard link --project my-project --workspace my-workspace
+```
+
+
+
+## Siehe auch
+
+- [lizard init](/cli/init) — Projekt erstellen oder auswählen und es in einem Schritt verknüpfen
+- [lizard unlink](/cli/unlink) — die Verknüpfung aus dem aktuellen Verzeichnis entfernen
+- [lizard status](/cli/status) — den verknüpften Workspace, das Projekt und den Service anzeigen
+- [Architecture: Projekt](/concepts/architecture) — wie die Verknüpfung von Verzeichnis zu Projekt funktioniert
diff --git a/_locales/de/cli/login.mdx b/_locales/de/cli/login.mdx
new file mode 100644
index 0000000..e48d5f2
--- /dev/null
+++ b/_locales/de/cli/login.mdx
@@ -0,0 +1,61 @@
+---
+description: "lizard login authentifiziert über deinen Browser oder ein API-Token sowie die nicht-interaktive Authentifizierung in CI mit LIZARD_TOKEN."
+---
+
+# lizard login
+
+Bei Lizard anmelden.
+
+
+
+## Verwendung
+
+```bash
+lizard login [flags]
+```
+
+Standardmäßig öffnet dies deinen Browser für die Authentifizierung per OAuth und kehrt nach der Bestätigung in dein Terminal zurück.
+
+## Flags
+
+| Flag | Beschreibung |
+|------|-------------|
+| `--token ` | Mit einem API-Token authentifizieren |
+
+
+
+## Beispiele
+
+
+
+### Über den Browser anmelden
+
+```bash
+lizard login
+```
+
+
+
+### Mit einem Token anmelden
+
+```bash
+lizard login --token lzd_xxx
+```
+
+
+
+### In CI nicht-interaktiv anmelden
+
+In CI oder anderen nicht-interaktiven Umgebungen setze `LIZARD_TOKEN` als Umgebungsvariable, statt `login` auszuführen:
+
+```bash
+export LIZARD_TOKEN=lzd_xxx
+```
+
+
+
+## Siehe auch
+
+- [lizard logout](/cli/logout) — abmelden
+- [lizard whoami](/cli/whoami) — aktuellen Benutzer, aktiven Workspace und verknüpftes Projekt anzeigen
+- [CLI reference](/cli) — globale Flags, Exit-Codes und Überblick über die Authentifizierung
diff --git a/_locales/de/cli/logout.mdx b/_locales/de/cli/logout.mdx
new file mode 100644
index 0000000..207e1c4
--- /dev/null
+++ b/_locales/de/cli/logout.mdx
@@ -0,0 +1,22 @@
+---
+description: "lizard logout meldet dich aus der Lizard CLI ab und löscht die auf diesem Rechner gespeicherten Anmeldedaten. Melde dich mit lizard login wieder an."
+---
+
+# lizard logout
+
+Abmelden.
+
+
+
+## Verwendung
+
+```bash
+lizard logout
+```
+
+
+
+## Siehe auch
+
+- [lizard login](/cli/login) — bei Lizard authentifizieren
+- [lizard whoami](/cli/whoami) — den aktuellen Benutzer, den aktiven Workspace und das verknüpfte Projekt anzeigen
diff --git a/_locales/de/cli/logs.mdx b/_locales/de/cli/logs.mdx
new file mode 100644
index 0000000..8b88099
--- /dev/null
+++ b/_locales/de/cli/logs.mdx
@@ -0,0 +1,91 @@
+---
+description: "lizard logs streamt die Laufzeit-Logs eines Service oder ruft Build-Logs, Neustart-Logs und gefilterten Verlauf mit --build, --tail und --level ab."
+---
+
+# lizard logs
+
+Streamt die Laufzeit-Logs eines Service, die letzten 200 Zeilen gefolgt von einem Live-Tail.
+
+
+
+## Verwendung
+
+```bash
+lizard logs [flags]
+```
+
+## Flags
+
+| Flag | Beschreibung |
+|------|-------------|
+| `--build` | Stattdessen Build-Logs anzeigen |
+| `--tail ` | Letzte N Zeilen (max. 1000) |
+| `-l, --level ` | Nach Level filtern |
+| `--restarts [n]` | Kürzliche Neustarts auflisten |
+| `--restart ` | Logs rund um einen bestimmten Neustart (`latest` für den neuesten) |
+| `-s, --service ` | Service |
+
+Mit `--json` ist `lizard logs` kein Stream — es gibt die letzten 200 Zeilen zurück (mit `--tail N` überschreibbar, max. 1000) und beendet sich. Verwende das für Snapshots und Skripting; live streamen nur ohne `--json`.
+
+
+
+## Beispiele
+
+
+
+### Laufzeit-Logs tailen
+
+```bash
+lizard logs
+```
+
+
+
+### Logs für einen bestimmten Service tailen
+
+```bash
+lizard logs --service api
+```
+
+
+
+### Mehr Verlauf abrufen
+
+```bash
+lizard logs --tail 1000
+```
+
+
+
+### Nach Log-Level filtern
+
+```bash
+lizard logs --level error
+```
+
+
+
+### Den neuesten Build prüfen
+
+```bash
+lizard logs --build
+```
+
+
+
+### Einen Absturz oder Neustart untersuchen
+
+```bash
+lizard logs --restarts
+lizard logs --restart latest
+lizard logs --restart
+```
+
+
+
+## Siehe auch
+
+- [Logs](/observability/logs) — Verhalten von Laufzeit-, Build- und Neustart-Logs sowie Blättern durch den Verlauf mit `lizard service logs`
+- [Incomplete Dockerfile](/deploy/troubleshooting/incomplete-dockerfile) — Diagnose eines fehlgeschlagenen Builds aus `lizard logs --build`
+- [lizard events](/cli/events) — Bereitstellen-Verlauf und Replikat-Status
+- [Von Claude Code bereitstellen](https://lizard.build/blog/deploy-from-claude-code#how-lizard-handles-claude-code-deployment) — die Schleife aus Logs lesen, beheben und erneut deployen, die ein Agent bei einem fehlgeschlagenen Build ausführt
diff --git a/_locales/de/cli/metrics.mdx b/_locales/de/cli/metrics.mdx
new file mode 100644
index 0000000..f3bd4ef
--- /dev/null
+++ b/_locales/de/cli/metrics.mdx
@@ -0,0 +1,66 @@
+---
+description: "lizard metrics zeigt CPU, Arbeitsspeicher, Netzwerk und Festplatte für einen Service an, mit einer Live-Ansicht per --watch und optionalen Kostenangaben."
+---
+
+# lizard metrics
+
+CPU / Arbeitsspeicher / Netzwerk / Festplatte und Kosten anzeigen.
+
+
+
+## Verwendung
+
+```bash
+lizard metrics [flags]
+```
+
+## Flags
+
+| Flag | Beschreibung |
+|------|-------------|
+| `-r, --range ` | Zeitfenster |
+| `-w, --watch` | Live-Aktualisierung |
+| `--cost` | Kosten einschließen |
+
+
+
+## Beispiele
+
+
+
+### Metriken für den aktuellen Service anzeigen
+
+```bash
+lizard metrics
+```
+
+
+
+### Metriken für einen bestimmten Service anzeigen
+
+```bash
+lizard metrics --service api
+```
+
+
+
+### Metriken live beobachten
+
+```bash
+lizard metrics --watch
+```
+
+
+
+### Kosten einschließen
+
+```bash
+lizard metrics --cost
+```
+
+
+
+## Siehe auch
+
+- [Metriken & Kosten](/observability/metrics) — Dashboard-Ansichten und auf Nutzung reagieren
+- [Skalierung](/deploy/scaling) — Größe anpassen oder Replikate als Reaktion auf Metriken hinzufügen
diff --git a/_locales/de/cli/open.mdx b/_locales/de/cli/open.mdx
new file mode 100644
index 0000000..f30caa0
--- /dev/null
+++ b/_locales/de/cli/open.mdx
@@ -0,0 +1,34 @@
+---
+description: "lizard open startet das Dashboard des aktuellen Projekts in deinem Browser, den visuellen Begleiter zur CLI."
+---
+
+# lizard open
+
+Projekt im Browser öffnen.
+
+
+
+## Verwendung
+
+```bash
+lizard open
+```
+
+
+
+## Beispiele
+
+
+
+### Dashboard des aktuellen Projekts öffnen
+
+```bash
+lizard open
+```
+
+
+
+## Siehe auch
+
+- [Dashboard](/dashboard) — der visuelle Begleiter zur CLI, den dieser Befehl öffnet
+- [Eine Antigravity-App in die Produktion deployen](https://lizard.build/blog/google-antigravity-how-to-deploy-your-app-to-production#deploy-an-antigravity-app-to-production-without-typing-a-command) — dabei zusehen, wie ein agentengesteuertes Deployment ankommt, ohne selbst einen Befehl einzugeben
diff --git a/_locales/de/cli/port.mdx b/_locales/de/cli/port.mdx
new file mode 100644
index 0000000..8ae0423
--- /dev/null
+++ b/_locales/de/cli/port.mdx
@@ -0,0 +1,57 @@
+---
+description: "lizard port zeigt den Container-Port eines Service an oder ändert ihn. Wenn du ihn auf 0 setzt, wechselt der Service in den Worker-Modus ohne eingehendes Routing."
+---
+
+# lizard port
+
+Zeigt den Container-Port eines Service an oder ändert ihn. Ohne Argument wird der aktuelle Port ausgegeben (`worker mode`, wenn er `0` ist).
+
+
+
+## Verwendung
+
+```bash
+lizard port [value] [flags]
+```
+
+## Flags
+
+| Flag | Beschreibung |
+|------|-------------|
+| `-s, --service ` | Ziel-Service |
+
+
+
+## Beispiele
+
+
+
+### Den aktuellen Port anzeigen
+
+```bash
+lizard port
+```
+
+
+
+### Den Port für einen bestimmten Service festlegen
+
+```bash
+lizard port 0 -s worker
+```
+
+
+
+### Den Port eines Worker-Service prüfen
+
+```bash
+lizard port --service worker
+```
+
+
+
+## Siehe auch
+
+- [Background workers](/deploy/workers) — setze den Port auf `0`, um einen Service ohne eingehendes Routing auszuführen
+- [lizard service](/cli/service) — den Rest der Konfiguration eines Service verwalten
+- [Was eine Python-App vom Host braucht](https://lizard.build/blog/python-app-hosting#what-a-python-app-actually-needs-from-a-host) — warum ein `gunicorn`- oder `uvicorn`-Prozess `$PORT` an `0.0.0.0` binden muss
diff --git a/_locales/de/cli/project.mdx b/_locales/de/cli/project.mdx
new file mode 100644
index 0000000..604685c
--- /dev/null
+++ b/_locales/de/cli/project.mdx
@@ -0,0 +1,56 @@
+---
+description: "lizard project listet die Projekte in Ihrem Workspace auf oder erstellt ein neues, mit Beispielen für beide Unterbefehle."
+---
+
+# lizard project
+
+Projekte in einem Workspace auflisten oder erstellen.
+
+
+
+## Verwendung
+
+```bash
+lizard project list
+lizard project create
+```
+
+
+
+## Unterbefehle
+
+### `lizard project list`
+
+Alle Projekte im Workspace auflisten.
+
+### `lizard project create`
+
+Ein neues Projekt erstellen.
+
+
+
+## Beispiele
+
+
+
+### Projekte im Workspace auflisten
+
+```bash
+lizard project list
+```
+
+
+
+### Ein neues Projekt erstellen
+
+```bash
+lizard project create
+```
+
+
+
+## Siehe auch
+
+- [lizard init](/cli/init) — ein Projekt erstellen oder auswählen und mit dem aktuellen Verzeichnis verknüpfen
+- [lizard link](/cli/link) — das aktuelle Verzeichnis einem vorhandenen Projekt zuordnen
+- [Architecture](/concepts/architecture) — wie Projekte mit Workspaces und Services zusammenhängen
diff --git a/_locales/de/cli/ps.mdx b/_locales/de/cli/ps.mdx
new file mode 100644
index 0000000..9750432
--- /dev/null
+++ b/_locales/de/cli/ps.mdx
@@ -0,0 +1,34 @@
+---
+description: "lizard ps listet jeden Service im verknüpften Projekt mit seinem Status und seiner Live-URL auf, eine schnelle Übersicht darüber, was läuft."
+---
+
+# lizard ps
+
+Alle Services im Projekt mit Status und URL auflisten.
+
+
+
+## Verwendung
+
+```bash
+lizard ps
+```
+
+
+
+## Beispiele
+
+
+
+### Services im verknüpften Projekt auflisten
+
+```bash
+lizard ps
+```
+
+
+
+## Siehe auch
+
+- [lizard status](/cli/status) — den verknüpften Workspace, das Projekt und den Service für das aktuelle Verzeichnis anzeigen
+- [lizard events](/cli/events) — Deployment-Verlauf und Replikatstatus anzeigen
diff --git a/_locales/de/cli/redeploy.mdx b/_locales/de/cli/redeploy.mdx
new file mode 100644
index 0000000..619b9e8
--- /dev/null
+++ b/_locales/de/cli/redeploy.mdx
@@ -0,0 +1,67 @@
+---
+description: "lizard redeploy löst einen frischen Build aus dem neuesten Commit oder Upload mit den aktuellen Variablen aus und streamt Logs, außer wenn du --detach übergibst."
+---
+
+# lizard redeploy
+
+Löst einen frischen Build aus (neuester Commit / letzter Upload) mit den aktuellen Variablen.
+
+
+
+## Verwendung
+
+```bash
+lizard redeploy [nameOrId] [flags]
+```
+
+## Flags
+
+| Flag | Beschreibung |
+|------|--------------|
+| `-s, --service ` | Service |
+| `--detach` | Gibt zurück, nachdem der Build akzeptiert wurde |
+| `--wait` | Wartet auf den Build und die Bereitstellung der Deployment-Readiness; funktioniert mit `--json` |
+| `--timeout ` | Zeitbudget für das Warten auf Readiness nach dem Build; Standard `120` |
+| `--json` | Gibt JSON für Skripte zurück |
+
+
+
+## Beispiele
+
+
+
+### Service neu bauen und erneut deployen
+
+```bash
+lizard redeploy --service api
+```
+
+
+
+### Erneut deployen, ohne Logs zu streamen
+
+```bash
+lizard redeploy --service api --detach
+```
+
+
+
+### In einem Skript warten
+
+Erfordert CLI 0.3.94 oder neuer. Verwende 0.3.95 oder neuer für Worker ohne HTTP.
+
+```bash
+lizard --json redeploy --service api --wait --timeout 120
+```
+
+Ohne `--wait` gibt der JSON-Modus zurück, nachdem die Build-Anfrage akzeptiert wurde. Mit `--wait` verfolgt die CLI diesen Build und wartet dann auf die Deployment-Readiness. Das JSON-Ergebnis enthält `buildId`, `ok` und `status`. Ein fehlgeschlagener Build, eine fehlgeschlagene Readiness-Prüfung oder ein Timeout liefern einen Exit-Code ungleich null zurück.
+
+Das Timeout gilt für die Readiness, nachdem der Build abgeschlossen ist; es begrenzt nicht die Build-Dauer und bricht das Deployment nicht ab. Worker mit `containerPort=0` verwenden den Readiness-Status aus dem Backend ohne HTTP-Prüfung. Prüfe nach einem erfolgreichen Befehl einen Anwendungsendpunkt oder gespeicherte Daten, wenn dein Workflow das Anwendungsverhalten verifizieren muss.
+
+
+
+## Siehe auch
+
+- [lizard restart](/cli/restart) — Rolling-Restart des aktuellen Builds, kein Neubau
+- [lizard up](/cli/up) — lädt das aktuelle Verzeichnis hoch und deployt es
+- [Bereitstellungen](/concepts/deployments) — wie Deploys, Neustarts und Rebuilds funktionieren
diff --git a/_locales/de/cli/regions.mdx b/_locales/de/cli/regions.mdx
new file mode 100644
index 0000000..29e3a1f
--- /dev/null
+++ b/_locales/de/cli/regions.mdx
@@ -0,0 +1,62 @@
+---
+description: "lizard regions listet die für Ihr Konto verfügbaren Regionen auf und zeigt, wie Sie --region beim Erstellen eines Service oder Add-ons übergeben."
+---
+
+# lizard regions
+
+Verfügbare Regionen auflisten.
+
+
+
+## Verwendung
+
+```bash
+lizard regions [flags]
+```
+
+## Flags
+
+| Flag | Beschreibung |
+|------|-------------|
+| `--json` | Als JSON ausgeben |
+
+
+
+## Beispiele
+
+
+
+### Verfügbare Regionen auflisten
+
+```bash
+lizard regions
+```
+
+
+
+### Regionen als JSON auflisten
+
+```bash
+lizard regions --json
+```
+
+
+
+### Beim Erstellen eines Service oder Add-ons eine Region auswählen
+
+Übergeben Sie `--region ` an `lizard add` oder `lizard up`:
+
+```bash
+lizard add -r your-org/your-app --region
+lizard add postgres --region
+lizard up --region
+```
+
+Wenn Sie keine Region angeben, verwendet die Plattform den Standard des Projekts.
+
+
+
+## Siehe auch
+
+- [Regionen](/deploy/regions) — Regionsauswahl, Co-Location und generierte Domains
+- [`lizard add`](/cli/add) — einen Service, ein Repo oder ein Add-on mit `--region` hinzufügen
diff --git a/_locales/de/cli/restart.mdx b/_locales/de/cli/restart.mdx
new file mode 100644
index 0000000..44cbf64
--- /dev/null
+++ b/_locales/de/cli/restart.mdx
@@ -0,0 +1,73 @@
+---
+description: "lizard restart führt einen Rolling-Restart des aktuellen Builds eines Dienstes ohne Rebuild aus und ist nützlich, um sich von einem Absturz zu erholen."
+---
+
+# lizard restart
+
+Rolling-Restart des aktuellen Builds — kein Rebuild.
+
+
+
+## Verwendung
+
+```bash
+lizard restart [nameOrId] [flags]
+```
+
+## Flags
+
+| Flag | Beschreibung |
+|------|--------------|
+| `-s, --service ` | Dienst |
+| `--detach` | Nach Annahme des Restarts zurückkehren |
+| `--wait` | Warten, bis der neue Restart-Versuch bereit ist; funktioniert mit `--json` |
+| `--timeout ` | Wartebudget für Bereitschaft mit `--wait`; Standard `120` |
+| `--json` | JSON für Skripte zurückgeben |
+
+
+
+## Beispiele
+
+
+
+### Einen Dienst neu starten
+
+```bash
+lizard restart --service api
+```
+
+
+
+### Neustart ohne Streaming-Logs
+
+```bash
+lizard restart --service api --detach
+```
+
+
+
+### Vor der nächsten Prüfung warten
+
+Erfordert CLI 0.3.94 oder neuer. Verwende 0.3.95 oder neuer für Worker ohne HTTP.
+
+```bash
+lizard --json restart --service api --wait --timeout 120
+```
+
+Ohne `--wait` gibt der JSON-Modus nach Annahme des Restarts zurück. Mit `--wait` enthält das Ergebnis `ok`, `status`, `attemptId` und `waitedMs`. Die CLI wartet auf einen neuen Restart-Versuch, daher zählt ein unveränderter Status von vor der Anfrage nicht als Erfolg. Ein fehlgeschlagenes Warten oder ein Timeout liefert einen Exit-Code ungleich null zurück.
+
+Bei HTTP-Diensten prüft die CLI zusätzlich die Dienst-Domain zweimal. Worker mit `containerPort=0` verwenden den Bereitschaftsstatus aus dem Backend und benötigen keinen HTTP-Listener, selbst wenn sie eine generierte Domain haben.
+
+```bash
+lizard --json restart --service worker --wait --timeout 60
+```
+
+Das Timeout gilt für das Warten auf Bereitschaft nach der Restart-Anfrage. Es bricht den Restart nicht ab, und Netzwerkaufrufe können dazu führen, dass der gesamte Befehl länger dauert. Prüfe nach dem Befehl Anwendungsdaten oder einen Health-Endpunkt, wenn dein Workflow mehr als Prozessbereitschaft benötigt.
+
+
+
+## Siehe auch
+
+- [lizard redeploy](/cli/redeploy) — einen frischen Build auslösen, statt den aktuellen wiederzuverwenden
+- [lizard logs](/cli/logs) — Logs rund um einen Restart mit `--restart latest` oder `--restart ` prüfen
+- [Bereitstellungen](/concepts/deployments) — Restarts vs. Redeploys und Wiederherstellung nach einem Absturz
diff --git a/_locales/de/cli/run.mdx b/_locales/de/cli/run.mdx
new file mode 100644
index 0000000..a5aeba4
--- /dev/null
+++ b/_locales/de/cli/run.mdx
@@ -0,0 +1,61 @@
+---
+description: "lizard run führt einen Befehl auf deinem Rechner mit eingefügten Projekt- und Service-Geheimnissen eines Service aus. Enthält auch, wann du stattdessen ssh verwenden solltest."
+---
+
+# lizard run
+
+Führe einen Befehl lokal mit eingefügten Projekt- und Service-Geheimnissen aus.
+
+## run vs. ssh
+
+Mit zwei Befehlen kannst du Befehle im Kontext eines Service ausführen. Sie laufen an unterschiedlichen Orten — du solltest wissen, welchen du brauchst.
+
+| Befehl | Wird ausgeführt in | Verwenden für |
+|---------|-----------|---------|
+| `lizard run` | Lokal, mit eingefügten Projekt- und Service-Geheimnissen des Service | Migrationen, Seed-Skripte, lokale Tools, die eine Produktionskonfiguration brauchen |
+| `lizard ssh` | Innerhalb des laufenden Service-Containers | Den Live-Container untersuchen, einmalige Remote-Befehle, Debugging |
+
+`lizard run` zeigt deine lokal eingefügte Kopie der Umgebung an, die normalerweise mit dem übereinstimmt, was die laufende App sieht — aber `lizard ssh` ist für den Live-Container maßgeblich. Um zu prüfen, was die laufende App tatsächlich sieht, verwende stattdessen `lizard ssh`.
+
+
+
+## Verwendung
+
+```bash
+lizard run [flags] --
+```
+
+## Flags
+
+| Flag | Beschreibung |
+|------|-------------|
+| `-s, --service ` | Service, dessen env eingefügt werden soll |
+| `--no-service` | Service-env nicht einfügen |
+
+
+
+## Beispiele
+
+
+
+### Eine Migration mit eingefügten Service-Geheimnissen ausführen
+
+```bash
+lizard run --service api -- node scripts/migrate.js
+```
+
+
+
+### Eine eingefügte Umgebungsvariable ausgeben
+
+```bash
+lizard run --service api -- printenv DATABASE_URL
+```
+
+
+
+## Siehe auch
+
+- [lizard ssh](/cli/ssh) — einen Befehl innerhalb des laufenden Service-Containers statt lokal ausführen
+- [Variablen](/variables) — wie Projekt- und Service-Variablen definiert und referenziert werden
+- [Python-App-Hosting](https://lizard.build/blog/python-app-hosting) — `manage.py` und andere Framework-Tools gegen eine bereitgestellte Datenbank ausführen
diff --git a/_locales/de/cli/scale.mdx b/_locales/de/cli/scale.mdx
new file mode 100644
index 0000000..c113594
--- /dev/null
+++ b/_locales/de/cli/scale.mdx
@@ -0,0 +1,65 @@
+---
+description: "lizard scale ändert die Replikas, CPU und den Arbeitsspeicher eines Service und vergrößert den Add-on-Speicher. Zulässige Werte und Beispiele für jedes Flag."
+---
+
+# lizard scale
+
+Skaliert einen Service (Replikas / CPU / Arbeitsspeicher / Speicher).
+
+
+
+## Verwendung
+
+```bash
+lizard scale [flags]
+```
+
+## Flags
+
+| Flag | Beschreibung |
+|------|-------------|
+| `--replicas ` | Replikas `1`–`10` (Apps) |
+| `--cpu ` | `1`, `2`, `3` oder `4` |
+| `--memory ` | `128`–`8192` MB |
+| `--storage ` | Größe des Add-on-Volumes, nur vergrößerbar |
+
+
+
+## Beispiele
+
+
+
+### Replikas horizontal skalieren
+
+```bash
+lizard scale --service api --replicas 5
+```
+
+Jede Replika ist ein eigener Pod hinter dem Load Balancer. Stelle sicher, dass deine App zustandslos ist, damit Replikas austauschbar sind.
+
+
+
+### CPU und Arbeitsspeicher vertikal skalieren
+
+```bash
+lizard scale --service api --cpu 4 --memory 8192
+```
+
+
+
+### Add-on-Speicher vergrößern
+
+```bash
+lizard scale --service postgres --storage 8192
+```
+
+Daten-Volumes von Addons sind nur vergrößerbar — du kannst den Speicher erhöhen, aber nicht verkleinern.
+
+
+
+## Siehe auch
+
+- [Scaling](/deploy/scaling) — horizontale vs. vertikale Skalierung und Vergrößern des Add-on-Speichers
+- [lizard metrics](/cli/metrics) — CPU / Arbeitsspeicher / Netzwerk / Festplatte vor und nach der Skalierung prüfen
+- [lizard ps](/cli/ps) — Replika-Status nach einer Skalierungsänderung prüfen
+- [Observability → Metrics](/observability/metrics) — Ressourcen- und Kostenüberwachung
diff --git a/_locales/de/cli/secrets.mdx b/_locales/de/cli/secrets.mdx
new file mode 100644
index 0000000..2c9baac
--- /dev/null
+++ b/_locales/de/cli/secrets.mdx
@@ -0,0 +1,100 @@
+---
+description: "lizard secrets setzt, listet, löscht und importiert Umgebungsvariablen auf Service- oder Projektebene, einschließlich dotenv-Import von stdin."
+---
+
+# lizard secrets
+
+Verwalte die Secrets (Umgebungsvariablen) eines Projekts oder Services.
+
+
+
+## Verwendung
+
+```bash
+lizard secrets [args] [flags]
+```
+
+
+
+## Unterbefehle
+
+### `lizard secrets set ...`
+
+Setzt ein oder mehrere Secrets (variadisch). Der Standardbereich ist der Service; `--global` zielt auf das Projekt.
+
+| Flag | Beschreibung |
+|------|-------------|
+| `--global` | Projektbereich |
+| `-s, --service ` | Servicebereich |
+
+### `lizard secrets list`
+
+Listet Secrets im Bereich auf.
+
+| Flag | Beschreibung |
+|------|-------------|
+| `--show` | Werte anzeigen |
+| `--ref` | Referenzen anzeigen |
+
+### `lizard secrets delete ...`
+
+Löscht ein oder mehrere Secrets (variadisch).
+
+### `lizard secrets import`
+
+Importiert eine dotenv-Datei von stdin.
+
+
+
+## Beispiele
+
+
+
+### Secrets für den verknüpften Service setzen
+
+```bash
+lizard secrets set DATABASE_URL=postgres://… LOG_LEVEL=info
+lizard secrets set API_KEY=sk_live_… --service api
+```
+
+
+
+### Ein projektweites Secret setzen
+
+```bash
+lizard secrets set NODE_ENV=production --global
+```
+
+
+
+### Secrets auflisten und anzeigen
+
+```bash
+lizard secrets list
+lizard secrets list --show
+```
+
+
+
+### Secrets löschen
+
+```bash
+lizard secrets delete OLD_KEY ANOTHER_KEY
+```
+
+
+
+### Eine dotenv-Datei importieren
+
+```bash
+cat .env | lizard secrets import
+```
+
+
+
+## Siehe auch
+
+- [Variablen & Secrets](/variables) — Bereich, Priorität und Verhalten zur Build-Zeit vs. Laufzeit
+- [Service-übergreifende Referenzen](/variables/references) — Werte eines Services aus einem anderen lesen
+- [Fehlerbehebung: Ein Secret oder eine Referenz wird nicht angezeigt](/variables/troubleshooting/reference-not-applied)
+- [lizard run](/cli/run) — einen Befehl lokal mit eingefügten Projekt- + Service-Secrets ausführen
diff --git a/_locales/de/cli/service.mdx b/_locales/de/cli/service.mdx
new file mode 100644
index 0000000..d63321e
--- /dev/null
+++ b/_locales/de/cli/service.mdx
@@ -0,0 +1,95 @@
+---
+description: "lizard service liest und bearbeitet die Build-, Start-, Source- und Variablen-Einstellungen eines Service und verwaltet Umbenennen, Löschen, Logs und Verknüpfen."
+---
+
+# lizard service
+
+Verwalte die Konfiguration, Source und den Lebenszyklus eines einzelnen Service.
+
+
+
+## Verwendung
+
+```bash
+lizard service set [flags]
+lizard service show [flags]
+lizard service rename
+lizard service delete [flags]
+lizard service logs
+lizard service link
+```
+
+
+
+## Unterbefehle
+
+### `lizard service set`
+
+Wende Änderungen an Build/Start/Source/Variablen/Umbenennen auf einen Service an.
+
+| Flag | Beschreibung |
+|------|-------------|
+| `--set =` | Ein Feld setzen (wiederholbar) |
+| `-f, --file ` | JSON-Konfigurationsdatei zum Anwenden |
+| `--force` | Auch dann überschreiben, wenn es remote geändert wurde |
+
+Häufige Felder sind flach und entsprechen 1:1 dem Wire-Schema: `sourceType`, `repoUrl`, `branch`, `rootDirectory`, `dockerfilePath`, `buildCommand`, `startCommand`, `preDeployCommand`, `watchPatterns`, `containerPort`, `name`.
+
+`service set` verwendet optimistische Nebenläufigkeit über `configRevision`. Bei einem `409` lies die Konfiguration mit `lizard service show` erneut, gleiche sie ab und versuche es noch einmal — oder übergib `--force`.
+
+### `lizard service show`
+
+Zeige die aktuelle Service-Konfiguration als JSON an. Verwende `-s`, um sie auf einen Service zu beschränken.
+
+### `lizard service rename`
+
+Benenne einen Service oder ein Add-on um. Verweise darauf (`${{name.KEY}}`) bleiben stabil.
+
+### `lizard service delete`
+
+Lösche einen Service. `-y, --yes` überspringt die Bestätigung.
+
+### `lizard service logs`
+
+Streame die Logs eines Service (siehe auch [lizard logs](/cli/logs)).
+
+### `lizard service link`
+
+Verknüpfe einen Service mit dem aktuellen Verzeichnis.
+
+
+
+## Beispiele
+
+
+
+### Build- und Start-Befehle eines Service aktualisieren
+
+```bash
+lizard service set api --set branch=main --set buildCommand="npm run build"
+```
+
+
+
+### Vollständige Konfiguration eines Service prüfen
+
+```bash
+lizard service show -s api
+```
+
+
+
+### Einen Service ohne Bestätigungsabfrage löschen
+
+```bash
+lizard service delete -y
+```
+
+
+
+## Siehe auch
+
+- [lizard port](/cli/port) — Container-Port eines Service anzeigen oder ändern
+- [lizard scale](/cli/scale) — Replikate, CPU, Arbeitsspeicher oder Storage eines Service skalieren
+- [Architecture](/concepts/architecture) — wie Services mit Projekten und Add-ons zusammenhängen
+- [Build pipeline](/concepts/build-pipeline) — wie `buildCommand`, `startCommand` und Source-Einstellungen zur Build-Zeit verwendet werden
diff --git a/_locales/de/cli/skills.mdx b/_locales/de/cli/skills.mdx
new file mode 100644
index 0000000..e9f9147
--- /dev/null
+++ b/_locales/de/cli/skills.mdx
@@ -0,0 +1,61 @@
+---
+description: "lizard skills liest die mit deiner CLI-Version gebündelten Agentenleitfäden, sodass ein KI-Agent immer Anweisungen erhält, die zur Binärdatei passen."
+---
+
+# lizard skills
+
+Lies die eingebetteten Agenten-Skills, die mit dieser CLI-Version ausgeliefert werden.
+
+
+
+## Verwendung
+
+```bash
+lizard skills list
+lizard skills get core
+lizard skills path
+```
+
+
+
+## Unterbefehle
+
+### `lizard skills list`
+
+Liste die verfügbaren eingebetteten Skills auf.
+
+### `lizard skills get core`
+
+Lies den Core-Anleitung — den maßgeblichen Nutzungsleitfaden für die Plattform, versioniert mit der CLI. Er gibt `{ name, frontmatter, content, … }` zurück, wobei `content` der vollständige Leitfaden ist (Build-Pipeline, env-Priorität, Add-ons, Discovery, Exit-Codes).
+
+### `lizard skills path`
+
+Zeige an, wo Skills auf dem Datenträger gespeichert sind.
+
+
+
+## Beispiele
+
+
+
+### Den Core-Anleitung als Agent laden
+
+```bash
+lizard skills get core --json
+```
+
+
+
+### Verfügbare eingebettete Skills auflisten
+
+```bash
+lizard skills list
+```
+
+
+
+## Siehe auch
+
+- [AI agents & MCP](/agents) — wie Agenten mit dem eingebetteten Skill und selbstbeschreibenden Befehlen starten
+- [JSON & automation](/cli/json) — das Ausgabeformat `--json`, das von `lizard skills get core --json` verwendet wird
+- [Von Claude Code bereitstellen](https://lizard.build/blog/deploy-from-claude-code) — den Skill installieren und das Deployment end-to-end an den Agenten übergeben
diff --git a/_locales/de/cli/ssh.mdx b/_locales/de/cli/ssh.mdx
new file mode 100644
index 0000000..943f862
--- /dev/null
+++ b/_locales/de/cli/ssh.mdx
@@ -0,0 +1,70 @@
+---
+description: "lizard ssh führt einen Befehl in einem laufenden Service-Container aus und gibt seinen Exit-Code zurück. Die maßgebliche Methode, um zu sehen, was der Container sieht."
+---
+
+# lizard ssh
+
+Führe einen Befehl in dem Container eines laufenden Service aus, streame seine Ausgabe und gib den Remote-Exit-Code zurück.
+
+## run vs. ssh
+
+`lizard run` und `lizard ssh` führen beide einen Befehl im Kontext eines Service aus, aber sie laufen an unterschiedlichen Orten — du solltest wissen, welchen du brauchst.
+
+| Befehl | Wird ausgeführt in | Verwenden für |
+|---------|-----------|---------|
+| `lizard run` | **Lokal**, mit injiziertem Projekt des Service + Service-Secrets | Migrationen, Seed-Skripte, lokale Tools, die Produktionskonfiguration brauchen |
+| `lizard ssh` | **Im laufenden Service-Container** | Den Live-Container inspizieren, einmalige Remote-Befehle, Debugging |
+
+`lizard run` zeigt deine lokal injizierte Kopie der Umgebung, die normalerweise mit der Produktion übereinstimmt — aber `lizard ssh` ist maßgeblich dafür, was der Live-Container tatsächlich sieht.
+
+
+
+## Verwendung
+
+```bash
+lizard ssh --service --
+```
+
+
+
+## Beispiele
+
+
+
+### Die Umgebung inspizieren, die die laufende App sieht
+
+```bash
+lizard ssh --service api -- env
+```
+
+
+
+### Dateien im bereitgestellten Image auflisten
+
+```bash
+lizard ssh --service api -- ls -la /app
+```
+
+
+
+### Das Betriebssystem im Container prüfen
+
+```bash
+lizard ssh --service api -- cat /etc/os-release
+```
+
+
+
+### Bestätigen, dass ein Secret im Live-Container angekommen ist
+
+```bash
+lizard ssh --service api -- env | grep DATABASE_URL
+```
+
+
+
+## Siehe auch
+
+- [lizard run](/cli/run) — stattdessen einen Befehl lokal mit injizierter Service-Umgebung ausführen
+- [Variablen](/variables) — wie Secrets und Referenzen einen Service erreichen
+- [Von Claude Code bereitstellen](https://lizard.build/blog/deploy-from-claude-code#claude-code-deployment-compared-with-the-alternatives) — warum ein Agent eine Shell in den laufenden Container braucht und welche Plattformen keine bereitstellen
diff --git a/_locales/de/cli/status.mdx b/_locales/de/cli/status.mdx
new file mode 100644
index 0000000..93e7d27
--- /dev/null
+++ b/_locales/de/cli/status.mdx
@@ -0,0 +1,35 @@
+---
+description: "lizard status zeigt, mit welchem Workspace, Projekt und Service das aktuelle Verzeichnis verknüpft ist, damit du nicht versehentlich zum falschen Ziel deployst."
+---
+
+# lizard status
+
+Zeigt den verknüpften Workspace, das Projekt und den Service für das aktuelle Verzeichnis an.
+
+
+
+## Verwendung
+
+```bash
+lizard status
+```
+
+
+
+## Beispiele
+
+
+
+### Verknüpfung des aktuellen Verzeichnisses prüfen
+
+```bash
+lizard status
+```
+
+
+
+## Siehe auch
+
+- [lizard init](/cli/init) — ein Projekt erstellen oder auswählen und mit dem aktuellen Verzeichnis verknüpfen
+- [lizard link](/cli/link) — das aktuelle Verzeichnis mit einem bestehenden Projekt verknüpfen
+- [lizard whoami](/cli/whoami) — den aktuellen Benutzer, den aktiven Workspace und das verknüpfte Projekt anzeigen
diff --git a/_locales/de/cli/unlink.mdx b/_locales/de/cli/unlink.mdx
new file mode 100644
index 0000000..04890f6
--- /dev/null
+++ b/_locales/de/cli/unlink.mdx
@@ -0,0 +1,34 @@
+---
+description: "lizard unlink entfernt die Verknüpfung zwischen dem aktuellen Verzeichnis und jedem Projekt, ohne das Projekt selbst zu verändern."
+---
+
+# lizard unlink
+
+Löst die Zuordnung des aktuellen Verzeichnisses zu jedem Projekt.
+
+
+
+## Verwendung
+
+```bash
+lizard unlink
+```
+
+
+
+## Beispiele
+
+
+
+### Verknüpfung des aktuellen Verzeichnisses aufheben
+
+```bash
+lizard unlink
+```
+
+
+
+## Siehe auch
+
+- [lizard link](/cli/link) — das aktuelle Verzeichnis einem Projekt zuordnen
+- [lizard status](/cli/status) — den verknüpften Workspace, das Projekt und den Service prüfen
diff --git a/_locales/de/cli/up.mdx b/_locales/de/cli/up.mdx
new file mode 100644
index 0000000..39fa6e6
--- /dev/null
+++ b/_locales/de/cli/up.mdx
@@ -0,0 +1,86 @@
+---
+description: "lizard up paketiert das aktuelle Verzeichnis, baut es auf den Build-Knoten von Lizard und gibt eine Live-URL zurück. Flags, CI-Verhalten und Beispiele."
+---
+
+# lizard up
+
+Das aktuelle Verzeichnis hochladen und bereitstellen.
+
+
+
+## Verwendung
+
+```bash
+lizard up [flags]
+```
+
+`up` paketiert Ihren Arbeitsbaum als Tarball, sendet ihn an die Build-Knoten und stellt ihn bereit. Es erzwingt `sourceType=upload` auf dem Zieldienst, streamt Build-Logs über SSE und gibt nach Abschluss die Live-URL aus.
+
+Wenn das aktuelle Verzeichnis noch nicht mit einem Projekt verknüpft ist, führt `up` zuerst `init` aus. In einem TTY ist das interaktiv; in einer Nicht-TTY-Umgebung (CI) wird **nicht** stillschweigend ein Projekt erstellt — stattdessen wird ein Fehler ausgegeben und Sie werden aufgefordert, `lizard init --name ` auszuführen (oder `--name` zu übergeben), damit nicht durch einen Tippfehler ein leeres Projekt erzeugt wird.
+
+## Flags
+
+| Flag | Beschreibung |
+|------|-------------|
+| `-s, --service ` | Einen vorhandenen Dienst als Ziel verwenden |
+| `--build-command ` | Den Build-Befehl überschreiben |
+| `--start-command ` | Den Startbefehl überschreiben |
+| `--pre-deploy-command ` | Vor jedem Bereitstellen einmal ausführen |
+| `--port ` | Container-Port (`0` = Worker-Modus) |
+| `--region ` | Region für das Bereitstellen |
+| `-d, --detach` | Das Bereitstellen starten und beenden, ohne Logs zu streamen |
+| `-c, --ci` | CI-freundliche Ausgabe |
+| `--no-gitignore` | Alles hochladen und `.gitignore` ignorieren |
+
+
+
+## Unterbefehle
+
+### `lizard up status`
+
+Den Status eines laufenden Upload-Deploys melden.
+
+
+
+## Beispiele
+
+
+
+### Das aktuelle Verzeichnis bereitstellen
+
+```bash
+lizard up
+```
+
+
+
+### Auf einem bestimmten Dienst mit benutzerdefiniertem Startbefehl und Port bereitstellen
+
+Erstellen Sie den benannten Dienst zuerst mit `lizard add --service api`, falls er nicht existiert.
+
+```bash
+lizard up --service api --start-command "node server.js" --port 8080
+```
+
+
+
+### Headless in CI bereitstellen
+
+```bash
+export LIZARD_TOKEN=lzd_xxx
+lizard init --name my-project
+lizard add --service api
+lizard up --ci --service api
+```
+
+Überspringen Sie `lizard add`, wenn der Dienst bereits existiert. Mit Lizard CLI 0.3.92 kann ein fehlgeschlagener Build trotzdem mit Exit-Code `0` enden; prüfen Sie den Build-Status und die bereitgestellte URL, bevor Sie ein CI-Release als erfolgreich markieren. Eine Korrektur steht zur Veröffentlichung aus. Setzen Sie auf macOS außerdem vor einem Upload `COPYFILE_DISABLE=1`, um zusätzliche `._*`-Metadatendateien im Archiv zu vermeiden. Siehe [Framework-Setup](/framework-guides#prepare-the-project).
+
+
+
+## Siehe auch
+
+- [Aus lokalem Code bereitstellen](/deploy/upload) — vollständige Anleitung für Upload-basierte Deploys
+- [lizard redeploy](/cli/redeploy) — den letzten Upload neu bauen, ohne erneut hochzuladen
+- [lizard init](/cli/init) — ein Projekt vor dem Bereitstellen explizit erstellen oder verknüpfen
+- [Worker-Dienste](/deploy/workers) — was `--port 0` bedeutet
+- [Einen Container bereitstellen, ohne einen zu konfigurieren](https://lizard.build/blog/container-as-a-service#deploy-a-container-without-configuring-one) — wie sich dieser Befehl unter Container-as-a-Service-Plattformen einordnet
diff --git a/_locales/de/cli/upgrade.mdx b/_locales/de/cli/upgrade.mdx
new file mode 100644
index 0000000..2e72f2a
--- /dev/null
+++ b/_locales/de/cli/upgrade.mdx
@@ -0,0 +1,48 @@
+---
+description: "lizard upgrade aktualisiert die CLI direkt, oder prüft mit --check, ob eine neuere Version verfügbar ist, ohne sie zu installieren."
+---
+
+# lizard upgrade
+
+Aktualisiere die CLI auf die neueste Version.
+
+
+
+## Verwendung
+
+```bash
+lizard upgrade [flags]
+```
+
+## Flags
+
+| Flag | Beschreibung |
+|------|-------------|
+| `--check` | Auf eine neuere Version prüfen, ohne sie zu installieren |
+
+
+
+## Beispiele
+
+
+
+### Auf die neueste Version aktualisieren
+
+```bash
+lizard upgrade
+```
+
+
+
+### Ohne Installation auf Updates prüfen
+
+```bash
+lizard upgrade --check
+```
+
+
+
+## Siehe auch
+
+- [CLI-Referenz](/cli) — Installation, globale Flags, Exit-Codes
+- [Erste Schritte](/getting-started) — die CLI zum ersten Mal installieren
diff --git a/_locales/de/cli/whoami.mdx b/_locales/de/cli/whoami.mdx
new file mode 100644
index 0000000..ade6d2d
--- /dev/null
+++ b/_locales/de/cli/whoami.mdx
@@ -0,0 +1,35 @@
+---
+description: "lizard whoami gibt das Konto aus, mit dem Sie angemeldet sind, Ihren aktiven Workspace und das mit diesem Verzeichnis verknüpfte Projekt."
+---
+
+# lizard whoami
+
+Zeigt den aktuellen Benutzer, den aktiven Workspace und das verknüpfte Projekt an.
+
+
+
+## Verwendung
+
+```bash
+lizard whoami
+```
+
+
+
+## Beispiele
+
+
+
+### Prüfen, als wer Sie angemeldet sind
+
+```bash
+lizard whoami
+```
+
+
+
+## Siehe auch
+
+- [lizard login](/cli/login) — vor dem Prüfen Ihrer Identität authentifizieren
+- [lizard status](/cli/status) — den verknüpften Workspace, das Projekt und den Service für das aktuelle Verzeichnis anzeigen
+- [lizard workspace](/cli/workspace) — die Workspaces auflisten, auf die Sie Zugriff haben
diff --git a/_locales/de/cli/workspace.mdx b/_locales/de/cli/workspace.mdx
new file mode 100644
index 0000000..97be1df
--- /dev/null
+++ b/_locales/de/cli/workspace.mdx
@@ -0,0 +1,34 @@
+---
+description: "lizard workspace list zeigt alle Workspaces, auf die dein Konto zugreifen kann, und wie Workspaces mit Projekten und Services zusammenhängen."
+---
+
+# lizard workspace
+
+Liste die Workspaces auf, auf die du zugreifen kannst.
+
+
+
+## Verwendung
+
+```bash
+lizard workspace list
+```
+
+
+
+## Beispiele
+
+
+
+### Deine Workspaces auflisten
+
+```bash
+lizard workspace list
+```
+
+
+
+## Siehe auch
+
+- [lizard whoami](/cli/whoami) — zeigt deinen aktiven Workspace an
+- [Architecture: Workspace](/concepts/architecture) — wie Workspaces mit Projekten und Services zusammenhängen
diff --git a/_locales/de/concepts/_meta.ts b/_locales/de/concepts/_meta.ts
new file mode 100644
index 0000000..04cbe61
--- /dev/null
+++ b/_locales/de/concepts/_meta.ts
@@ -0,0 +1,6 @@
+export default {
+ index: "Überblick",
+ architecture: "Architektur",
+ 'build-pipeline': "Build-Pipeline",
+ deployments: "Bereitstellungen",
+};
diff --git a/_locales/de/concepts/architecture.mdx b/_locales/de/concepts/architecture.mdx
new file mode 100644
index 0000000..6ab0b76
--- /dev/null
+++ b/_locales/de/concepts/architecture.mdx
@@ -0,0 +1,122 @@
+---
+description: "Wie Lizard Arbeit in Workspaces, Projekte und Services organisiert, plus verwaltete Addons, ressourcenübergreifende Referenzen und injizierte Variablen."
+---
+
+
+
+# Architektur
+
+Lizard organisiert alles, was Sie deployen, in einer Hierarchie mit drei Ebenen sowie verwalteten Addons, die an ein Projekt angehängt werden.
+
+```
+workspace
+└── project
+ ├── service (app) ← built from GitHub or an upload
+ ├── service (worker) ← background job, no HTTP port
+ └── addons
+ ├── postgres
+ ├── redis
+ └── s3
+```
+
+## Workspace
+
+Ein **Workspace** ist die Konto- oder Organisationsebene. Sie gehören mindestens zu einem Workspace, und Abrechnung, Mitglieder und Projekte sind ihm untergeordnet. Listen Sie die Workspaces auf, auf die Sie zugreifen können:
+
+```bash
+lizard workspace list
+lizard whoami # shows your active workspace
+```
+
+Viele Befehle akzeptieren `-w, --workspace `, um Mehrdeutigkeiten aufzulösen, wenn derselbe Projektname in mehr als einem Workspace existiert.
+
+
+
+## Projekt
+
+Ein **Projekt** gruppiert zusammengehörige Services und Addons innerhalb eines Workspace. Ihr Arbeitsverzeichnis wird mit einem Projekt *verknüpft*, und diese Verknüpfung (gespeichert in `~/.lizard/config.json`) teilt der CLI mit, worauf Sie zielen.
+
+```bash
+lizard init --name my-project # create or select a project, link the cwd
+lizard link --project my-project # link to an existing project
+lizard status # show the current directory's link
+lizard unlink # remove the link
+lizard project list # all projects in the workspace
+```
+
+> **Tipp:** Verwenden Sie für das Projekt den Repo- oder Verzeichnisnamen und für Services app-artige Namen (`api`, `worker`, `web`).
+
+## Service
+
+Ein **Service** ist eine einzelne deploybare Einheit. Seine Quelle ist eine der folgenden:
+
+- **`github`** — ein verbundenes GitHub-Repo. Pushes auf den verfolgten Branch lösen automatisch ein Redeploy aus.
+- **`upload`** — ein mit `lizard up` hochgeladenes Tarball.
+
+Jeder laufende Service läuft in seinem eigenen **isolierten Pod** mit einer Network Policy nach dem Prinzip Standard Deny, einer generierten `..onlizard.com`-Domain und automatischem TLS. Diese Aufteilung — Sie liefern den Container, die Plattform führt ihn aus — ist [container as a service](https://lizard.build/blog/container-as-a-service), und der Blog behandelt, was dabei trotzdem noch bei Ihnen verbleibt. Prüfen und verwalten Sie Services mit:
+
+```bash
+lizard ps # list services with status + URL
+lizard service show # full config as JSON
+lizard service set --set =
+lizard service rename --service
+lizard service delete --service
+```
+
+Felder der Service-Konfiguration sind **flach** und entsprechen 1:1 dem Wire-Schema (z. B. `repoUrl`, `branch`, `buildCommand`, `startCommand`, `containerPort`, `rootDirectory`). Es gibt keine Verschachtelung mit `build.*` / `deploy.*`. Die vollständige Liste finden Sie unter [`lizard service`](/cli/service).
+
+
+
+### App- vs. Worker-Services
+
+Standardmäßig ist ein Service eine **HTTP-App**, die auf einem Port lauscht (Standard: `3000`) und unter ihrer Domain ausgeliefert wird. Ein Service, der nicht auf einem Port lauscht — etwa ein Queue-Consumer, Reconciler oder Polling-Loop — sollte im [**Worker-Modus**](/deploy/workers) laufen, indem `containerPort=0` gesetzt wird. Worker überspringen die Port-Injektion, den Erreichbarkeits-Health-Check und die Registrierung beim Load Balancer.
+
+
+
+## Verwaltete Addons
+
+**Addons** sind verwaltetes Postgres, Redis und S3-kompatibler Storage, die Sie pro Projekt bereitstellen:
+
+```bash
+lizard add postgres redis s3
+```
+
+Jedes Add-on stellt einen festen Satz an Umgebungsvariablen bereit, den Ihre Services per **Referenz** verwenden (`${{.KEY}}`). Siehe [Managed Addons](/addons).
+
+
+
+## Ressourcenübergreifende Referenzen
+
+Jeder Wert eines Service oder Addons kann aus der Umgebung einer anderen Ressource referenziert werden mit:
+
+```
+${{.}}
+```
+
+Referenzen werden zur **Bereitstellen-Zeit** gegen die zusammengeführte Umgebung des Ziels aufgelöst. Sie werden per ID gespeichert, daher bricht ein späteres Umbenennen des Ziels die Referenz nicht. Eine Referenz auf ein fehlendes Ziel oder einen fehlenden Schlüssel wird zu einer leeren Zeichenfolge aufgelöst (das Bereitstellen schlägt **nicht** fehl); nur zirkuläre Referenzen führen zu einem Fehler.
+
+```bash
+# Wire a service to the project's Postgres
+lizard secrets set DATABASE_URL='${{postgres.DATABASE_URL}}' --service api
+```
+
+Prüfen Sie, ob der Consumer den Wert tatsächlich erhalten hat:
+
+```bash
+lizard ssh --service api -- env | grep DATABASE_URL
+```
+
+
+
+## Von der Plattform injizierte Variablen
+
+Jeder Service erhält automatisch diese Variablen (sie können nicht überschrieben werden):
+
+| Variable | Beschreibung |
+|----------|-------------|
+| `PORT` | Port, auf dem Ihre App lauschen soll (im Worker-Modus weggelassen) |
+| `LIZARD_SERVICE_NAME` | Der Name des Service |
+| `LIZARD_PROJECT_ID` | Die Projekt-ID |
+| `LIZARD_PUBLIC_DOMAIN` | Die öffentliche Domain des Service |
+
+Unter [Variablen & Secrets](/variables) erfahren Sie, wie diese mit Ihren eigenen Variablen interagieren und wie die vollständige Prioritätsreihenfolge aussieht.
diff --git a/_locales/de/concepts/build-pipeline.mdx b/_locales/de/concepts/build-pipeline.mdx
new file mode 100644
index 0000000..3f8a00d
--- /dev/null
+++ b/_locales/de/concepts/build-pipeline.mdx
@@ -0,0 +1,87 @@
+---
+description: "Wie Lizard Quellcode in ein Container-Image verwandelt: synthetisierte Dockerfile, Dockerfile aus dem Repo oder automatische Erkennung durch lizardpack – und was einen Neuaufbau auslöst."
+---
+
+# Build-Pipeline
+
+Builds laufen auf den Build-Nodes von Lizard — **du brauchst Docker lokal nicht**. Beim Bereitstellen entscheidet die Plattform anhand einer festen Reihenfolge, wie dein Quellcode in ein Container-Image umgewandelt wird, und führt dieses Image dann in einem isolierten Pod aus. Nicht jeder [container as a service](https://lizard.build/blog/container-as-a-service) baut das Image für dich; der Blog vergleicht die drei Varianten, in denen diese Kategorie vorkommt.
+
+
+
+## Reihenfolge der Build-Entscheidung
+
+Die Plattform wählt genau eine Build-Strategie, in dieser Reihenfolge:
+
+1. **Synthetisierte Dockerfile** — wenn `buildCommand` und/oder `startCommand` im Service gesetzt sind (oder per `lizard up --build-command` / `--start-command` übergeben werden), erzeugt Lizard daraus eine Dockerfile. lizardpack wird nicht aufgerufen.
+2. **Dockerfile aus dem Repo (unverändert)** — wenn `dockerfilePath` im Service gesetzt ist, wird diese Dockerfile aus deinem Repo unverändert verwendet.
+3. **Automatische Erkennung durch lizardpack** — andernfalls klont die Plattform deinen Quellcode und führt **lizardpack** aus, den eigenen Buildpack-/Dockerfile-Generator.
+
+
+
+### Automatische Erkennung durch lizardpack
+
+lizardpack prüft dein Repo und baut ein optimiertes Multi-Stage-Image. Unterstützte Stacks, in dieser Reihenfolge abgeglichen:
+
+**Hugo → Go → Node → Python → Rust → Ruby → PHP → Java → static**
+
+Siehe [Framework guides](/framework-guides) für Produktionsskripte, Adapter, Ausgabepfade und Ports. Die Erkennung nutzt Projektdateien und Abhängigkeiten; ein Repository, das zu mehreren Providern passt, folgt dieser Reihenfolge.
+
+Auf diesem Pfad gilt:
+
+- Wenn eine `Dockerfile` im Repo existiert **und** einen echten Build-Schritt hat (eine `RUN `-Zeile, nicht nur `COPY dist/`), wird sie unverändert verwendet.
+- Andernfalls erzeugt lizardpack die Dockerfile für dich.
+- Der **Startbefehl** wird automatisch erkannt: eine `Procfile`-`web:`-Zeile (Python/Ruby) oder `package.json` `scripts.start` (Node) wird automatisch übernommen. Welche genaue Zeile Django, Flask und FastAPI jeweils brauchen, steht unter [Python-App-Hosting](https://lizard.build/blog/python-app-hosting).
+- Der **Port** wird aus `EXPOSE`, Framework-Standards oder einer expliziten `PORT`-Umgebungsvariable abgeleitet.
+
+> **Wichtig:** Eine Dockerfile, die nur vorgebaute Artefakte kopiert (`COPY dist/`, `build/`, `out/`, `.next/`, `public/`) **ohne** einen `RUN`-Build-Schritt, gilt als unvollständig und wird von lizardpack neu erzeugt. Füge einen echten Build-Schritt hinzu oder setze `dockerfilePath`, um die unveränderte Verwendung zu erzwingen.
+
+
+
+## Was einen Neuaufbau auslöst
+
+| Aktion | Neuaufbau? |
+|--------|-----------|
+| `git push` in den verfolgten Branch | ✅ per GitHub-Webhook |
+| `lizard redeploy` / `lizard up` | ✅ explizit |
+| Ändern von Variablen für `VITE_*` oder `NEXT_PUBLIC_*` | ✅ Build-Zeit-Werte werden fest ins Image übernommen |
+| `service set` von Build-Feldern (`repoUrl`, `branch`, `sourceType`, `buildCommand`, `dockerfilePath`, `rootDirectory`) | ✅ löst automatisch einen Neuaufbau aus |
+| `service set` von reinen Laufzeitfeldern (`startCommand`, `preDeployCommand`, `containerPort`, `watchPatterns`) | ❌ führe `lizard redeploy` aus, damit es angewendet wird |
+| Jede andere Änderung an Umgebungsvariablen / Secrets | ❌ wird bei einem schnellen Neustart angewendet (kein Neuaufbau) |
+
+> **Nicht doppelt bauen.** Nach einem `service set`, das ein Build-Feld ändert, startet der Neuaufbau automatisch — hänge nicht noch ein `lizard redeploy` direkt danach an, sonst stellst du einen zweiten, überflüssigen Build in die Warteschlange.
+
+
+
+## Einen Build beobachten
+
+Build-Logs werden während `lizard up` gestreamt. Für jeden Service:
+
+```bash
+lizard logs --build # the most recent build's logs
+lizard events # deploy history + replica status
+```
+
+Wenn ein Build fehlschlägt, lies `lizard logs --build`, behebe die Ursache (in deinem Repo oder durch Anpassen von `buildCommand` / `startCommand` per `lizard service set`) und führe dann `lizard redeploy` aus.
+
+
+
+## Hinweise zur Laufzeit
+
+- **Keine Docker-`HEALTHCHECK`.** Die Laufzeit führt keine Docker-Healthcheck-Schleife aus, daher werden `HEALTHCHECK`-Direktiven ignoriert. Lizard führt stattdessen einen TCP-Probe gegen deinen Port aus (im [worker mode](/deploy/workers) übersprungen).
+- **Schreibe nicht ungefragt eine Dockerfile.** lizardpack erkennt die meisten Stacks automatisch — versuche zuerst ein Bereitstellen und füge nur dann eine Dockerfile hinzu (oder setze `dockerfilePath`), wenn der Auto-Build nicht passt.
+
+
+
+## Referenz der Build-Konfiguration
+
+| Feld | Beschreibung |
+|-------|-------------|
+| `buildCommand` | Befehl zum Bauen deiner App → erzwingt den Pfad **synthetisierte Dockerfile** |
+| `startCommand` | Befehl zum Starten deiner App zur Laufzeit |
+| `preDeployCommand` | Wird vor jedem Bereitstellen einmal ausgeführt (z. B. DB-Migrationen) |
+| `dockerfilePath` | Pfad zu einer Dockerfile im Repo, die **unverändert** verwendet wird |
+| `rootDirectory` | Unterverzeichnis, aus dem gebaut wird (Monorepos) |
+| `watchPatterns` | Nur neu deployen, wenn sich passende Pfade ändern |
+| `containerPort` | TCP-Port, auf dem deine App lauscht (Standard `3000`; `0` = [worker](/deploy/workers)) |
+
+Setze beliebige davon mit `lizard service set --set =`. Siehe [`lizard service`](/cli/service).
diff --git a/_locales/de/concepts/deployments.mdx b/_locales/de/concepts/deployments.mdx
new file mode 100644
index 0000000..8575fdb
--- /dev/null
+++ b/_locales/de/concepts/deployments.mdx
@@ -0,0 +1,95 @@
+---
+description: "Der Bereitstellen-Lebenszyklus auf Lizard: was einen Build auslöst, wie der Traffic auf fehlerfreie Replikate umgeschaltet wird und wie sich Neustarts von Redeploys unterscheiden."
+---
+
+
+
+# Bereitstellungen
+
+Ein **Deployment** ist ein Build-und-Release eines Service. Der Release-Ablauf hängt von der Laufzeitumgebung des Service ab. Ein erfolgreicher Build belegt für sich allein nicht, dass die Anwendung gestartet ist oder Anfragen verarbeiten kann.
+
+
+
+## Wie ein Bereitstellen erfolgt
+
+Ein Deployment wird ausgelöst durch:
+
+- Ein **`git push`** auf den verfolgten Branch (bei Services mit **`github`**-Quelle).
+- **`lizard redeploy`** — Neuaufbau vom neuesten Commit (git) oder letzten Upload mit den aktuellen Variablen.
+- **`lizard up`** — lädt das aktuelle Verzeichnis hoch und deployt es.
+- Ein **`service set`**, das ein buildrelevantes Feld ändert.
+
+```bash
+lizard redeploy --service api # rebuild + redeploy from current source
+lizard up # upload cwd and deploy
+```
+
+
+
+## Ablauf
+
+1. **Build** — die Plattform führt Ihren Build aus (siehe [Build-Pipeline](/concepts/build-pipeline)).
+2. **Vor dem Bereitstellen** — wenn `preDeployCommand` gesetzt ist, wird es einmal ausgeführt (z. B. Migrationen).
+3. **Start** — Lizard startet die Anwendung für ihre konfigurierte Laufzeitumgebung.
+4. **Health-Checks** — die Plattform prüft, ob der Port der App erreichbar ist (entfällt bei [Workers](/deploy/workers)).
+5. **Prüfen** — prüfen Sie den Release-Status und rufen Sie die Anwendungs-URL auf. Die Erreichbarkeit des Ports ist kein vollständiger Health-Checks der Anwendung.
+
+
+
+## Streaming-Ausgabe
+
+Wenn Sie ein nicht-detachtes `lizard up` (oder `redeploy`) ausführen, werden Build-Logs live gestreamt. Mit `--json` erhalten Sie ein JSON-Ereignis pro Zeile:
+
+```json
+{ "event": "log", "line": "..." }
+{ "event": "deployed", "status": "...", "url": "https://..." }
+```
+
+endet mit `deployed`, `failed` oder `deploying`. Verwenden Sie `--detach`, um das Bereitstellen zu starten und sofort zurückzukehren, ohne Streaming.
+
+
+
+## Verlauf prüfen
+
+```bash
+lizard events # deploy history + per-replica status
+lizard events --limit 25 # show more
+lizard ps # current services, status, and URLs
+```
+
+Im [Dashboard](/dashboard) zeigt die Ansicht **Bereitstellungen** die vollständige Zeitleiste, Build-Logs pro Deployment und einen Detailbereich für jedes Release.
+
+
+
+## Neustarts vs. Redeploys
+
+| Befehl | Was es tut |
+|---------|--------------|
+| `lizard restart --service ` | Neustart des **aktuellen** Builds — kein Neuaufbau |
+| `lizard redeploy --service ` | Neuer **Build** vom neuesten Commit/Upload, dann Release |
+
+Verwenden Sie `restart`, um Replikate neu zu starten (z. B. um ein Runtime-Secret zu übernehmen, das nicht per Hot-Reload geladen wurde); verwenden Sie `redeploy`, wenn Sie einen neuen Build benötigen.
+
+
+
+## Wiederherstellung nach einem Absturz
+
+Prüfen Sie die Logs des letzten Absturzes oder Neustarts:
+
+```bash
+lizard logs --restart latest # log tail around the latest restart
+lizard logs --restart # a specific restart
+lizard events # see replica status
+```
+
+
+
+## Konfigurationsänderungen (kein Neuaufbau)
+
+Die meisten Änderungen an Umgebungsvariablen und Secrets werden ohne Neuaufbau übernommen: Lizard aktualisiert die Konfiguration des Service und startet ihn neu, was einige Sekunden dauert. Build-Zeit-Werte (`VITE_*`, `NEXT_PUBLIC_*`) und Änderungen an Build-Feldern erzwingen jedoch einen Neuaufbau — siehe die [Tabelle der Rebuild-Auslöser](/concepts/build-pipeline#what-triggers-a-rebuild).
+
+
+
+## Fehlgeschlagene Releases und Wiederherstellung
+
+Ein fehlgeschlagener Build und ein fehlgeschlagener Start der Anwendung sind unterschiedliche Fälle. Gehen Sie nicht davon aus, dass ein altes Release in jeder Laufzeitumgebung weiter Anfragen verarbeitet. Prüfen Sie den aktiven Service, die Build-Logs und die Runtime-Logs. `lizard redeploy` baut die ausgewählte Quelle erneut; es ist kein Befehl zum Wiederherstellen eines vorherigen Builds. Setzen Sie bei Bedarf den Quell-Commit zurück, deployen Sie ihn und prüfen Sie das Ergebnis. Siehe [bekannte Probleme](/platform/known-issues).
diff --git a/_locales/de/concepts/index.mdx b/_locales/de/concepts/index.mdx
new file mode 100644
index 0000000..45926ff
--- /dev/null
+++ b/_locales/de/concepts/index.mdx
@@ -0,0 +1,19 @@
+---
+description: "Das Kernmodell hinter Lizard: wie Ihr Code organisiert ist, wie er gebaut wird und wie ein Release in die Produktion gelangt."
+---
+
+
+
+# Konzepte
+
+Das Kernmodell hinter Lizard: wie Ihr Code organisiert ist, wie er gebaut wird und wie ein Release in die Produktion gelangt. Wenn Sie das einmal gelesen haben, ergibt auch der Rest der Dokumentation Sinn.
+
+Für das Modell eine Ebene höher — wie eine Plattform heißt, die Ihren Container für Sie ausführt, und worin sie sich von PaaS, FaaS und IaaS unterscheidet — lesen Sie [container as a service](https://lizard.build/blog/container-as-a-service) im Blog.
+
+
+
+## In diesem Abschnitt
+
+- [Architektur](/concepts/architecture) — die Hierarchie workspace → project → service, verwaltete Add-ons und ressourcenübergreifende Referenzen.
+- [Build-Pipeline](/concepts/build-pipeline) — wie aus Quellcode ein Container-Image wird (synthetisierte Dockerfile, Dockerfile aus dem Repo oder automatische Erkennung durch lizardpack) und was einen Neubau auslöst.
+- [Bereitstellungen](/concepts/deployments) — der Build-und-Release-Lebenszyklus, Neustarts vs. Redeployments und Live-Konfigurationsänderungen.
diff --git a/_locales/de/dashboard.mdx b/_locales/de/dashboard.mdx
new file mode 100644
index 0000000..9ade32b
--- /dev/null
+++ b/_locales/de/dashboard.mdx
@@ -0,0 +1,84 @@
+---
+description: "Was das Lizard-Dashboard zusätzlich zur CLI bietet: Service-Status, Bereitstellen-Zeitleiste, Live-Logs, Metriken, Datenbrowser, Team und Abrechnung."
+---
+
+# App-Dashboard
+
+Das Lizard-Dashboard ist die visuelle Ergänzung zur CLI. Alles, was Sie mit `lizard …` tun, wird hier angezeigt, plus Dinge, die sich mit einer UI einfacher erledigen lassen — Live-Logs, Diagramme, die Datenbrowser und die Team-/Abrechnungsverwaltung.
+
+Wenn Sie lieber gar kein Terminal öffnen möchten, lassen Sie den Agenten die Befehle ausführen und verfolgen Sie das Ergebnis hier — die Anleitung unter [Bereitstellen einer Antigravity-App in der Produktion](https://lizard.build/blog/google-antigravity-how-to-deploy-your-app-to-production#deploy-an-antigravity-app-to-production-without-typing-a-command), die nur zwei Prompts erfordert und keinerlei Eingaben im Terminal.
+
+Öffnen Sie es aus der CLI:
+
+```bash
+lizard open # open the current project
+lizard docs # open this documentation
+```
+
+
+
+## Was im Dashboard enthalten ist
+
+### Services
+
+Die Startansicht des Projekts listet jeden Service mit seinem Status-Badge, der generierten Domain und einem schnellen Zugriff auf Logs, Metriken, Secrets und Einstellungen auf. Erstellen Sie neue Services (aus einem GitHub-Repository oder leer) direkt von hier aus.
+
+
+
+### Bereitstellungen
+
+Eine Zeitleiste aller Deploys mit Build-Logs pro Bereitstellen und einer Detailansicht (Commit, Status, Replikate). Das ist das visuelle Gegenstück zu `lizard events` + `lizard logs --build`.
+
+### Logs
+
+Live-Streaming von Laufzeit- und Build-Logs mit Such- und Level-Filtern — das UI-Gegenstück zu [`lizard logs`](/observability/logs).
+
+
+
+### Metriken & Nutzung
+
+CPU-, Speicher-, Netzwerk- und Datenträgerdiagramme pro Service sowie eine **Nutzungs**-Ansicht, die Verbrauch und Kosten im gesamten Projekt aufschlüsselt. Entspricht [`lizard metrics --cost`](/observability/metrics).
+
+
+
+### Variablen & Secrets
+
+Verwalten Sie Secrets auf Service- und Projektebene mit maskierten Werten und Unterstützung für Referenzen (`${{…}}`). Siehe [Variablen & Secrets](/variables).
+
+### Domains
+
+Fügen Sie benutzerdefinierte Domains hinzu, sehen Sie DNS-Einträge ein und verfolgen Sie den Verifizierungs- und TLS-Status. Siehe [Networking](/networking).
+
+
+
+### Browser für Managed Addons
+
+Jedes Add-on enthält einen Datenbrowser:
+
+- **Postgres** — ein SQL-/Tabelleneditor zum Abfragen und Bearbeiten von Daten.
+- **Redis** — ein Key/Wert-Browser.
+- **S3** — ein Bucket- und Objektbrowser mit Upload/Download.
+
+### GitHub-Integration
+
+Verbinden Sie die GitHub-App, wählen Sie Repositories aus und verwalten Sie, welche Repos Lizard bauen darf. Siehe [Von GitHub bereitstellen](/deploy/github).
+
+
+
+### Einstellungen, Team & Abrechnung
+
+Projekt- und Workspace-Einstellungen, Einladungen und Rollen für Mitglieder, Ressourcennutzung, Kontoguthaben und optionales automatisches Aufladen. Standardkonten verwenden [pay as you go](/platform/billing) ohne monatliches Abonnement.
+
+## CLI ↔ Dashboard
+
+| Aufgabe | CLI | Dashboard-Ansicht |
+|------|-----|----------------|
+| Bereitstellen-Verlauf | `lizard events` | Bereitstellungen |
+| Logs streamen | `lizard logs` | Logs |
+| Ressourcendiagramme | `lizard metrics` | Metriken / Nutzung |
+| Secrets verwalten | `lizard secrets` | Variablen |
+| Benutzerdefinierte Domains | `lizard domain` | Domains |
+| Postgres/Redis/S3 durchsuchen | `lizard run` / `lizard ssh` | Add-on-Browser |
+| Teammitglieder einladen | — | Team / Einstellungen |
+
+Verwenden Sie einfach das, was gerade am besten passt — beide arbeiten mit denselben Projekten und Services.
diff --git a/_locales/de/deploy/_meta.ts b/_locales/de/deploy/_meta.ts
new file mode 100644
index 0000000..255b786
--- /dev/null
+++ b/_locales/de/deploy/_meta.ts
@@ -0,0 +1,9 @@
+export default {
+ index: "Übersicht",
+ github: "Von GitHub deployen",
+ upload: "Aus lokalem Code deployen",
+ workers: "Hintergrund-Worker",
+ scaling: "Skalierung",
+ regions: "Regionen",
+ troubleshooting: "Fehlerbehebung",
+};
diff --git a/_locales/de/deploy/github.mdx b/_locales/de/deploy/github.mdx
new file mode 100644
index 0000000..b8b70ee
--- /dev/null
+++ b/_locales/de/deploy/github.mdx
@@ -0,0 +1,96 @@
+---
+description: "Verbinde ein GitHub-Repo, damit jeder Push in den verfolgten Branch einen Build auslöst und neu bereitstellt – einschließlich privater Repos, Branch-Wechseln und Monorepos."
+---
+
+
+
+# Von GitHub deployen
+
+Ein GitHub-Repo zu verbinden ist der empfohlene Weg, eine App auf Lizard auszuführen: Jeder Push in den verfolgten Branch baut automatisch neu und stellt erneut bereit.
+
+
+
+## Einen Service aus einem Repo erstellen
+
+```bash
+lizard add -r your-org/your-app
+```
+
+Dadurch wird ein `github`-source-Service erstellt, das Repo geklont, der Stack automatisch erkannt ([lizardpack](/concepts/build-pipeline)), gebaut und eine Live-URL zurückgegeben. Nützliche Flags:
+
+| Flag | Zweck |
+|------|---------|
+| `-r, --repo ` | Quell-Repository |
+| `-n, --name ` | Service-Name (verwendet in `${{name.KEY}}`-Refs und im Dashboard) |
+| `-v, --variables ` | Eine Umgebungsvariable setzen; mehrfach verwendbar |
+| `--region ` | Region für das Deployment |
+| `--no-deploy` | Das Repo verbinden, aber den ersten Build überspringen |
+
+## Private Repositories
+
+Verbinde die Lizard GitHub App einmal pro Account, um Zugriff auf private Repos zu gewähren:
+
+```bash
+lizard git connect
+lizard git status # show connection + repo status
+```
+
+Du kannst den Repository-Zugriff auch auf der Seite **GitHub-Integration** im Dashboard verbinden und verwalten (`lizard open`).
+
+
+
+## Einen bestehenden Service auf ein Repo verweisen lassen
+
+Um einen Service auf eine Git-Quelle umzustellen (oder Repo/Branch zu ändern):
+
+```bash
+lizard service set api \
+ --set sourceType=github \
+ --set repoUrl=https://github.com/your-org/your-app \
+ --set branch=main
+```
+
+Das Ändern eines Build-Felds löst automatisch einen Rebuild aus — hänge danach **kein** `redeploy` an.
+
+> **Hinweis:** `lizard up` erzwingt immer `sourceType=upload`. Verwende es nicht, um einen Git-gestützten Service zu aktualisieren — pushe zum Remote oder verwende stattdessen `lizard redeploy`.
+
+
+
+## Automatische erneute Bereitstellung bei Push
+
+Sobald `repoUrl` gesetzt ist, lösen Pushes zum passenden `branch` über den GitHub-Webhook automatisch eine erneute Bereitstellung aus. Um festzulegen, welche Pushes eine erneute Bereitstellung auslösen:
+
+- **`rootDirectory`** — nur ein Unterverzeichnis bauen (Monorepos).
+- **`watchPatterns`** — nur dann erneut bereitstellen, wenn passende Pfade geändert werden.
+
+```bash
+lizard service set api --set watchPatterns='apps/api/**,packages/**'
+```
+
+
+
+## Branches wechseln
+
+```bash
+lizard git checkout api staging # move the `api` service to the `staging` branch and redeploy
+```
+
+## Monorepos
+
+Für ein Repo, das mehrere Apps enthält, erstelle einen Service pro App und setze dessen `rootDirectory` auf den Unterpfad:
+
+```bash
+lizard add -r your-org/monorepo -n api
+lizard service set api --set rootDirectory=apps/api
+```
+
+Wenn dein aktuelles Verzeichnis eine Sub-App in einem Repo ist, dessen Elternverzeichnis bereits verknüpft ist, füge den Service im Projekt des Elternverzeichnisses hinzu und setze `rootDirectory` auf den Unterpfad des aktuellen Verzeichnisses.
+
+
+
+## Siehe auch
+
+- [Build-Pipeline](/concepts/build-pipeline) — wie dein Stack erkannt und gebaut wird.
+- [Von lokalem Code deployen](/deploy/upload) — wenn du kein Remote hast.
+- [`lizard git`](/cli/git) — die vollständige Befehlsreferenz für `connect`, `status` und `checkout`.
+- [Wohin du eine App deployen solltest, die deine AI IDE gebaut hat](https://lizard.build/blog/google-antigravity-how-to-deploy-your-app-to-production#where-to-deploy-an-app-your-ai-ide-built) — wie du dies auf ein Repo verweist, das ein Agent geschrieben hat, und was es kostet.
diff --git a/_locales/de/deploy/index.mdx b/_locales/de/deploy/index.mdx
new file mode 100644
index 0000000..8d7907c
--- /dev/null
+++ b/_locales/de/deploy/index.mdx
@@ -0,0 +1,22 @@
+---
+description: "Alles darüber, wie du einen Service auf Lizard zum Laufen bringst und dort hältst: GitHub- und lokale Deploys, Worker, Skalierung, Regionen und Fehlerbehebungen."
+---
+
+
+
+# Bereitstellen
+
+Alles darüber, wie du einen Service auf Lizard zum Laufen bringst und so betreibst — vom ersten Push bis zu Skalierung und Regionsplatzierung.
+
+Vergleichst du das zuerst mit einem anderen Host? Der Blog stellt die Preise von neun Plattformen für [container as a service](https://lizard.build/blog/container-as-a-service) direkt nebeneinander.
+
+
+
+## In diesem Abschnitt
+
+- [Bereitstellen von GitHub](/deploy/github) — verbinde ein Repo, damit Pushes auf den verfolgten Branch automatisch neu deployen.
+- [Bereitstellen aus lokalem Code](/deploy/upload) — stelle das aktuelle Verzeichnis mit `lizard up` bereit, ganz ohne Git.
+- [Background Workers](/deploy/workers) — führe Queue-Consumer und Polling-Schleifen mit `containerPort=0` aus.
+- [Skalierung](/deploy/scaling) — passe Replikate, Ressourcen und Speicher an.
+- [Regionen](/deploy/regions) — wo deine Services laufen.
+- [Fehlerbehebung](/deploy/troubleshooting/incomplete-dockerfile) — Lösungen für die häufigsten Build- und Bereitstellen-Probleme.
diff --git a/_locales/de/deploy/regions.mdx b/_locales/de/deploy/regions.mdx
new file mode 100644
index 0000000..87b42c8
--- /dev/null
+++ b/_locales/de/deploy/regions.mdx
@@ -0,0 +1,40 @@
+---
+description: "Wählen Sie aus, wo Ihre Services und Addons laufen, platzieren Sie zustandsbehaftete Ressourcen gemeinsam, um die Latenz zu verringern, und sehen Sie, wie sich die Region auf generierte Domains auswirkt."
+---
+
+
+
+# Regionen
+
+Services und Addons werden in einer Region bereitgestellt. Listen Sie die für Ihr Konto verfügbaren Regionen auf und wählen Sie beim Erstellen eine aus.
+
+
+
+## Regionen auflisten
+
+```bash
+lizard regions
+lizard regions --json
+```
+
+
+
+## Eine Region auswählen
+
+Übergeben Sie `--region ` beim Erstellen eines Service oder Add-on:
+
+```bash
+lizard add -r your-org/your-app --region
+lizard add postgres --region
+lizard up --region
+```
+
+Wenn Sie keine Region angeben, verwendet die Plattform den Standard des Projekts.
+
+> **Zustandsbehaftete Ressourcen gemeinsam platzieren.** Platzieren Sie einen Service und die Addons, mit denen er kommuniziert (Postgres, Redis, S3), in **derselben Region**, um die Latenz niedrig zu halten und regionenübergreifende Datengebühren zu vermeiden.
+
+
+
+## Generierte Domains
+
+Jeder Service erhält unabhängig von der Region eine generierte Domain auf `*.onlizard.com` mit automatischem TLS. Object Storage, das von einem [S3-Add-on](/addons/storage) bereitgestellt wird, verwendet einen regionsspezifischen Gateway-Host (`s3-.onlizard.com`). Informationen zum Zuweisen Ihres eigenen Hostnamens finden Sie unter [Networking](/networking).
diff --git a/_locales/de/deploy/scaling.mdx b/_locales/de/deploy/scaling.mdx
new file mode 100644
index 0000000..0e95d2e
--- /dev/null
+++ b/_locales/de/deploy/scaling.mdx
@@ -0,0 +1,78 @@
+---
+description: "Fügen Sie Replikate hinzu oder erhöhen Sie CPU und Arbeitsspeicher für einen Service und erweitern Sie den Add-on-Speicher. Zulässige Bereiche, Rollout-Verhalten und wie Sie eine Änderung prüfen."
+---
+
+
+
+# Skalierung
+
+Skalieren Sie einen Service horizontal (mehr Replikate) oder vertikal (mehr CPU/Arbeitsspeicher) mit `lizard scale`. Add-on-Speicher wird auf die gleiche Weise erweitert.
+
+
+
+## Einen Service skalieren
+
+```bash
+lizard scale --service api --replicas 3
+lizard scale --service api --cpu 2 --memory 2048
+```
+
+| Flag | Gilt für | Zulässige Werte |
+|------|-----------|----------------|
+| `--replicas ` | Apps | `1`–`10` |
+| `--cpu ` | Apps | ganze Kerne: `1`, `2`, `3`, `4` |
+| `--memory ` | Apps | `128`–`8192` MB (in 1-MB-Schritten) |
+| `--storage ` | **nur Addons**, nur vergrößern | `512`, `1024`, `2048`, `4096`, `8192`, `16384` |
+
+Sie können Flags in einem einzelnen Befehl kombinieren. Änderungen an Replikaten werden ohne Rebuild ausgerollt.
+
+
+
+## Horizontale Skalierung
+
+Führen Sie mehrere Replikate einer App hinter dem Load Balancer aus:
+
+```bash
+lizard scale --service api --replicas 5
+```
+
+Jedes Replikat ist ein eigener Pod. Stellen Sie sicher, dass Ihre App zustandslos ist (speichern Sie den Zustand in [Postgres](/addons/postgres), [Redis](/addons/redis) oder [S3](/addons/storage)), damit Replikate austauschbar sind.
+
+
+
+## Vertikale Skalierung
+
+Geben Sie einem einzelnen Replikat mehr Ressourcen:
+
+```bash
+lizard scale --service api --cpu 4 --memory 8192
+```
+
+
+
+## Add-on-Speicher erweitern
+
+Add-on-Daten-Volumes können **nur vergrößert** werden — Sie können den Speicher erhöhen, aber nicht verkleinern:
+
+```bash
+lizard scale --service postgres --storage 8192
+```
+
+
+
+## Prüfung
+
+```bash
+lizard ps # replica status + URL
+lizard events # per-replica deploy/scale history
+lizard metrics # live CPU / memory / network / disk
+lizard metrics --cost # include cost
+```
+
+
+
+## Siehe auch
+
+- [Observability → Metrics](/observability/metrics) — Ressourcen- und Kostenüberwachung.
+- [`lizard scale`](/cli/scale) — die vollständige Befehlsreferenz.
+- [Was CaaS-Anbieter 2026 berechnen](https://lizard.build/blog/container-as-a-service#what-caas-providers-charge-in-2026) — Preise pro vCPU, pro GB und für Egress über neun Plattformen hinweg, um eine Rechnung abzuschätzen, bevor Sie skalieren.
diff --git a/_locales/de/deploy/troubleshooting/_meta.ts b/_locales/de/deploy/troubleshooting/_meta.ts
new file mode 100644
index 0000000..9fa76a9
--- /dev/null
+++ b/_locales/de/deploy/troubleshooting/_meta.ts
@@ -0,0 +1,5 @@
+export default {
+ 'incomplete-dockerfile': "Änderungen an der Dockerfile werden nicht übernommen",
+ 'double-build': "Eine Änderung hat zwei Builds in die Warteschlange gestellt",
+ 'service-never-healthy': "Der Service wird nie als fehlerfrei eingestuft",
+};
diff --git a/_locales/de/deploy/troubleshooting/double-build.mdx b/_locales/de/deploy/troubleshooting/double-build.mdx
new file mode 100644
index 0000000..a6bf52c
--- /dev/null
+++ b/_locales/de/deploy/troubleshooting/double-build.mdx
@@ -0,0 +1,53 @@
+---
+description: "Warum lizard service set, gefolgt von einem Redeploy, zwei Builds in die Warteschlange stellt, welche Felder selbstständig neu bauen und wie du den überflüssigen Build vermeidest."
+---
+
+
+
+# Meine Änderung hat zwei Builds direkt hintereinander in die Warteschlange gestellt
+
+Du hast `lizard service set` ausgeführt, um ein Feld zu ändern, dann `lizard redeploy`, und am Ende wurden zwei Builds statt nur eines gestartet.
+
+
+
+## Was das bedeutet
+
+Der Aufruf `service set` hat bereits selbstständig einen Rebuild ausgelöst. Das anschließende `redeploy` hat einen zweiten, überflüssigen Build in die Warteschlange gestellt.
+
+
+
+## Warum das passieren kann
+
+Wenn du ein **build-relevantes** Feld eines Service änderst — `repoUrl`, `branch`, `sourceType`, `buildCommand`, `dockerfilePath` oder `rootDirectory` — wird sofort automatisch ein Rebuild ausgelöst. Wenn du ein **reines Laufzeitfeld** änderst — `startCommand`, `preDeployCommand`, `containerPort`, `watchPatterns` — wird **kein** automatischer Rebuild ausgelöst; die Änderung wird erst beim nächsten Bereitstellen wirksam.
+
+Es ist leicht, reflexartig nach jedem `service set` noch ein `redeploy` anzuhängen, aber das ist nur bei reinen Laufzeitfeldern sinnvoll.
+
+
+
+## Mögliche Lösungen
+
+
+
+### Prüfe, welche Art von Feld du geändert hast
+
+Sieh in der [Tabelle der Rebuild-Auslöser](/concepts/build-pipeline#what-triggers-a-rebuild) nach. Wenn es ein Build-Feld ist, ist der Rebuild bereits in der Warteschlange — du musst nichts weiter tun.
+
+```bash
+lizard events # confirm only one build is in flight
+```
+
+
+
+### Nur nach Änderungen an reinen Laufzeitfeldern neu deployen
+
+```bash
+lizard service set api --set startCommand="node server.js"
+lizard redeploy --service api # needed here — startCommand doesn't auto-rebuild
+```
+
+
+
+## Siehe auch
+
+- [Build-Pipeline → was einen Rebuild auslöst](/concepts/build-pipeline#what-triggers-a-rebuild)
+- [`lizard service`](/cli/service) — die vollständige Befehlsreferenz.
diff --git a/_locales/de/deploy/troubleshooting/incomplete-dockerfile.mdx b/_locales/de/deploy/troubleshooting/incomplete-dockerfile.mdx
new file mode 100644
index 0000000..6c75a7e
--- /dev/null
+++ b/_locales/de/deploy/troubleshooting/incomplete-dockerfile.mdx
@@ -0,0 +1,57 @@
+---
+description: "Warum Lizard ein Dockerfile im Repo ohne Build-Schritt ersetzt, wie die Regel für unvollständige Dockerfiles funktioniert und wie Ihres unverändert verwendet wird."
+---
+
+
+
+# Meine Dockerfile-Änderungen scheinen nicht angewendet zu werden
+
+Sie haben ein `Dockerfile` in Ihrem Repo, Sie haben es bearbeitet, aber der Build, den Lizard ausführt, entspricht nicht dem, was Sie geschrieben haben.
+
+
+
+## Was das bedeutet
+
+Die Plattform hat entschieden, dass das Dockerfile Ihres Repos **unvollständig** war, und mit [lizardpack](/concepts/build-pipeline) stattdessen eines für Sie neu erzeugt, anstatt Ihres unverändert zu verwenden.
+
+
+
+## Warum das passieren kann
+
+Lizard verwendet ein Dockerfile aus dem Repo im lizardpack-Autoerkennungspfad nur dann **unverändert**, wenn es einen echten Build-Schritt hat — eine Zeile `RUN `. Ein Dockerfile, das nur vorab gebaute Artefakte kopiert (`COPY dist/`, `build/`, `out/`, `.next/`, `public/`) und keinen Schritt `RUN` enthält, wird als unvollständig behandelt, in der Annahme, dass diese Artefakte außerhalb des Images gebaut wurden. In diesem Fall erzeugt lizardpack ein Ersatz-Dockerfile, das den fehlenden Build-Schritt enthält.
+
+Das gilt nur auf dem lizardpack-Autoerkennungspfad. Wenn `buildCommand` oder `startCommand` für den Service gesetzt ist, erzeugt Lizard stattdessen aus diesen Befehlen ein Dockerfile und berücksichtigt das Dockerfile Ihres Repos überhaupt nicht.
+
+
+
+## Mögliche Lösungen
+
+
+
+### Einen echten Build-Schritt hinzufügen
+
+Wenn Sie möchten, dass Ihr Dockerfile unverändert verwendet wird, geben Sie ihm einen tatsächlichen Build-Schritt, anstatt vorab gebaute Ausgaben zu kopieren:
+
+```dockerfile
+RUN npm ci && npm run build
+```
+
+
+
+### Oder die unveränderte Verwendung erzwingen
+
+Entfernen Sie Build- und Start-Overrides und setzen Sie dann im selben Update `dockerfilePath`. Overrides haben Vorrang vor dem Dateipfad:
+
+```bash
+lizard service set api --set buildCommand=null --set startCommand=null --set dockerfilePath=Dockerfile
+```
+
+
+
+## Siehe auch
+
+- [Build-Pipeline](/concepts/build-pipeline) — die vollständige Reihenfolge der Build-Entscheidungen.
+- [Referenz zur Build-Konfiguration](/concepts/build-pipeline#build-configuration-reference)
+- [Beliebige Python-App auf Lizard deployen](https://lizard.build/blog/python-app-hosting#deploying-any-python-app-on-lizard) — wann Sie lizardpack das Dockerfile schreiben lassen sollten und wann Sie Ihr eigenes mitbringen.
+
+Das Ändern dieser Build-Felder kann einen Build starten. Prüfen Sie `lizard events`, bevor Sie ein weiteres `redeploy` senden, um zu vermeiden, einen zweiten Build zu starten.
diff --git a/_locales/de/deploy/troubleshooting/service-never-healthy.mdx b/_locales/de/deploy/troubleshooting/service-never-healthy.mdx
new file mode 100644
index 0000000..8fbfc57
--- /dev/null
+++ b/_locales/de/deploy/troubleshooting/service-never-healthy.mdx
@@ -0,0 +1,59 @@
+---
+description: "Ein Build ist erfolgreich, aber der Bereitstellen bleibt ungesund. Port-Binding, versehentlicher Worker-Modus und weitere Ursachen für einen fehlschlagenden Health-Checks."
+---
+
+
+
+# Mein Service wird deployt, wird aber nie healthy
+
+Der Build ist erfolgreich, Replikate starten, aber der Bereitstellen bleibt ausstehend, wird als ungesund markiert oder erhält nie Traffic.
+
+
+
+## Was das bedeutet
+
+Der Health-Checks der Plattform — der prüft, ob der Port deiner App erreichbar ist — schlägt nie an, daher wird der Traffic nie auf die neuen Replikate umgeschaltet.
+
+
+
+## Warum das passieren kann
+
+- **Deine App lauscht nicht auf dem erwarteten Port.** Lizard setzt eine `PORT`-Umgebungsvariable (Standard-Container-Port `3000`) und prüft, ob deine App dort erreichbar ist. Wenn deine App fest auf einen anderen Port eingestellt ist oder nie einen Port bindet, schlägt der Health-Checks unbegrenzt fehl. Ein Python-App ist der übliche Fall: `gunicorn` und `uvicorn` binden an `127.0.0.1`, sofern du nichts anderes angibst, und die Probe kommt von außerhalb des Prozesses. [Python-App-Hosting](https://lizard.build/blog/python-app-hosting#what-a-python-app-actually-needs-from-a-host) enthält die Zeile `--bind 0.0.0.0:$PORT`, die jedes Framework braucht.
+- **Der Service ist versehentlich im Worker-Modus.** Das Setzen von `containerPort=0` versetzt einen Service in den [Worker-Modus](/deploy/workers), wodurch **der Health-Checks und die Registrierung beim Load Balancer vollständig übersprungen werden**. Ein Service, der eigentlich HTTP bereitstellen soll, aber auf `containerPort=0` umgestellt wurde, wird "erfolgreich" deployt und liefert dann einfach nie etwas aus — der Worker-Modus verdeckt das zugrunde liegende Startproblem, statt es sichtbar zu machen.
+
+
+
+## Mögliche Lösungen
+
+
+
+### Den aktuellen Port prüfen
+
+```bash
+lizard port --service api
+```
+
+Wenn hier `worker mode` ausgegeben wird, hat der Service `containerPort=0`. Setze ihn wieder auf einen echten Port zurück, wenn dieser Service HTTP bereitstellen soll:
+
+```bash
+lizard port 3000 --service api
+lizard redeploy --service api
+```
+
+
+
+### Bestätigen, dass deine App dort lauscht, wo Lizard es erwartet
+
+Prüfe die Runtime-Logs auf Startfehler und vergleiche den Port, an den die App tatsächlich gebunden wurde, mit dem, was Lizard gesetzt hat:
+
+```bash
+lizard logs --service api
+lizard ssh --service api -- env | grep PORT
+```
+
+
+
+## Siehe auch
+
+- [Background Workers](/deploy/workers) — wann `containerPort=0` sinnvoll ist (und wann nicht).
+- [Bereitstellungen → lifecycle](/concepts/deployments#lifecycle) — wo der Health-Checks innerhalb eines Deploys stattfindet.
diff --git a/_locales/de/deploy/upload.mdx b/_locales/de/deploy/upload.mdx
new file mode 100644
index 0000000..39d0366
--- /dev/null
+++ b/_locales/de/deploy/upload.mdx
@@ -0,0 +1,82 @@
+---
+description: "Stelle das aktuelle Verzeichnis mit lizard up bereit, ganz ohne Git. Behandelt gitignore, Build- und Start-Overrides sowie die Nutzung in headless CI."
+---
+
+
+
+# Bereitstellung aus lokalem Code
+
+Wenn dein Code nicht auf GitHub liegt — oder du einfach schnell iterieren willst — lade das aktuelle Verzeichnis direkt mit `lizard up` hoch. Dabei wird dein Arbeitsverzeichnis als Tarball gepackt, an die Build-Knoten gesendet und bereitgestellt.
+
+
+
+## Das aktuelle Verzeichnis bereitstellen
+
+```bash
+lizard up
+```
+
+- Lädt das aktuelle Verzeichnis als Tarball hoch und beachtet dabei `.gitignore` (deaktivierbar mit `--no-gitignore`).
+- Erzwingt `sourceType=upload`.
+- Streamt Build-Logs über SSE und gibt nach Abschluss die Live-URL aus.
+
+Wenn das Verzeichnis noch nicht mit einem Projekt verknüpft ist, führt `up` zuerst `init` aus. In einem TTY ist das interaktiv; in einem non-TTY (CI) wird **nicht** stillschweigend ein Projekt erstellt — stattdessen gibt es einen Fehler und die Aufforderung, `lizard init --name ` auszuführen (oder `--name` zu übergeben). Das schützt davor, dass ein Tippfehler ein leeres Projekt erzeugt.
+
+
+
+## Häufige Flags
+
+| Flag | Zweck |
+|------|---------|
+| `-s, --service ` | Einen bestimmten Service ansprechen/erstellen |
+| `--build-command ` | Den Build-Befehl überschreiben |
+| `--start-command ` | Den Start-Befehl überschreiben |
+| `--pre-deploy-command ` | Vor jeder Bereitstellung einmal ausführen (z. B. Migrationen) |
+| `--port ` | Container-Port (`0` = [Worker-Modus](/deploy/workers)) |
+| `--region ` | Region für die Bereitstellung |
+| `-d, --detach` | Bereitstellung starten und beenden, ohne Logs zu streamen |
+| `-c, --ci` | CI-freundliche Ausgabe |
+| `--no-gitignore` | Alles hochladen und `.gitignore` ignorieren |
+
+```bash
+lizard up --service api --start-command "node server.js" --port 8080
+```
+
+
+
+## Build-/Start-Befehle festlegen
+
+Wenn du `--build-command` oder `--start-command` übergibst, wechselt der Service auf den Pfad mit dem **synthetisierten Dockerfile**. Auf diesem Pfad werden `Procfile` und `package.json` `scripts.start` **nicht** gelesen — setze den Start-Befehl daher explizit (oder füge ein `CMD` in dein eigenes Dockerfile ein). Siehe [Build-Pipeline](/concepts/build-pipeline). Besonders oft tritt das bei Python auf: [Django, Flask und FastAPI](https://lizard.build/blog/python-app-hosting#deploying-django) benötigen jeweils eine andere Zeile für `gunicorn` oder `uvicorn`.
+
+
+
+## Einen Upload-Service erneut bereitstellen
+
+`lizard up` lädt erneut hoch und baut neu. Um den **letzten** Upload mit den aktuellen Variablen neu zu bauen, ohne erneut hochzuladen:
+
+```bash
+lizard redeploy --service api
+```
+
+## Headless / CI
+
+Für nicht interaktive Abläufe verknüpfe das Projekt vor der Bereitstellung ausdrücklich:
+
+```bash
+export LIZARD_TOKEN=lzd_xxx
+lizard init --name my-project
+lizard up --ci --service api
+```
+
+
+
+## Wann GitHub stattdessen besser ist
+
+Upload eignet sich hervorragend für schnelle Iterationen und Situationen ohne Remote. Für alles, was langfristig läuft, ist eine [GitHub-Quelle](/deploy/github) die bessere Wahl, damit Pushes automatisch neu bereitgestellt werden und du eine saubere Bereitstellungshistorie erhältst.
+
+
+
+## Siehe auch
+
+- [`lizard up`](/cli/up) — die vollständige Befehlsreferenz.
+- [Build-Pipeline](/concepts/build-pipeline) — wie dein Stack erkannt und gebaut wird.
diff --git a/_locales/de/deploy/workers.mdx b/_locales/de/deploy/workers.mdx
new file mode 100644
index 0000000..3807c77
--- /dev/null
+++ b/_locales/de/deploy/workers.mdx
@@ -0,0 +1,124 @@
+---
+description: "Führen Sie Queue-Consumer und Polling-Schleifen ohne HTTP-Port aus. Was containerPort=0 ändert, wie Sie den Worker-Modus aktivieren und wann Sie ihn nicht verwenden sollten."
+---
+
+
+
+# Hintergrund-Worker
+
+Nicht jeder Dienst stellt HTTP bereit. Queue-Consumer, Reconciler, Cron-artige Polling-Schleifen und andere Hintergrund-Workloads lauschen nicht auf einem Port — führen Sie sie im **Worker-Modus** aus, indem Sie den Container-Port auf `0` setzen.
+
+
+
+## Was der Worker-Modus ändert
+
+Wenn `containerPort=0`, macht die Plattform Folgendes:
+
+- **Überspringt die `PORT`-Injektion** — der Worker bindet nirgendwo.
+- **Überspringt die Erreichbarkeitsprüfung des Ports** — kein `app port X unreachable`-Log-Spam und kein falsch-positiver Status „unhealthy“.
+- **Überspringt `EXPOSE`** im erzeugten Dockerfile.
+- **Überspringt die Registrierung von Load-Balancer-Routen** — es wird nichts bereitgestellt. (Eine generierte `*.onlizard.com`-Domain kann beim Dienst dennoch erscheinen, antwortet aber nicht.)
+
+
+
+## Worker-Modus aktivieren
+
+Drei gleichwertige Möglichkeiten:
+
+```bash
+# New upload-source worker
+lizard up --port 0
+
+# Flip an existing service
+lizard port 0 --service worker
+
+# Via the config:apply path
+lizard service set worker --set containerPort=0
+```
+
+Der Worker-Modus ist eine harte Umschaltung — ein Redeploy ist erforderlich, damit die Port-Änderung wirksam wird.
+
+
+
+## Den aktuellen Port prüfen
+
+```bash
+lizard port --service worker
+```
+
+Gibt den aktuellen Container-Port aus, oder `worker mode`, wenn er `0` ist.
+
+
+
+## Wann Sie den Worker-Modus *nicht* verwenden sollten
+
+Verwenden Sie den Worker-Modus nicht für einen normalen HTTP-Dienst, der nur langsam startet. Der Worker-Modus deaktiviert die Erreichbarkeitsprüfung vollständig und wird dadurch Fehler **verbergen** wie „der Listener ist nie hochgekommen“. Wenn Ihr Dienst Traffic bedienen soll, behalten Sie einen echten Port bei und beheben Sie stattdessen den Startvorgang.
+
+
+
+## Einen Queue-Consumer ausführen
+
+Verwenden Sie das Beispiel [redis-worker](https://github.com/lizard-build/docs/tree/23635ba7e162bafce75d3f6206553b3ef2c0c48e/_examples/redis-worker). Es verschiebt einen Job aus einer Pending-Liste in eine Processing-Liste, speichert sein Ergebnis in Großbuchstaben und bestätigt den Job in einer Redis-Transaktion. Behalten Sie ein Replikat bei: Die Wiederherstellung beim Start geht von einem einzelnen Consumer aus. Das Beispiel verwendet Python 3.13 und redis-py 6.4.0.
+
+Aus dem Verzeichnis mit dem Dockerfile:
+
+```bash
+lizard init --name queue-example
+lizard add --service worker
+lizard add redis
+lizard secrets set REDIS_URL='${{redis.REDIS_URL}}' --service worker
+lizard up --service worker --port 0
+```
+
+Melden Sie sich mit `lizard login` an, wenn ein Befehl meldet, dass eine Authentifizierung erforderlich ist. Verwenden Sie den tatsächlichen Namen der Datenbank, falls er nicht `redis` ist. Lassen Sie die Referenz in Anführungszeichen. Setzen Sie sie, bevor Sie die Anwendung hochladen. Unter macOS mit Lizard CLI 0.3.92 stellen Sie `lizard up` `COPYFILE_DISABLE=1` voran, um AppleDouble-Metadaten auszuschließen.
+
+Prüfen Sie das letzte Bereitstellen-Ereignis und dann den Worker:
+
+```bash
+lizard port --service worker
+lizard logs --service worker --json
+lizard ssh --service worker -- python jobs.py enqueue first-job
+lizard ssh --service worker -- python jobs.py result first-job
+```
+
+Der Prozess gibt `Queue worker ready` aus. Wenn das Log-Tail leer ist, fahren Sie mit der untenstehenden Job-Prüfung fort; die [Testergebnisse](/guides/validation) dokumentieren das beobachtete Logging-Limit. Der Ergebnisbefehl wartet bis zu 30 Sekunden und gibt `{"id": "first-job", "result": "HELLO"}` aus. Ein laufender Prozess allein beweist nicht, dass er einen Job verarbeiten kann. Managed Redis wird aus dem Dienst heraus erreicht; der CLI-Befehl setzt nicht voraus, dass Ihr Laptop seine private Adresse erreichen kann.
+
+
+
+## Einen Neustart prüfen
+
+Für diesen Testdienst starten Sie den Worker neu und senden einen weiteren Job ab:
+
+```bash
+lizard restart --service worker
+lizard ssh --service worker -- python jobs.py result first-job
+lizard ssh --service worker -- python jobs.py enqueue after-restart
+lizard ssh --service worker -- python jobs.py result after-restart
+```
+
+Warten Sie, bis der Dienst wieder `running` in `lizard ps --json` meldet, falls SSH noch nicht verfügbar ist. Beide Ergebnisse sollten `HELLO` sein. Das erste Ergebnis liegt in Redis, daher entfernt ein Worker-Neustart es nicht. Beim Start verschiebt der einzelne Consumer nicht abgeschlossene Processing-Einträge zurück in die Pending-Liste.
+
+Diese Demo akzeptiert nur die JSON-Jobs, die von `jobs.py` erstellt werden. Sie implementiert weder eine Dead-Letter-Queue noch eine Validierung für nicht vertrauenswürdige Producer oder Exactly-once-Nebeneffekte nach außen. Verwenden Sie für Zahlungen, E-Mails oder andere Effekte eine etablierte Queue-Bibliothek und idempotente Handler. Redis-Dauerhaftigkeit und Backups sind getrennt vom Verhalten bei Worker-Neustarts zu betrachten; siehe [Speicherung und Wiederherstellung](/platform/storage-and-recovery).
+
+
+
+## Fehlerbehebung
+
+| Symptom | Prüfung |
+|---|---|
+| Fehlender Dienst | Führen Sie nach dem Erstellen des Projekts `lizard add --service worker` aus. |
+| Kein `Queue worker ready` | Prüfen Sie das dienstbezogene `REDIS_URL`, die Bereitschaft des Add-ons und Verbindungsfehler. Geben Sie niemals den Connection String aus. |
+| Worker erwartet einen HTTP-Port | Setzen Sie `containerPort=0`; das Ändern bei einem laufenden Dienst erfordert ein Redeploy. |
+| Kein Ergebnis nach 30 Sekunden | Lesen Sie die Worker-Logs und prüfen Sie die Job-ID. Dieses Beispiel akzeptiert nur Jobs aus seinem eigenen `jobs.py`. |
+| Doppelte Effekte | Ein Retry kann Arbeit erneut ausführen. Dieses Beispiel speichert ein Ergebnis nach Job-ID; externe Effekte benötigen eine eigene Idempotenz. |
+
+
+
+## Siehe auch
+
+- [`lizard port`](/cli/port) — Container-Port eines Dienstes anzeigen oder ändern.
+- [Dienst wird nie healthy](/deploy/troubleshooting/service-never-healthy) — die häufigste Fehlkonfiguration im Worker-Modus.
+- [Managed Addons](/addons) — Redis, Postgres und S3 für zustandsbehaftete Workloads.
+- [Python-App-Hosting](https://lizard.build/blog/python-app-hosting#deploying-django) — ein Celery-Worker ist dasselbe Image mit einem anderen Befehl und ohne HTTP-Port.
+
+Siehe [Testergebnisse zum Szenario](/guides/validation) für geprüfte Versionen, Cloud-Ergebnisse und verbleibende Einschränkungen.
diff --git a/_locales/de/framework-guides/_meta.ts b/_locales/de/framework-guides/_meta.ts
new file mode 100644
index 0000000..13b1f0c
--- /dev/null
+++ b/_locales/de/framework-guides/_meta.ts
@@ -0,0 +1,16 @@
+export default {
+ index: "Überblick",
+ nextjs: { title: "Next.js", display: "children" },
+ react: "React (Vite)",
+ vue: "Vue (Vite)",
+ astro: "Astro",
+ nuxt: "Nuxt",
+ sveltekit: "SvelteKit",
+ fastapi: "FastAPI",
+ django: "Django",
+ docusaurus: "Docusaurus",
+ vitepress: "VitePress",
+ hugo: "Hugo",
+ 'static-routing': "Statische Routen & 404-Seiten",
+ validation: "Getestete Versionen & Ergebnisse",
+};
diff --git a/_locales/de/framework-guides/astro.mdx b/_locales/de/framework-guides/astro.mdx
new file mode 100644
index 0000000..4111316
--- /dev/null
+++ b/_locales/de/framework-guides/astro.mdx
@@ -0,0 +1,98 @@
+---
+description: "Stelle Astro auf Lizard als statische Website oder mit dem eigenständigen Node-Adapter bereit. Konfiguriere output, Build-Befehle, Ports und Prüfungen für Serverrouten und fehlende Seiten."
+---
+
+
+
+# Astro auf Lizard bereitstellen
+
+Astro hat auf Lizard zwei Bereitstellungswege: ein statisches Verzeichnis `dist/` auf Port `80` bereitstellen oder den eigenständigen Node-Adapter auf Port `3000` für bedarfsgesteuerte Routen ausführen. Wähle den Modus vor dem Deployment, weil der Adapter sowohl die Ausgabe als auch die Laufzeitumgebung verändert.
+
+
+
+## Modus wählen
+
+| Modus | Konfiguration | Laufzeitumgebung | Port |
+|---|---|---|---|
+| Statische Website | Statische Ausgabe ohne Server-Adapter | nginx stellt `dist/` bereit | `80` |
+| Node-Server | `@astrojs/node` im Standalone-Modus | `node ./dist/server/entry.mjs` | `3000` |
+
+Beide Wege verwenden ein `build`-Skript, das `astro build` ausführt. Committe die Lockfile und behalte den standardmäßigen Ausgabepfad `dist` bei. Die Erkennung liest die Astro-Konfiguration und installierte Abhängigkeiten. Eine ungenutzte Node-Adapter-Abhängigkeit allein wählt den Serverpfad nicht aus. Verwende literales `output` und Adapter-Einstellungen; dynamische Werte, benutzerdefinierte Ausgabepfade und Middleware-Modus benötigen ein Dockerfile.
+
+
+
+## Einen Node-Server konfigurieren
+
+Für bedarfsgesteuerte Seiten füge eine Node-Adapter-Version hinzu, die mit deiner Astro-Version kompatibel ist:
+
+```bash
+npx astro add node
+```
+
+Prüfe `astro.config.mjs`:
+
+```js
+import { defineConfig } from 'astro/config';
+import node from '@astrojs/node';
+
+export default defineConfig({
+ output: 'server',
+ adapter: node({ mode: 'standalone' }),
+});
+```
+
+Der Standalone-Modus startet seinen eigenen HTTP-Server. Der Middleware-Modus erfordert einen separaten Server und passt nicht zu diesem Startbefehl. Lies den [Astro Node Adapter Anleitung](https://docs.astro.build/en/guides/integrations-guide/node/), wenn du Middleware oder eine Mischung aus vorgerenderten und bedarfsgesteuerten Routen brauchst.
+
+
+
+## Lokal testen
+
+```bash
+npm ci
+npm run build
+```
+
+Für den Node-Modus:
+
+```bash
+HOST=0.0.0.0 PORT=3000 node ./dist/server/entry.mjs
+```
+
+Rufe eine Route auf, die tatsächlich auf dem Server ausgeführt wird, und ein gebautes Asset. Für eine statische Website verwende lokal `npm run preview` und prüfe die generierten Routendateien in `dist/`.
+
+
+
+## Bereitstellen
+
+Erstelle nach dem [CLI-Setup](/framework-guides#prepare-the-project) das Projekt:
+
+```bash
+lizard init --name astro-app
+lizard add --service web
+```
+
+Für den Node-Adapter:
+
+```bash
+lizard up --service web --port 3000
+```
+
+Für eine statische Website:
+
+```bash
+lizard up --service web --port 80
+```
+
+Verwende nur den Befehl für den gewählten Modus. Lass Überschreibungen des Service-Befehls für die lizardpack-Erkennung ungesetzt. Lies `lizard logs --build --service web --json` und prüfe dann die Laufzeitprotokolle und die Live-URL.
+
+
+
+## Variablen, Sessions und Routen
+
+Werte, die zum Erzeugen von statischem HTML verwendet werden, erfordern einen neuen Build, wenn sie sich ändern. Servercode kann Laufzeitvariablen über die von deiner Astro-Version unterstützten Mechanismen lesen; konfiguriere sie unter [Variablen und Secrets](/variables). Im Browser sichtbare Werte dürfen keine Zugangsdaten enthalten.
+
+Wenn deine App Sessions verwendet, wähle einen Speicher, der zu Neustarts und mehreren Replikaten passt. Verlasse dich nicht auf das Container-Dateisystem als gemeinsamen dauerhaften Speicher. Siehe [Storage und Wiederherstellung](/platform/storage-and-recovery).
+
+Teste bei einer Website mit statischen Inhalten eine fehlende URL und verwende [statische Routen und 404-Seiten](/framework-guides/static-routing), um den korrekten Status zurückzugeben. Wenn ein SSR-Deployment beendet wird oder keine Routen bereitstellt, prüfe, dass `dist/server/entry.mjs` existiert, der Adapter den Standalone-Modus verwendet und der Service-Port `3000` ist.
+
+Siehe [getestete Versionen und Cloud-Ergebnisse](/framework-guides/validation) für die Deployment-Prüfungen vom 9. September 2026 und deren Grenzen.
diff --git a/_locales/de/framework-guides/django.mdx b/_locales/de/framework-guides/django.mdx
new file mode 100644
index 0000000..081007c
--- /dev/null
+++ b/_locales/de/framework-guides/django.mdx
@@ -0,0 +1,221 @@
+---
+description: "Stelle Django auf Lizard mit Gunicorn, einem expliziten WSGI-Modul, Port 8000, Produktionseinstellungen, Datenbankmigrationen und einem Plan für statische sowie hochgeladene Dateien bereit."
+---
+
+
+
+# Django auf Lizard bereitstellen
+
+Führe Django auf Lizard mit Gunicorn und dem WSGI-Modul deines Projekts auf Port `8000` aus. Bereite Produktionseinstellungen, Datenbankzugriff und die Bereitstellung statischer Dateien vor, bevor du dich auf die bereitgestellte App verlässt. `manage.py runserver` ist ein Entwicklungsserver.
+
+
+
+## Startbefehl festlegen
+
+Diese Anleitung setzt `manage.py`, `requirements.txt` und ein Projektpaket namens `config` voraus, das `wsgi.py` enthält. Ersetze `config` durch deinen tatsächlichen Paketnamen.
+
+Nimm Django, Gunicorn und den Datenbanktreiber, den deine App verwendet, in deine getesteten Anforderungen auf. Füge ein `Procfile` hinzu:
+
+```text
+web: gunicorn config.wsgi:application --bind 0.0.0.0:8000
+```
+
+Das explizite Modul vermeidet Unklarheiten, wenn Einstellungen in verschachtelten Paketen liegen. Eine ASGI-App mit WebSockets benötigt einen ASGI-Server und einen anderen Startbefehl; diese Anleitung behandelt WSGI.
+
+| Einstellung | Wert |
+|---|---|
+| Installation | `pip install -r requirements.txt` |
+| Laufzeit | Gunicorn mit deinem WSGI-Modul |
+| Service-Port | `8000` |
+| Arbeitsverzeichnis | Verzeichnis, das `manage.py` enthält |
+
+
+
+## Produktionseinstellungen vorbereiten
+
+Django erwartet ein `DATABASES`-Wörterbuch in `settings.py`. Wenn du `DATABASE_URL` nur für den Service setzt, verbindet das Django nicht mit PostgreSQL. Die folgenden Schritte erstellen [Managed Postgres](/addons/postgres), übergeben seine URL an die App und wandeln diese URL in Djangos Verbindungseinstellungen um.
+
+Füge diese Pakete zu `requirements.txt` hinzu und behalte alle weiteren Abhängigkeiten bei, die deine App benötigt. Dies sind die Versionen, die im [vollständigen Beispiel](https://github.com/lizard-build/docs/tree/main/_examples/django) verwendet werden:
+
+```text
+Django==6.1.1
+gunicorn==26.2.0
+whitenoise==6.12.0
+psycopg[binary]==3.3.5
+dj-database-url==3.1.2
+```
+
+`psycopg` ist der PostgreSQL-Treiber. `dj-database-url` liest Datenbankname, Benutzer, Passwort, Host und Port aus der Verbindungs-URL. Ersetze die entsprechenden Einstellungen in der `settings.py` deines Projekts durch diesen Block; behalte deine vorhandenen Apps, Middleware, Vorlagen und weiteren Einstellungen bei:
+
+```python
+import os
+from pathlib import Path
+
+import dj_database_url
+from django.core.exceptions import ImproperlyConfigured
+
+BASE_DIR = Path(__file__).resolve().parent.parent
+
+
+def required_env(name):
+ value = os.environ.get(name, "").strip()
+ if not value:
+ raise ImproperlyConfigured(f"Set the {name} environment variable.")
+ return value
+
+
+def env_list(name):
+ values = [item.strip() for item in required_env(name).split(",") if item.strip()]
+ if not values:
+ raise ImproperlyConfigured(f"Set at least one value in {name}.")
+ return values
+
+
+SECRET_KEY = required_env("SECRET_KEY")
+debug_value = os.environ.get("DEBUG", "false").strip().lower()
+if debug_value not in {"true", "false"}:
+ raise ImproperlyConfigured("DEBUG must be true or false.")
+DEBUG = debug_value == "true"
+ALLOWED_HOSTS = env_list("ALLOWED_HOSTS")
+CSRF_TRUSTED_ORIGINS = env_list("CSRF_TRUSTED_ORIGINS")
+DATABASES = {
+ "default": dj_database_url.parse(
+ required_env("DATABASE_URL"),
+ conn_max_age=60,
+ conn_health_checks=True,
+ )
+}
+```
+
+Lass keine ältere Zuweisung für `DATABASES`, `SECRET_KEY` oder `DEBUG` weiter unten in der Datei stehen: Sie würde diese Werte überschreiben. Dieses Beispiel erfordert nichtleere Werte für `SECRET_KEY`, `DATABASE_URL`, `ALLOWED_HOSTS` und `CSRF_TRUSTED_ORIGINS`. Fehlende oder leere Werte stoppen den Start mit dem Namen der Variablen. `DEBUG` ist standardmäßig `false`; setze es im bereitgestellten Service auf `false`.
+
+`ALLOWED_HOSTS` akzeptiert kommagetrennte Hostnamen ohne Schema oder Pfad, zum Beispiel `app.example.com,www.example.com`. `CSRF_TRUSTED_ORIGINS` akzeptiert kommagetrennte Origins mit Schema, zum Beispiel `https://app.example.com`. Gib bei lokalen Origins einen Port an, wenn einer verwendet wird. Das Beispiel erfordert eine explizite Origin-Liste; Django selbst erlaubt eine leere Liste für Apps, die keine zusätzlichen vertrauenswürdigen Origins benötigen. Vertraue nur Origins, die Formulare an diese App senden sollen. Diese Einstellungen ersetzen keine CSRF-Tokens.
+
+Die URL stammt aus einem [Secret oder einer Referenz](/variables) des Service, nicht aus einem im Quellcode gespeicherten Wert. Verwende kein containerlokales SQLite als dauerhafte Datenbank für eine bereitgestellte App. Siehe [Verwendung von dj-database-url](https://pypi.org/project/dj-database-url/) für das Parsen von URLs und Verbindungsoptionen.
+
+Wenn deine lokalen Umgebungsvariablen gesetzt sind und PostgreSQL erreichbar ist, führe aus:
+
+```bash
+python -m pip install -r requirements.txt
+python manage.py check --deploy
+gunicorn config.wsgi:application --bind 0.0.0.0:8000
+```
+
+Prüfe Djangos [Deployment-Checkliste](https://docs.djangoproject.com/en/6.1/howto/deployment/checklist/) auf Einstellungen, die für deine App relevant sind. Das kleine Beispiel konfiguriert nicht jede Produktionseinstellung für Sicherheit. Prüfe Proxy- und HTTPS-Verhalten mit der tatsächlichen öffentlichen URL, bevor du sichere Cookies, HSTS oder Weiterleitungen aktivierst. Vertraue weitergeleiteten HTTPS-Headern nur, wenn der Proxy sie kontrolliert.
+
+
+
+## Statische Dateien und Migrationen planen
+
+Gunicorn allein stellt Djangos statische Dateien nicht bereit. Wähle entweder für die App konfigurierte Static-File-Middleware oder einen separaten Host für statische Dateien. Sammle Assets in den Pfad, den das Setup bereitstellt. Der Python-Pfad von lizardpack auf Basis von Requirements führt `collectstatic` nicht automatisch aus; füge ihn in einen vollständigen Dockerfile-Build ein, wenn die App diesen Schritt benötigt.
+
+Für WhiteNoise belasse `django.contrib.staticfiles` in `INSTALLED_APPS` und füge `whitenoise.middleware.WhiteNoiseMiddleware` direkt nach Djangos `SecurityMiddleware` ein. Füge diese Einstellungen hinzu oder aktualisiere sie:
+
+```python
+STATIC_URL = "/static/"
+STATIC_ROOT = BASE_DIR / "staticfiles"
+STORAGES = {
+ "default": {"BACKEND": "django.core.files.storage.FileSystemStorage"},
+ "staticfiles": {
+ "BACKEND": "whitenoise.storage.CompressedManifestStaticFilesStorage",
+ },
+}
+```
+
+Behalte dein vorhandenes Backend für `STORAGES["default"]` bei, wenn die App Uploads bereits woanders speichert. WhiteNoise stellt gesammelte statische Assets bereit, nicht von Benutzern hochgeladene Dateien.
+
+Verwende dieses Dockerfile im Projektstammverzeichnis:
+
+```dockerfile
+FROM python:3.13-slim
+WORKDIR /app
+COPY requirements.txt ./
+RUN pip install --no-cache-dir -r requirements.txt
+COPY . .
+RUN SECRET_KEY=build-only-placeholder \
+ DATABASE_URL=postgresql://build:build@127.0.0.1:1/build \
+ ALLOWED_HOSTS=localhost CSRF_TRUSTED_ORIGINS=http://localhost \
+ python manage.py collectstatic --noinput
+EXPOSE 8000
+CMD ["gunicorn", "config.wsgi:application", "--bind", "0.0.0.0:8000"]
+```
+
+Die Werte in der Zeile `RUN` gelten nur für `collectstatic`. Die Datenbank-URL ist ein Platzhalter, der auf einen ungenutzten lokalen Port zeigt; dort läuft keine Datenbank. Beim Laden der Einstellungen wird die URL geparst, aber das Sammeln von Assets benötigt keine Datenbankverbindung. Führe keine Datenbankabfragen aus Modulimporten oder `AppConfig.ready()` aus. Das Beispiel übergibt außerdem `collectstatic` bei deaktiviertem Containernetzwerk.
+
+Diese Zuweisungen werden nicht zu Umgebungsvariablen zur Laufzeit. Setze vor dem Start für den Service ein neues `SECRET_KEY` und die echte Datenbankreferenz. Übergib keine Produktionsgeheimnisse an den Docker-Build.
+
+Erstelle `.dockerignore` und schließe dieselben Pfade von [Source Uploads](/cli/up) aus:
+
+```text
+.env*
+.venv/
+venv/
+.git/
+__pycache__/
+*.pyc
+*.sqlite3
+staticfiles/
+```
+
+Bewahre Benutzer-Uploads in dauerhaftem Speicher auf, etwa [Managed Object Storage](/addons/storage), statt im statischen Verzeichnis des Containers. Prüfe [Speicherung und Wiederherstellung](/platform/storage-and-recovery).
+
+Behandle Datenbankmigrationen als separaten Release-Schritt. Sichere Daten bei Bedarf, mache Migrationen sicher erneut ausführbar und wende sie an, bevor Requests das neue Schema benötigen. Ein Befehl vor dem Bereitstellen ist kein Ersatz dafür, Nebenläufigkeit und Fehlerverhalten zu prüfen.
+
+
+
+## Bereitstellen und prüfen
+
+Nach dem [CLI-Setup](/framework-guides#prepare-the-project) verbindest du einen [GitHub-Service](/deploy/github), konfigurierst seine Secrets und Produktionseinstellungen und stellst ihn mit Container-Port `8000` bereit. Für ein neues uploadbasiertes Projekt:
+
+```bash
+lizard init --name django-app
+lizard add --service web
+```
+
+Erstelle [Managed Postgres](/addons/postgres) in diesem Projekt. Wenn du bereits eine Instanz hast, überspringe `add postgres` und verwende ihren Namen in der Referenz:
+
+```bash
+lizard add postgres --name postgres
+```
+
+Setze die [Service Secrets](/cli/secrets) der App. Das `postgres` in `${{postgres.DATABASE_URL}}` bezeichnet den Datenbank-Service, nicht einen Django-Datenbankalias. Lizard löst die [Referenz](/variables/references) beim Bereitstellen auf und injiziert die resultierende URL in den Prozess `web`. Die einfachen Anführungszeichen verhindern, dass deine Shell die Referenz expandiert. Der oben stehende Block `settings.py` wandelt die URL dann in `DATABASES["default"]` um.
+
+```bash
+DJANGO_SECRET_KEY="$(python -c 'import secrets; print(secrets.token_urlsafe(48))')"
+lizard secrets set SECRET_KEY="$DJANGO_SECRET_KEY" \
+ DATABASE_URL='${{postgres.DATABASE_URL}}' DEBUG=false \
+ ALLOWED_HOSTS=localhost CSRF_TRUSTED_ORIGINS=http://localhost \
+ --service web
+lizard up --service web --port 8000
+lizard ps --json
+```
+
+`localhost` ist eine vorläufige Host-Einstellung, die es dem Prozess erlaubt zu starten, während du seinen öffentlichen Hostnamen ermittelst; öffentliche Requests geben 400 zurück. Wenn du den Hostnamen bereits kennst, setze ihn vor dem ersten Upload. Andernfalls ersetze diese Platzhalter durch den Hostnamen und die HTTPS-Origin, die für deinen Service zurückgegeben wurden:
+
+```bash
+lizard secrets set ALLOWED_HOSTS=YOUR_PUBLIC_HOST \
+ CSRF_TRUSTED_ORIGINS=https://YOUR_PUBLIC_HOST --service web
+```
+
+Ein fehlendes Referenzziel oder ein fehlender Schlüssel kann zu einer leeren Zeichenfolge aufgelöst werden. Die Prüfung auf erforderliche Werte stoppt Django dann mit `Set the DATABASE_URL environment variable.`. Prüfe den Namen des Datenbank-Service und seinen Schlüssel `DATABASE_URL`; gib die Verbindungs-URL nicht in Logs aus.
+
+Die Variablenänderung startet den Prozess neu. Schließe lokale virtuelle Umgebungen, Secrets und lokale Datenbanken von Uploads aus. Sobald der Prozess läuft, wende Migrationen an:
+
+```bash
+lizard ssh --service web -- python manage.py migrate --noinput
+```
+
+Führe den Befehl erneut aus, um zu prüfen, dass keine Migrationen mehr ausstehen. Betrachte eine erfolgreiche Port-Prüfung nicht als Nachweis dafür, dass Tabellen existieren.
+
+Prüfe die App-URL, eine datenbankgestützte Seite, eine Formularübermittlung und ein statisches Asset. Wenn die App Django admin verwendet, prüfe auch dessen CSS. Lies `lizard logs --service web --json` auf Import- oder Einstellungsfehler. Eine 400-Antwort bedeutet oft, dass `ALLOWED_HOSTS` falsch ist; fehlendes CSS bedeutet meist, dass statische Assets nicht gesammelt oder nicht bereitgestellt wurden. Prüfe den tatsächlichen Fehler, bevor du Einstellungen änderst.
+
+Siehe [getestete Versionen und Cloud-Ergebnisse](/framework-guides/validation) für die Deployment-Prüfungen vom 9. September 2026 und ihre Grenzen.
+
+
+
+
+## Dieses Beispiel reproduzieren
+
+Das [Django-Beispiel](https://github.com/lizard-build/docs/tree/main/_examples/django) enthält die Einstellungen, das Dockerfile, Requirements, ein datenbankgestütztes Formular und einen Test-Runner. Kopiere es in ein eigenständiges Verzeichnis und führe `python3 tests/verify.py` aus, während Docker läuft. Es baut das Image, startet lokales PostgreSQL, prüft Migrationen und HTTP-Verhalten und stoppt seine Test-Container. Es erstellt keine Lizard-Services. In der README findest du die Prüfungen und beibehaltenen Docker-Ressourcen.
+
+Die Prüfung vom 14. September 2026 deckt dieses überarbeitete Beispiel in lokalen Linux-Containern ab. Die oben verlinkten früheren Cloud-Ergebnisse beziehen sich auf die Anleitung vom 9. September; die überarbeiteten Einstellungen hatten noch kein neues Cloud-Deployment.
diff --git a/_locales/de/framework-guides/docusaurus.mdx b/_locales/de/framework-guides/docusaurus.mdx
new file mode 100644
index 0000000..d623f06
--- /dev/null
+++ b/_locales/de/framework-guides/docusaurus.mdx
@@ -0,0 +1,88 @@
+---
+description: "Stelle Docusaurus auf Lizard als statische Dokumentations-Website bereit. Erstelle das build-Verzeichnis, setze URL und baseUrl, verwende Port 80 und prüfe direkte Routen sowie echte 404-Fehler."
+---
+
+
+
+# Docusaurus auf Lizard bereitstellen
+
+Erstelle Docusaurus auf Lizard und liefere das erzeugte Verzeichnis `build/` über nginx auf Port `80` aus. Die Produktionsbereitstellung liefert statische Dateien aus; sie führt nicht den Entwicklungsserver `docusaurus start` aus.
+
+Beginne mit dem [vollständigen Quellcodebeispiel](https://github.com/lizard-build/docs/tree/main/_examples/docusaurus), das die Konfiguration und Dateien enthält, die in dieser Anleitung verwendet werden.
+
+
+
+## Website vorbereiten
+
+Führe den Befehl im Docusaurus-Verzeichnis aus, das `package.json`, die zugehörige Lockfile und `docusaurus.config.*` enthält. Belasse `@docusaurus/core` in den Abhängigkeiten sowie ein Build-Skript, das `docusaurus build` ausführt.
+
+| Einstellung | Wert |
+|---|---|
+| Build | `npm run build` |
+| Output | `build/` |
+| Runtime | nginx |
+| Service-Port | `80` |
+
+Setze `url` in der Docusaurus-Konfiguration auf den vorgesehenen öffentlichen Ursprung der Website und `baseUrl` auf den Pfad, unter dem sie ausgeführt wird. Für eine Website an der Domain-Wurzel ist `baseUrl` gleich `/`. Sobald du den endgültigen Hostnamen kennst, erstelle die Website mit diesem Hostnamen neu, damit erzeugte kanonische URLs und Sitemap-Einträge ihn verwenden.
+
+Wähle eine konsistente Trailing-Slash-Richtlinie und prüfe die erzeugten Dateien. Behalte das Standard-Ausgabeverzeichnis bei, sofern du kein Dockerfile bereitstellst, das dein benutzerdefiniertes Verzeichnis kopiert. Der [Docusaurus-Bereitstellungsleitfaden](https://docusaurus.io/docs/deployment) erklärt diese Framework-Einstellungen.
+
+
+
+## Lokal erstellen und prüfen
+
+```bash
+npm ci
+npm run build
+npm run serve
+```
+
+Der letzte Befehl setzt voraus, dass dein Projekt das Skript `serve` aus dem Scaffold enthält. Prüfe die Startseite, eine verschachtelte Dokumentationsseite, ein Bild und eine versionierte Seite, falls du Dokumentationsversionen verwendest. Behebe defekte Links, die beim Build gemeldet werden, vor der Bereitstellung.
+
+
+
+## Bereitstellen
+
+Nach dem [CLI-Setup](/framework-guides#prepare-the-project):
+
+```bash
+lizard init --name docusaurus-docs
+lizard add --service web
+lizard up --service web --port 80
+lizard logs --build --service web --json
+lizard ps --json
+```
+
+Wenn du den erzeugten Hostnamen verwendest, lies ihn nach der ersten Bereitstellung aus:
+
+```bash
+lizard service show web --json
+```
+
+Setze `url` in `docusaurus.config.js` auf diesen Hostnamen:
+
+```js
+url: 'https://YOUR_PUBLIC_HOST',
+```
+
+Lade die geänderte Konfiguration hoch, damit der Build die öffentliche URL verwendet:
+
+```bash
+lizard up --service web --port 80
+```
+
+
+Committe Quellcode, Plugins, Konfiguration und die Lockfile. Schließe `node_modules/`-, `build/`-, `.docusaurus/`- und `.env`-Dateien von Uploads aus. Lasse Überschreibungen für den Service-Befehl ungesetzt, um den Docusaurus-Erkennungspfad zu verwenden.
+
+
+
+## Innere Routen und fehlende Seiten ausliefern
+
+Neue Docusaurus-Builds liefern erzeugte Routendateien aus und geben für unbekannte Pfade HTTP 404 zurück. Für diese Routing-Richtlinie ist kein benutzerdefiniertes Dockerfile erforderlich. Wenn dein Service noch ein Image verwendet, das vor dem Routing-Fix vom September 2026 erstellt wurde, erstelle es neu. Verwende [statische Routen und 404-Fehler](/framework-guides/static-routing) nur, wenn du benutzerdefiniertes nginx-Verhalten brauchst.
+
+Fordere nach der Bereitstellung direkt eine verschachtelte Docs-URL an, aktualisiere sie und prüfe den Status einer erfundenen URL. Prüfe außerdem die kanonische URL und die Sitemap auf dem endgültigen Hostnamen. Eine sichtbare Fehlerseite mit HTTP 200 ist weiterhin ein Soft-404.
+
+Wenn Assets fehlen, vergleiche ihre URLs mit `baseUrl`. Wenn eine innere Route die Startseite zurückgibt, prüfe das erzeugte Dateilayout und die nginx-Regeln. Wenn nach dem Bearbeiten eines Umgebungswerts oder einer Markdown-Datei weiterhin alter Inhalt angezeigt wird, verifiziere, dass tatsächlich ein neuer Build abgeschlossen wurde; statisches HTML ändert sich nur mit einem Build.
+
+Siehe [getestete Versionen und Cloud-Ergebnisse](/framework-guides/validation) für die Bereitstellungsprüfungen vom 9. September 2026 und deren Grenzen.
+
diff --git a/_locales/de/framework-guides/fastapi.mdx b/_locales/de/framework-guides/fastapi.mdx
new file mode 100644
index 0000000..af89b4a
--- /dev/null
+++ b/_locales/de/framework-guides/fastapi.mdx
@@ -0,0 +1,98 @@
+---
+description: "Stelle FastAPI auf Lizard mit Uvicorn, requirements.txt, einem Procfile und Port 8000 bereit. Prüfe einen Health-Endpunkt und diagnostiziere Import-, Host- und Abhängigkeitsfehler."
+---
+
+
+
+# FastAPI auf Lizard bereitstellen
+
+Führe FastAPI auf Lizard aus, wobei Uvicorn auf `0.0.0.0:8000` lauscht. Nimm sowohl FastAPI als auch Uvicorn in die Abhängigkeiten der App auf. Das Importieren einer Datei, die `app = FastAPI()` deklariert, startet nicht von selbst einen HTTP-Server.
+
+
+
+## Beispielprojekt
+
+Das [FastAPI-Beispiel](https://github.com/lizard-build/fastapi-example) enthält eine App, ein Procfile, festgelegte Abhängigkeiten, eine MIT-Lizenz und HTTP-Tests. Seine CI führt den Uvicorn-Produktions-Einstiegspunkt unter Linux aus. Wir haben außerdem den Commit `df522c1` von GitHub bereitgestellt und am 2026-09-09 Health, OpenAPI, interaktive Docs, JSON-Echo, ungültige Eingaben und eine fehlende Route über öffentliches HTTPS geprüft.
+
+
+
+## Eine App vorbereiten
+
+Dieses Beispiel verwendet `requirements.txt` und eine `main.py` im App-Stammverzeichnis:
+
+```python
+from fastapi import FastAPI
+
+app = FastAPI()
+
+@app.get("/health")
+def health():
+ return {"status": "ok"}
+```
+
+Füge `fastapi` und `uvicorn` zu deinem Abhängigkeits-Workflow hinzu und speichere die aufgelösten, getesteten Versionen in `requirements.txt`. Wähle deine Python-Nebenversion in `.python-version`, zum Beispiel `3.13`, wenn deine Abhängigkeiten sie unterstützen.
+
+Erstelle eine `Procfile` mit einem expliziten Importziel:
+
+```text
+web: uvicorn main:app --host 0.0.0.0 --port 8000
+```
+
+`main:app` bedeutet das Objekt `app` in `main.py`. Für `src/api.py` verwende den Importpfad, der von deinem App-Stamm aus funktioniert, etwa `src.api:app`. Das explizite Procfile vermeidet, sich bei benutzerdefinierten Layouts auf die Erkennung von Quellcode-Mustern zu verlassen.
+
+| Einstellung | Wert |
+|---|---|
+| Installation | `pip install -r requirements.txt` |
+| Start | Procfile-Befehl `web:` |
+| Service-Port | `8000` |
+| Build-Ausgabe | Python-Quellcode und installierte Abhängigkeiten |
+
+
+
+## Lokal testen
+
+Verwende eine lokale virtuelle Umgebung:
+
+```bash
+python -m venv .venv
+source .venv/bin/activate
+pip install -r requirements.txt
+uvicorn main:app --host 0.0.0.0 --port 8000
+```
+
+In einem anderen Terminal:
+
+```bash
+curl --fail http://localhost:8000/health
+```
+
+Erwarte eine erfolgreiche Antwort mit `{"status":"ok"}`. Behalte den Reload-Modus für die Entwicklung bei. Der [FastAPI-Serverleitfaden](https://fastapi.tiangolo.com/deployment/manually/) erklärt den ASGI-Server und das Importziel.
+
+
+
+## Bereitstellen
+
+Nach dem [CLI-Setup](/framework-guides#prepare-the-project) lade aus dem App-Stammverzeichnis hoch:
+
+```bash
+lizard init --name fastapi-app
+lizard add --service api
+lizard up --service api --port 8000
+lizard logs --build --service api --json
+lizard logs --service api --json
+lizard ps --json
+```
+
+Schließe Dateien vom Typ `.venv/`, `__pycache__/` und `.env` aus. Lasse Service-Build-/Start-Overrides leer, damit lizardpack das Procfile liest. Der requirements-basierte Pfad hier benötigt keinen separaten Compile-Befehl.
+
+Rufe `/health` unter der zurückgegebenen HTTPS-URL auf und teste dann eine echte API-Aktion. Ein TCP-Health-Check stellt nur fest, dass der Prozess seinen Port öffnet; dein Health-Endpunkt kann Prüfungen ergänzen, die für die App relevant sind.
+
+
+
+## Daten und häufige Fehler
+
+Setze Zugangsdaten über [Variablen und Secrets](/variables). Füge [Managed Postgres](/addons/postgres) hinzu, wenn die App eine Datenbank benötigt, und verwende eine servicebezogene Verbindungsreferenz. Container-lokale Dateien sind kein dauerhaftes Anwendungsspeicher; siehe [Storage und Wiederherstellung](/platform/storage-and-recovery).
+
+Prüfe bei `No module named uvicorn` die installierten requirements. Führe bei einem ASGI-Importfehler den exakten Procfile-Befehl lokal vom selben Stammverzeichnis aus. Wenn ein Service nie healthy wird, prüfe Port `8000` und den Bind-Host. Wenn der Prozess ohne Server-Logs beendet wird, stelle sicher, dass er Uvicorn ausführt und nicht nur `python main.py`.
+
+Siehe [getestete Versionen und Cloud-Ergebnisse](/framework-guides/validation) für die Deployment-Prüfungen vom 9. September 2026 und ihre Grenzen.
diff --git a/_locales/de/framework-guides/hugo.mdx b/_locales/de/framework-guides/hugo.mdx
new file mode 100644
index 0000000..0f1a543
--- /dev/null
+++ b/_locales/de/framework-guides/hugo.mdx
@@ -0,0 +1,89 @@
+---
+description: "Stelle Hugo auf Lizard bereit, indem du public mit hugo --minify baust und es auf Port 80 auslieferst. Prüfe Erkennung, Themes, baseURL, generierte Routen und den Status fehlender Seiten."
+---
+
+
+
+# Hugo auf Lizard bereitstellen
+
+Lizard kann eine Hugo-Quellseite mit `hugo --minify` bauen und `public/` über nginx auf Port `80` ausliefern. Starte im Hugo-Quellverzeichnis mit einer Hugo-Konfiguration und `content/`, statt nur das generierte HTML hochzuladen.
+
+Beginne mit dem [vollständigen Quellbeispiel](https://github.com/lizard-build/docs/tree/main/_examples/hugo), das die Konfiguration und Dateien enthält, die in dieser Anleitung verwendet werden.
+
+
+
+## Quelle vorbereiten
+
+Füge deine Hugo-Konfiguration, Inhalte, Layouts, Assets und alle Theme-Dateien ein, die der Build benötigt. Die Hugo-Erkennung sucht nach einer Konfiguration wie `hugo.toml`, `hugo.yaml` oder `config/_default/` sowie nach einem Verzeichnis `content/`.
+
+| Einstellung | Wert |
+|---|---|
+| Build | `hugo --minify` |
+| Output | `public/` |
+| Produktionsserver | nginx |
+| Service-Port | `80` |
+
+Setze `baseURL` auf die vorgesehene öffentliche Website-URL einschließlich des abschließenden Schrägstrichs. Baue nach der Zuweisung eines anderen Hostnamens neu, damit Links und generierte Sitemap-Einträge ihn verwenden. Siehe [Hugos Anleitung zu Build und Output](https://gohugo.io/getting-started/usage/).
+
+
+
+## Build-Abhängigkeiten prüfen
+
+Das Standard-Build-Image für Hugo ist `hugomods/hugo:base`; es legt für dein Projekt keine Hugo-Version fest. Wenn ein Theme eine bestimmte Hugo-Version, die Extended Edition oder Node-Tooling benötigt, verwende ein vollständiges Dockerfile mit diesen Abhängigkeiten und der Version, die du getestet hast.
+
+Eine Hugo-Konfiguration und `content/` wählen den Hugo-Builder vor der Erkennung von Go oder Node aus. Projekte mit Hugo Modules und `go.mod` verwenden ein Build-Image mit Go-Unterstützung. Eine `package.json` beendet den Build mit der Aufforderung, ein Dockerfile bereitzustellen: Installiere die Node-Abhängigkeiten, baue die Assets und führe dann `hugo --minify` aus. Siehe [Reihenfolge der Build-Entscheidung](/concepts/build-pipeline#build-decision-order).
+
+
+
+## Lokal bauen und bereitstellen
+
+```bash
+hugo --minify
+hugo server
+```
+
+Prüfe `public/` nach dem ersten Befehl. Nutze den lokalen Server, um Inhalte und Theme-Rendering zu prüfen; `hugo server` ist nicht der Produktions-Startbefehl.
+
+Stelle nach dem [CLI-Setup](/framework-guides#prepare-the-project) das Quellverzeichnis bereit:
+
+```bash
+lizard init --name hugo-site
+lizard add --service web
+lizard up --service web --port 80
+lizard logs --build --service web --json
+lizard ps --json
+```
+
+Wenn du den generierten Hostnamen verwendest, lies ihn nach dem ersten Bereitstellen aus:
+
+```bash
+lizard service show web --json
+```
+
+Setze `baseURL` in `hugo.toml` auf diesen Hostnamen:
+
+```toml
+baseURL = "https://YOUR_PUBLIC_HOST/"
+```
+
+Lade die geänderte Konfiguration hoch, damit der Build die öffentliche URL verwendet:
+
+```bash
+lizard up --service web --port 80
+```
+
+
+Schließe lokal generierten Output und Secrets aus. Stelle bei einem Upload sicher, dass die Theme-Quelldateien tatsächlich in dem Verzeichnis vorhanden sind, das du sendest; ein entfernter Submodule-Verweis allein ist nicht der Theme-Inhalt.
+
+
+
+## Die bereitgestellte Website prüfen
+
+Öffne die Live-Startseite, einen internen Artikel und ein Bild. Prüfe die generierten kanonischen URLs und `sitemap.xml`. Teste den HTTP-Status eines erfundenen Pfads. Neue Hugo-Builds liefern das generierte HTML aus und geben für fehlende Seiten HTTP 404 zurück. Für das einfache Quelllayout in dieser Anleitung ist kein eigenes Dockerfile erforderlich. Baue ältere Images neu, um die aktuellen Routing-Regeln zu übernehmen.
+
+Verwende [statische Routen und 404er](/framework-guides/static-routing), wenn du eine benutzerdefinierte nginx-Richtlinie benötigst. Eine benutzerdefinierte Hugo-Build-Stage muss die vom Theme benötigte Hugo-Version und Tools enthalten, `hugo --minify` ausführen und `public/` in das ausliefernde Image kopieren.
+
+Wenn Theme-Assets fehlen, prüfe die Build-Logs, die Theme-Quelle und `baseURL`. Wenn der falsche Builder startet, prüfe, ob die Hugo-Konfiguration und `content/` im Upload-Root liegen, und überprüfe vorhandene Service-Overrides. Hugo erzeugt statische Dateien, daher erfordern Inhaltsänderungen einen neuen Build.
+
+Siehe [getestete Versionen und Cloud-Ergebnisse](/framework-guides/validation) für die Bereitstellen-Prüfungen vom 9. September 2026 und ihre Grenzen.
+
diff --git a/_locales/de/framework-guides/index.mdx b/_locales/de/framework-guides/index.mdx
new file mode 100644
index 0000000..6726ce4
--- /dev/null
+++ b/_locales/de/framework-guides/index.mdx
@@ -0,0 +1,69 @@
+---
+description: "Stelle Next.js, React, Vue, Astro, Nuxt, SvelteKit, FastAPI, Django, Docusaurus, VitePress und Hugo auf Lizard bereit. Finde Build-Befehle, Adapter, Ports und Prüfungen."
+---
+
+
+
+# Framework-Anleitungen
+
+Stelle eine Framework-App aus dem Quellcode auf Lizard bereit. Wähle unten dein Framework und den Rendering-Modus, bereite den Produktions-Build vor und stelle dann mit Lizard CLI bereit oder verbinde ein GitHub-Repository. Server-Apps führen einen Prozess aus; statische Websites liefern die generierten Dateien über nginx aus.
+
+
+
+## Wähle dein Framework
+
+Diese Einstellungen beschreiben die Standard-Projektlayouts in den verlinkten Anleitungen. Die Befehle gehen bei JavaScript-Projekten von npm aus. Benutzerdefinierte Ausgabepfade, Adapter und Build-Überschreibungen können das Ergebnis ändern.
+
+| Framework | Build | Laufzeit oder Ausgabe | Service-Port |
+|---|---|---|---|
+| [Next.js](/framework-guides/nextjs) | `npm run build` | `next start` über das Start-Skript | `3000` |
+| [Next.js statischer Export](/framework-guides/nextjs/static-export) | `npm run build` | `out/` über ein Dockerfile | `80` |
+| [React with Vite](/framework-guides/react) | `npm run build` | `dist/` | `80` |
+| [Vue with Vite](/framework-guides/vue) | `npm run build` | `dist/` | `80` |
+| [Astro](/framework-guides/astro) | `npm run build` | `dist/` oder der eigenständige Node-Adapter | `80` statisch; `3000` Server |
+| [Nuxt](/framework-guides/nuxt) | `npm run build` | `node .output/server/index.mjs` | `3000` |
+| [SvelteKit](/framework-guides/sveltekit) | `npm run build` | `node build` mit adapter-node | `3000` |
+| [FastAPI](/framework-guides/fastapi) | Python-Abhängigkeiten installieren | `uvicorn main:app --host 0.0.0.0 --port 8000` | `8000` |
+| [Django](/framework-guides/django) | Python-Abhängigkeiten installieren | Gunicorn mit deinem WSGI-Modul | `8000` |
+| [Docusaurus](/framework-guides/docusaurus) | `npm run build` | `build/` | `80` |
+| [VitePress](/framework-guides/vitepress) | `npm run docs:build` | `docs/.vitepress/dist/` in dieser Anleitung | `80` |
+| [Hugo](/framework-guides/hugo) | `hugo --minify` | `public/` | `80` |
+
+
+
+## Projekt vorbereiten
+
+Führe die Befehle im Anwendungsverzeichnis aus. Übertrage Quellcodedateien, Konfiguration und die Package-Lockdatei ins Commit. Schließe `.env`, lokale Abhängigkeiten und lokale Build-Ausgabe von Uploads aus. Node-Projekte können die Node-Hauptversion in `.nvmrc` auswählen; der aktuelle Standard ist `22`. Damit wird eine Hauptversion ausgewählt, keine genaue Patch-Version.
+
+Installiere Lizard CLI und melde dich einmal an:
+
+```bash
+npm install -g @lizard-build/cli
+lizard login
+```
+
+Jede Anleitung verwendet ein neues Projekt und einen Service mit dem Namen `web` oder `api`. Erstelle diesen Service mit `lizard add --service web` (oder `api`) vor dem ersten Aufruf von `lizard up --service`. `up --service` wählt einen vorhandenen Service aus; ein fehlender benannter Service wird dadurch nicht erstellt. Prüfe bei einem bestehenden Projekt vor der Bereitstellung `lizard status --json` und `lizard ps --json`. Der Port muss zum Prozess im Container passen, der auf `0.0.0.0` lauschen muss.
+
+Lizard CLI 0.3.95 schließt macOS-Archivmetadaten bei Uploads aus. Eine Einstellung für `COPYFILE_DISABLE` ist nicht erforderlich. Aktualisiere ältere CLI-Versionen, bevor du diesen Anleitungen folgst.
+
+
+
+## GitHub oder lokalen Quellcode wählen
+
+Die Befehle in dieser Anleitung verwenden `lizard up`, um den aktuellen Ordner hochzuladen. Dieser Befehl stellt einen bestehenden Service auf Quellcode-Upload um. Wenn du git push to deploy beibehalten möchtest, [verbinde GitHub](/deploy/github) stattdessen und verwende die Build-Einstellungen der Anleitung im Repository. Konfiguriere den Service-Port anhand der Tabelle.
+
+
+
+## Build-Einstellungen konsistent halten
+
+Diese Anleitungen verwenden lizardpack-Erkennung, sofern nicht ein Dockerfile verlangt wird. Bestehende Überschreibungen in `buildCommand` oder `startCommand` haben Vorrang vor der Erkennung und dem Dockerfile im Repository. Prüfe die [Reihenfolge der Build-Entscheidung](/concepts/build-pipeline#build-decision-order), bevor du die Build-Methode wechselst. Setze Skripte in `package.json`, wenn eine Anleitung dich dazu auffordert; das Hinzufügen einer CLI-Überschreibung ist ein anderer Build-Pfad.
+
+
+
+## Ein Release prüfen
+
+Lies die Build-Logs, Laufzeit-Logs und die aktive URL. Teste eine interne Route, eine fehlende Route und jede API oder Formularaktion. Ein Prozess, der seinen Port öffnet, kann trotzdem eine fehlerhafte Seite ausliefern. Verwende für generierte Websites [statische Routen und 404-Seiten](/framework-guides/static-routing), damit nicht für jede unbekannte URL die Startseite mit HTTP 200 zurückgegeben wird.
+
+Laufzeitunterstützung bedeutet nicht gemeinsam genutzte Caches, persistente lokale Dateien oder jede Framework-Version. Sieh unter [Limits](/platform/limits), [Storage und Wiederherstellung](/platform/storage-and-recovery) und [bekannte Probleme](/platform/known-issues) nach, wenn deine App auf diese Funktionen angewiesen ist.
+
+Sieh unter [getestete Versionen und Cloud-Ergebnisse](/framework-guides/validation) nach für die Bereitstellungsprüfungen vom 9. September 2026 und ihre Limits.
diff --git a/_locales/de/framework-guides/nextjs/_meta.ts b/_locales/de/framework-guides/nextjs/_meta.ts
new file mode 100644
index 0000000..25beece
--- /dev/null
+++ b/_locales/de/framework-guides/nextjs/_meta.ts
@@ -0,0 +1,4 @@
+export default {
+ index: "Next.js",
+ 'static-export': { title: "Statischer Export", display: "ausgeblendet" },
+};
diff --git a/_locales/de/framework-guides/nextjs/index.mdx b/_locales/de/framework-guides/nextjs/index.mdx
new file mode 100644
index 0000000..7c78e3d
--- /dev/null
+++ b/_locales/de/framework-guides/nextjs/index.mdx
@@ -0,0 +1,95 @@
+---
+description: "Stelle Next.js auf Lizard als Node.js-Server bereit. Konfiguriere next build, next start, Port 3000, Umgebungsvariablen und Prüfungen für Seiten, APIs und Server Actions."
+---
+
+
+
+# Next.js auf Lizard bereitstellen
+
+Führe Next.js auf Lizard als Node.js-Server mit `next build` und `next start` aus. Dieser Weg hält einen Server für Rendering zur Anfragezeit, Route Handlers und Server Actions verfügbar. Wenn jede Route vorab gebaut werden kann, folge stattdessen [Next.js statischer Export](/framework-guides/nextjs/static-export).
+
+
+
+## Build-Einstellungen
+
+| Einstellung | Wert |
+|---|---|
+| Projektstamm | Verzeichnis mit `package.json` und der Next.js-Konfiguration |
+| Build-Skript | `next build` |
+| Start-Skript | `next start --hostname 0.0.0.0 --port 3000` |
+| Build-Ausgabe | `.next/` |
+| Service-Port | `3000` |
+| Laufzeit | Node.js |
+
+
+
+## App vorbereiten
+
+Behalte `next`, `react` und `react-dom` in deinen Abhängigkeiten und committe deine Lockfile. Füge diese Skripte in `package.json` zusammen:
+
+```json
+{
+ "scripts": {
+ "dev": "next dev",
+ "build": "next build",
+ "start": "next start --hostname 0.0.0.0 --port 3000"
+ }
+}
+```
+
+Verwende für diesen Leitfaden die Standardausgabe von Next.js. `output: 'export'` benötigt einen statischen Server, und `output: 'standalone'` benötigt einen eigenen Start mit `server.js` und ein eigenes Asset-Layout. Keines von beiden verwendet dieses `next start`-Rezept unverändert.
+
+Wähle in `.nvmrc` eine unterstützte Node-Hauptversion aus, zum Beispiel `22`. Schließe `.next/`, `node_modules/` und `.env*` aus dem hochgeladenen Quellcode aus; behalte bei Bedarf eine Beispiel-Umgebungsdatei ohne Geheimnisse.
+
+
+
+## Den Produktions-Build lokal testen
+
+```bash
+npm ci
+npm run build
+npm run start
+```
+
+Öffne in einem anderen Terminal `http://localhost:3000` und teste eine innere Route. Wenn die App eine API oder Server Aktion hat, führe auch dafür einen Test aus. Nur weil die Prüfung des Entwicklungsservers erfolgreich ist, ist nicht bewiesen, dass der Produktions-Build funktioniert.
+
+
+
+## Bereitstellen
+
+Führe nach dem [Installieren von Lizard CLI und der Anmeldung](/framework-guides#prepare-the-project) aus dem App-Verzeichnis Folgendes aus:
+
+```bash
+lizard init --name nextjs-app
+lizard add --service web
+lizard up --service web --port 3000
+lizard logs --build --service web --json
+lizard logs --service web --json
+lizard ps --json
+```
+
+Lizard erkennt die Abhängigkeit `next` und führt die Build- und Start-Skripte aus. Diese Befehle setzen voraus, dass der Service noch keine bestehenden Build- oder Start-Overrides hat. Verwende die URL in der Bereitstellen-Ausgabe, um die lokalen Prüfungen zu wiederholen.
+
+
+
+## Umgebungsvariablen und Daten
+
+Werte aus `NEXT_PUBLIC_*` werden während des Builds Teil des Browser-Bundles. Bewahre Zugangsdaten in rein serverseitigen Variablen auf und konfiguriere sie für den Service über [Variablen und Secrets](/variables). Code, der während des Builds Daten abruft, benötigt auch zu diesem Zeitpunkt Zugriff auf diese Daten. Ein Neustart zur Laufzeit ändert kein bereits generiertes HTML oder JavaScript.
+
+Lokale Cache-Dateien und hochgeladene Dateien bilden keinen gemeinsamen Speicher über Replikate hinweg. Prüfe die Anforderungen von Next.js für Cache und Server Actions, bevor du auf mehr als ein Replikat skalierst. Lege dauerhafte App-Daten in einer Datenbank oder einem Objektspeicher ab und lies [Storage und Recovery](/platform/storage-and-recovery).
+
+
+
+## Fehlerbehebung
+
+| Symptom | Prüfen |
+|---|---|
+| `Missing script: start` | Füge das Produktions-Start-Skript oben hinzu; `next dev` ist für die lokale Entwicklung. |
+| App wird nie healthy | Stimme `--port 3000` auf den Startbefehl ab und binde an `0.0.0.0`. |
+| Die öffentliche API-URL hat noch ihren alten Wert | Erstelle mit dem neuen Wert für `NEXT_PUBLIC_*` einen neuen Build. |
+| Der Build kann keine Datenbank erreichen | Prüfe, ob eine Route Daten zur Build-Zeit abruft und ob diese Abhängigkeit dann erreichbar ist. |
+| Static export schlägt unter `next start` fehl | Folge dem separaten Leitfaden für static export. |
+
+Der [Next.js Self-Hosting-Anleitung](https://nextjs.org/docs/app/guides/self-hosting) behandelt das Verhalten von Framework-Cache, Bildern und mehreren Instanzen. Bei Bereitstellungsfehlern siehe [Service wird nie gesund](/deploy/troubleshooting/service-never-healthy).
+
+Siehe [getestete Versionen und Cloud-Ergebnisse](/framework-guides/validation) für die Bereitstellungsprüfungen vom 9. September 2026 und ihre Grenzen.
diff --git a/_locales/de/framework-guides/nextjs/static-export.mdx b/_locales/de/framework-guides/nextjs/static-export.mdx
new file mode 100644
index 0000000..ef44294
--- /dev/null
+++ b/_locales/de/framework-guides/nextjs/static-export.mdx
@@ -0,0 +1,106 @@
+---
+description: "Stellen Sie einen statischen Next.js-Export auf Lizard mit output export, einem nginx-Dockerfile, Port 80 und echten 404-Antworten bereit. Erfahren Sie, welche Funktionen weiterhin einen Node.js-Server benötigen."
+---
+
+
+
+# Einen statischen Next.js-Export bereitstellen
+
+Ein statischer Next.js-Export erzeugt HTML, JavaScript und Assets in `out/`. Stellen Sie dieses Verzeichnis auf Lizard mit einem nginx-Dockerfile bereit. Verwenden Sie diesen Weg für Seiten, die vorab gebaut werden können; verwenden Sie den Leitfaden für den [Node.js-Server](/framework-guides/nextjs) für Serverfunktionen zur Anfragezeit.
+
+
+
+## Den Export konfigurieren
+
+Fügen Sie diese Optionen in `next.config.mjs` zusammen:
+
+```js
+/** @type {import('next').NextConfig} */
+const nextConfig = {
+ output: 'export',
+ trailingSlash: true,
+ images: { unoptimized: true },
+};
+
+export default nextConfig;
+```
+
+Behalten Sie `"build": "next build"` in `package.json` bei. Dieses Beispiel verwendet einfache exportierte Bilder; ein externer Image-Loader ist eine weitere Option. Erzeugen Sie während des Builds alle erforderlichen Parameter für dynamische Routen. Cookies zur Anfragezeit, Server Actions und andere Funktionen, die einen laufenden Next.js-Server benötigen, können in diesem statischen Container nicht ausgeführt werden. Prüfen Sie die [Next.js-Referenz für statische Exporte](https://nextjs.org/docs/app/guides/static-exports) gegen die Funktionen, die Ihre App verwendet.
+
+
+
+## Ein vollständiges Dockerfile hinzufügen
+
+Die automatische Erkennung für Next.js erwartet einen Node-Server. Sie wechselt nicht zu nginx, nur weil die Konfiguration `out/` exportiert. Fügen Sie dieses Dockerfile im App-Stammverzeichnis hinzu; es setzt npm und ein eingechecktes `package-lock.json` voraus:
+
+```dockerfile
+FROM node:22-slim AS build
+WORKDIR /app
+COPY package.json package-lock.json ./
+RUN npm ci
+COPY . .
+RUN npm run build
+
+FROM nginx:alpine
+COPY --from=build /app/out /usr/share/nginx/html
+COPY nginx.conf /etc/nginx/conf.d/default.conf
+EXPOSE 80
+```
+
+Erstellen Sie daneben `nginx.conf`:
+
+```nginx
+server {
+ listen 80;
+ server_name _;
+ root /usr/share/nginx/html;
+ index index.html;
+ location / {
+ try_files $uri $uri/ =404;
+ }
+ error_page 404 /404.html;
+ location = /404.html {
+ internal;
+ }
+}
+```
+
+Der Export mit Trailing Slash erstellt Routenverzeichnisse mit `index.html`. Die nginx-Regel bedient diese Verzeichnisse und gibt für fehlende Pfade HTTP 404 zurück. Fügen Sie `node_modules`, `.next`, `out`, `.git` und `.env*` zu `.dockerignore` hinzu und schließen Sie lokale Build-Dateien von Uploads aus.
+
+
+
+## Bauen und bereitstellen
+
+```bash
+npm ci
+npm run build
+```
+
+Prüfen Sie, dass `out/index.html` und eine erwartete innere Route vorhanden sind. Wenn Docker verfügbar ist, testen Sie den tatsächlichen Server lokal:
+
+```bash
+docker build -t nextjs-static .
+docker run --rm -p 8080:80 nextjs-static
+```
+
+Nach der [CLI-Einrichtung](/framework-guides#prepare-the-project) stellen Sie in einem neuen Service bereit:
+
+```bash
+lizard init --name nextjs-static
+lizard add --service web
+lizard up --service web --port 80
+lizard logs --build --service web --json
+lizard ps --json
+```
+
+Das vollständige Dockerfile enthält einen npm-Build-Schritt, den lizardpack erkennen kann. Prüfen Sie bei einem bestehenden Service vor der Auswahl eines Dockerfiles widersprüchliche Build-/Start-Überschreibungen und entfernen Sie sie; siehe [Reihenfolge der Build-Entscheidung](/concepts/build-pipeline#build-decision-order).
+
+
+
+## Routen und Aktualisierungen prüfen
+
+Rufen Sie die Live-Startseite, eine exportierte innere Route, ein JavaScript-Asset und einen erfundenen Pfad auf. Der erfundene Pfad muss HTTP 404 zurückgeben, nicht die Startseite mit HTTP 200. Verwenden Sie die Prüfungen unter [statische Routen und 404er](/framework-guides/static-routing#verify-http-responses).
+
+Alle Änderungen an exportierten Inhalten erfordern einen neuen Build. Laufzeit-Umgebungsvariablen können Werte, die bereits in `out/` geschrieben wurden, nicht ändern. Deklarieren Sie für öffentliche Build-Variablen in einem benutzerdefinierten Dockerfile das erforderliche `ARG` vor `RUN npm run build`; legen Sie niemals private Zugangsdaten im exportierten Bundle ab.
+
+Siehe [getestete Versionen und Cloud-Ergebnisse](/framework-guides/validation) für die Bereitstellungsprüfungen vom 9. September 2026 und ihre Grenzen.
diff --git a/_locales/de/framework-guides/nuxt.mdx b/_locales/de/framework-guides/nuxt.mdx
new file mode 100644
index 0000000..5f2d23c
--- /dev/null
+++ b/_locales/de/framework-guides/nuxt.mdx
@@ -0,0 +1,109 @@
+---
+description: "Stelle Nuxt auf Lizard mit Nitros node-server-Preset bereit. Füge ein Produktions-Startskript hinzu, starte den generierten Server auf Port 3000 und prüfe Routen sowie Runtime-Konfiguration."
+---
+
+
+
+# Nuxt auf Lizard bereitstellen
+
+Führe Nuxt auf Lizard mit Nitros `node-server`-Preset aus. Der Build erzeugt `.output/server/index.mjs`, und ein Node.js-Prozess stellt Seiten und Server-Routen auf Port `3000` bereit. Für eine generierte Website auf Port `80` verwende das statische Rezept unten.
+
+
+
+## Produktions-Build konfigurieren
+
+Verwende die aktuelle Lizard CLI aus [Projekt vorbereiten](/framework-guides#prepare-the-project). Version 0.3.95 schließt macOS-Archivmetadaten beim Hochladen aus. Wenn eine ältere CLI einen `._*.ts`-Routenfehler meldet, aktualisiere die CLI und lade erneut hoch.
+
+Setze das Preset in `nuxt.config.ts`:
+
+```ts
+export default defineNuxtConfig({
+ nitro: { preset: 'node-server' },
+});
+```
+
+Füge diese Skripte in `package.json` zusammen und behalte alle weiteren Skripte bei, die deine App benötigt:
+
+```json
+{
+ "scripts": {
+ "dev": "nuxt dev",
+ "build": "nuxt build",
+ "start": "HOST=0.0.0.0 PORT=3000 node .output/server/index.mjs"
+ }
+}
+```
+
+Das Startskript verwendet die Linux-Shell im Deployment-Container. lizardpack erkennt die Abhängigkeit `nuxt` und führt die Build- und Startskripte aus. Ein frisches Nuxt-Projekt enthält `start` möglicherweise nicht; füge es hinzu, statt davon auszugehen, dass `nuxt dev` den Produktions-Build bereitstellt.
+
+| Einstellung | Wert |
+|---|---|
+| Build | `npm run build` |
+| Server entry | `.output/server/index.mjs` |
+| Start | `npm run start` |
+| Service-Port | `3000` |
+
+
+
+## Gebaute App testen
+
+```bash
+npm ci
+npm run build
+npm run start
+```
+
+Öffne `http://localhost:3000`, rufe direkt eine Unterseite auf und rufe eine deiner `server/api`-Routen auf, falls vorhanden. Prüfe, dass der Build das Node-Server-Preset meldet. Ein anbieterspezifisches Nitro-Preset kann einen anderen Einstiegspunkt erzeugen.
+
+
+
+## Bereitstellen
+
+Führe nach der [CLI-Einrichtung](/framework-guides#prepare-the-project) im Verzeichnis der Nuxt-App aus:
+
+```bash
+lizard init --name nuxt-app
+lizard add --service web
+lizard up --service web --port 3000
+lizard logs --build --service web --json
+lizard logs --service web --json
+lizard ps --json
+```
+
+Halte `.nuxt/`-, `.output/`-, `node_modules/`- und `.env`-Dateien aus dem Upload heraus. Schließe Quellcode, Konfiguration und die Lockfile ein. Vorhandene Build-/Start-Überschreibungen des Services umgehen die hier verwendete Erkennung; siehe [Reihenfolge der Build-Entscheidung](/concepts/build-pipeline#build-decision-order).
+
+
+
+## Runtime-Konfiguration
+
+Deklariere Runtime-Einstellungen in `runtimeConfig` und konfiguriere die passenden `NUXT_*`-Werte für den Service. Bewahre Geheimnisse außerhalb von `runtimeConfig.public` auf; der öffentliche Teil gelangt in den Browser. Werte, die zum Prerendern von Seiten verwendet werden, beeinflussen weiterhin den generierten Build, also prüfe nach einer Änderung sowohl Routen zur Anfragezeit als auch vorgenerierte Routen.
+
+Verwende [Variablen und Secrets](/variables), um den Service zu konfigurieren, und [Speicherung und Wiederherstellung](/platform/storage-and-recovery) für dauerhafte Daten. Behandle einen lokalen Cache oder eine Session-Datei nicht als gemeinsam genutzten Speicher über Replikate hinweg.
+
+
+
+## Fehlerbehebung
+
+Wenn der Prozess ein fehlendes `.output/server/index.mjs` meldet, prüfe das Preset und die Build-Ausgabe. Wenn ein fehlendes Startskript gemeldet wird, füge das oben genannte hinzu. Wenn die Website nie healthy wird, prüfe Host und Port.
+
+Für eine rein generierte Nuxt-Website stelle `.output/public/` mit einem statischen Dockerfile und korrekter Routenbehandlung bereit. Starte diese Ausgabe nicht mit dem obigen Node-Befehl. Der [Nuxt-Deployment-Leitfaden](https://nuxt.com/docs/4.x/getting-started/deployment) erklärt die Node- und generierten Ausgaben; [statische Routen und 404-Seiten](/framework-guides/static-routing) behandelt die Einrichtung des statischen Lizard-Servers.
+
+
+
+## Statische Website generieren
+
+Ersetze für generiertes HTML das Node-Preset durch explizite Prerender-Einstellungen und ändere das Build-Skript zu `nuxt generate`:
+
+```ts
+export default defineNuxtConfig({
+ nitro: {
+ prerender: { crawlLinks: true, routes: ['/'] },
+ },
+});
+```
+
+Füge nicht verlinkte oder dynamische Routen zu `routes` hinzu, wenn der Crawler sie nicht erkennen kann. Führe `npm run build` aus und prüfe, dass `.output/public/index.html` und deine Dateien für Unterrouten vorhanden sind. Im Test mit Nuxt 4.5.2 führte das Beibehalten von `preset: 'node-server'` bei einem Wechsel nur zu `nuxt generate` zu den Fallback-Seiten ohne die Routen der Website. Ein erfolgreicher Build allein zeigte nicht, dass der Export die Website enthielt.
+
+Verwende das Dockerfile und die nginx-Konfiguration aus [statische Routen und 404-Seiten](/framework-guides/static-routing), mit dem Build-Skript `build`, dem Ausgabeverzeichnis `.output/public` und dem Service-Port `80`. Der statische Container führt keine Nuxt-Server-Routen aus und liest keine Runtime-Konfiguration für bereits generierte Seiten.
+
+Siehe [getestete Versionen und Cloud-Ergebnisse](/framework-guides/validation) für die Deployment-Prüfungen vom 9. September 2026 und ihre Grenzen.
diff --git a/_locales/de/framework-guides/react.mdx b/_locales/de/framework-guides/react.mdx
new file mode 100644
index 0000000..e6f6a1f
--- /dev/null
+++ b/_locales/de/framework-guides/react.mdx
@@ -0,0 +1,83 @@
+---
+description: "Stelle eine mit Vite erstellte React-App auf Lizard bereit. Erstelle dist, liefere sie über Port 80 aus, konfiguriere Client-Routen und öffentliche API-Variablen und prüfe die bereitgestellte App."
+---
+
+
+
+# React mit Vite auf Lizard bereitstellen
+
+Lizard erstellt eine React-App, die Vite verwendet, und liefert ihr Verzeichnis `dist/` über nginx auf Port `80` aus. Diese Anleitung behandelt eine im Browser gerenderte App. Für React-Seiten, die einen Server benötigen, folge der [Next.js-Anleitung](/framework-guides/nextjs) oder stelle einen Produktionsserver für dein gewähltes React-Framework bereit.
+
+
+
+## Build vorbereiten
+
+Verwende ein bestehendes React- und Vite-Projekt mit einer eingecheckten Lockfile. Seine `package.json` benötigt ein Produktions-Build-Skript:
+
+```json
+{
+ "scripts": {
+ "dev": "vite",
+ "build": "vite build",
+ "preview": "vite preview"
+ }
+}
+```
+
+Wenn dein Scaffold vor `vite build` TypeScript-Prüfungen ausführt, behalte diese Prüfungen bei. Behalte Vites Standard-Ausgabeverzeichnis `dist` bei. Ein benutzerdefiniertes `build.outDir` benötigt ein passendes Dockerfile, weil der Standard-Erkennungspfad `dist` kopiert.
+
+| Einstellung | Wert |
+|---|---|
+| Erkennung | `vite` in dependencies oder dev dependencies |
+| Build | `npm run build` |
+| Ausgabe | `dist/` |
+| Produktionsserver | nginx; kein Node-Startskript nötig |
+| Service-Port | `80` |
+
+
+
+## Lokal testen
+
+```bash
+npm ci
+npm run build
+npm run preview
+```
+
+Öffne die lokale Preview-URL und teste eine Seite, die deine API aufruft. Der Preview-Befehl prüft den Build lokal; setze `vite preview` nicht als Produktions-Startbefehl. Siehe [Vite deployment](https://vite.dev/guide/static-deploy.html).
+
+
+
+## Den Quellcode bereitstellen
+
+Führe nach dem [CLI-Setup](/framework-guides#prepare-the-project) im Verzeichnis mit `package.json` Folgendes aus:
+
+```bash
+lizard init --name react-app
+lizard add --service web
+lizard up --service web --port 80
+lizard logs --build --service web --json
+lizard ps --json
+```
+
+Lade den Quellcode und die Lockfile hoch, aber schließe `node_modules/`, `dist/` und Secrets aus. Lasse Überschreibungen für Service-Build/Start deaktiviert, um den statischen Erkennungspfad zu verwenden. Der nginx-Container lauscht auf Port 80, obwohl die Entwicklungs- und Preview-Server andere Ports verwenden.
+
+
+
+## Eine API verbinden
+
+Verwende eine öffentliche Variable wie `VITE_API_URL` für die per HTTPS im Browser erreichbare Adresse der API. Lies sie als `import.meta.env.VITE_API_URL` aus. Konfiguriere diesen Wert über [Variablen und Secrets](/variables) und erstelle die App neu, wenn er sich ändert. Stelle niemals eine Datenbank-URL, API-Zugangsdaten oder eine nur intern erreichbare Service-Adresse über eine Variable vom Typ `VITE_*` bereit.
+
+Für eine API auf einer anderen Origin konfiguriere die erlaubten Origins so, dass sie die Frontend-URL einschließen. Ein privater Service-Hostname, der zwischen Backend-Services funktioniert, wird im Browser eines Besuchers nicht aufgelöst.
+
+
+
+## Routing prüfen
+
+Öffne die Live-App, folge einer Client-Route und lade diese URL dann direkt neu. Der Standard-Static-Server fällt auf `index.html` zurück, damit der Client-Router eine interne Route rendern kann. Füge auch in der React-App eine Route für unbekannte Pfade hinzu. Dieser Fallback liefert weiterhin HTTP 200 zurück; verwende [statische Routen und 404s](/framework-guides/static-routing), um eine Serverrichtlinie für Seiten zu wählen, die echte HTTP-404-Antworten benötigen.
+
+Wenn ein Asset HTML zurückgibt oder die Seite leer bleibt, prüfe Vites `base`, die angeforderte Asset-URL und das Ausgabeverzeichnis. Wenn die App nie healthy wird, prüfe, ob der Service-Port `80` ist und ob keine alte Überschreibung des Startbefehls einen anderen Build-Pfad ausgewählt hat.
+
+Prüfe bei Seiten, die in der Suche erscheinen sollen, die anfängliche HTML-Antwort. Eine im Browser gerenderte Shell enthält möglicherweise nicht den Text, den eine Suchmaschine oder Answer Engine lesen soll. Wähle Prerendering oder ein Server-Framework, wenn du diesen Text in der Antwort benötigst.
+
+Siehe [getestete Versionen und Cloud-Ergebnisse](/framework-guides/validation) für die Bereitstellungsprüfungen vom 9. September 2026 und ihre Grenzen.
diff --git a/_locales/de/framework-guides/static-routing.mdx b/_locales/de/framework-guides/static-routing.mdx
new file mode 100644
index 0000000..ef44cf3
--- /dev/null
+++ b/_locales/de/framework-guides/static-routing.mdx
@@ -0,0 +1,107 @@
+---
+description: "Konfigurieren Sie statische Website-Routen auf Lizard: Stellen Sie erzeugtes HTML bereit, unterstützen Sie saubere URLs, geben Sie für fehlende Seiten HTTP 404 zurück und wählen Sie, wann ein SPA-Fallback sinnvoll ist."
+---
+
+
+
+# Statische Routen und 404-Fehler
+
+Eine Website mit erzeugten Inhalten sollte für jede Route deren HTML ausliefern und für eine fehlende Seite HTTP 404 zurückgeben. Neue lizardpack-Builds für Astro static, Docusaurus, VitePress, Hugo und SvelteKit adapter-static verwenden diese Richtlinie. React- und Vue-SPAs behalten den `index.html`-Fallback, den Browser-Router benötigen.
+
+Die benutzerdefinierte Konfiguration unten ist optional. Verwenden Sie sie für eine Routing-Richtlinie, die das erkannte Framework nicht bereitstellt. Bestehende Images behalten ihre alten Regeln, bis Sie sie neu bauen.
+
+
+
+## Wählen Sie die Routing-Richtlinie
+
+| App-Typ | Routenverhalten |
+|---|---|
+| React- oder Vue-SPA | Eine gültige Client-Route lädt `index.html`, danach rendert der Client-Router sie. |
+| Erzeugte Dokumentation oder Inhalte | Eine Route wird zu ihrem erzeugten HTML aufgelöst; ein unbekannter Pfad gibt HTTP 404 zurück. |
+| Serverseitig gerenderte App | Der Anwendungsserver löst Routen auf und gibt den Status zurück. |
+
+Eine SPA-Catch-all-Ansicht kann eine Meldung für fehlende Seiten anzeigen, aber Browser-Code kann den HTTP-Status der bereits gesendeten HTML-Antwort nicht ändern. Wenn Sie für eine SPA routenabhängigen HTTP-Status benötigen, verwenden Sie einen Server oder ein Prerendering-Routing-Setup, das weiß, welche Pfade existieren.
+
+
+
+## nginx für erzeugte Seiten konfigurieren
+
+Erstellen Sie `nginx.conf` im Anwendungsstamm:
+
+```nginx
+server {
+ listen 80;
+ server_name _;
+ root /usr/share/nginx/html;
+ index index.html;
+
+ location / {
+ try_files $uri $uri.html $uri/ =404;
+ }
+
+ error_page 404 /404.html;
+ location = /404.html {
+ internal;
+ }
+}
+```
+
+Dies unterstützt sowohl `guide.html`- als auch `guide/index.html`-Ausgabelayouts. Fügen Sie ein erzeugtes `404.html` ein, wenn Sie eine benutzerdefinierte Fehlerseite möchten. Lassen Sie andernfalls die `error_page`- und Exact-Location-Blöcke weg, um den Standard-Fehlertext von nginx zu verwenden. Behalten Sie in den Links und der Sitemap der Website einen kanonischen URL-Stil bei; diese Suchregel fügt keine kanonischen Weiterleitungen hinzu.
+
+
+
+## Website mit der Konfiguration bauen
+
+Verwenden Sie dieses vollständige Dockerfile für ein npm-Projekt mit einer eingecheckten Lockfile. Passen Sie die Standardwerte für `BUILD_SCRIPT` und `OUTPUT_DIR` an die folgende Tabelle an:
+
+```dockerfile
+FROM node:22-slim AS build
+WORKDIR /app
+COPY package.json package-lock.json ./
+RUN npm ci
+COPY . .
+ARG BUILD_SCRIPT=build
+RUN npm run "$BUILD_SCRIPT"
+
+FROM nginx:alpine
+ARG OUTPUT_DIR=dist
+COPY --from=build /app/${OUTPUT_DIR}/ /usr/share/nginx/html/
+COPY nginx.conf /etc/nginx/conf.d/default.conf
+EXPOSE 80
+```
+
+| Website | `BUILD_SCRIPT` | `OUTPUT_DIR` |
+|---|---|---|
+| Astro static | `build` | `dist` |
+| Docusaurus | `build` | `build` |
+| VitePress mit einem `docs/`-Stamm | `docs:build` | `docs/.vitepress/dist` |
+| VitePress im Projektstamm | `docs:build` oder Ihr tatsächliches Skript | `.vitepress/dist` |
+| SvelteKit mit adapter-static | `build` | `build` |
+| Next.js export | `build` | `out` |
+| Nuxt generate | `build` mit `nuxt generate` | `.output/public` |
+
+Verwenden Sie die Richtlinie für erzeugte Seiten nur, wenn die App diese Routendateien hat. Ein SvelteKit-SPA-Fallback benötigt zum Beispiel seine eigene Routing-Richtlinie. [Next.js statischer Export](/framework-guides/nextjs/static-export) enthält eine vollständige Anleitung mit einem Trailing-Slash-Layout.
+
+Schließen Sie Abhängigkeiten, Build-Ausgabe, `.git` und `.env*` in `.dockerignore` aus. Wenn der Build öffentliche Variablen benötigt, deklarieren Sie ihre `ARG`-Werte vor dem Build-Befehl. Kopieren Sie keine privaten Secrets in das Image oder die Browser-Ausgabe.
+
+Nach der [CLI-Einrichtung](/framework-guides#prepare-the-project) erstellen Sie einen Service mit `lizard add --service web` und stellen dann diesen Quellcode mit `lizard up --service web --port 80` bereit. Überspringen Sie den Schritt zum Hinzufügen, wenn der Service bereits existiert. Prüfen Sie bei einem bestehenden Service die [Reihenfolge der Build-Entscheidung](/concepts/build-pipeline#build-decision-order): Befehlsüberschreibungen können Vorrang vor dem Dockerfile haben. Eine Konfigurationsdatei allein ersetzt die erzeugte nginx-Konfiguration nicht; das Dockerfile muss sie in das Image kopieren.
+
+
+
+## HTTP-Antworten prüfen
+
+Setzen Sie `SITE_URL` auf die tatsächliche lokale Test-URL oder die bereitgestellte Origin und ersetzen Sie dann `/guide/` durch eine Seite, die existiert:
+
+```bash
+SITE_URL=https://YOUR_PUBLIC_HOST
+curl -sS -o /dev/null -w '%{http_code}\n' "$SITE_URL/"
+curl -sS -o /dev/null -w '%{http_code}\n' "$SITE_URL/guide/"
+curl -sS -o /dev/null -w '%{http_code}\n' "$SITE_URL/this-page-does-not-exist"
+```
+
+Erwarten Sie 200 für echte Seiten und 404 für den fehlenden Pfad. Wenn eine gültige Route zu ihrer kanonischen Form weiterleitet, prüfen Sie die Weiterleitung und verifizieren Sie dann das Ziel. Testen Sie auch ein tatsächliches Asset und einen erfundenen `.js`-Pfad: Ein fehlendes Skript darf nicht die Startseite als HTML mit Status 200 zurückgeben.
+
+Öffnen Sie die innere Route abschließend direkt in einem Browser und laden Sie sie neu. Korrekte Client-Navigation allein kann einen Server-Routing-Fehler verbergen. Prüfen Sie vor der Veröffentlichung einer indexierten Website zusammen mit dem HTTP-Status auch die Einstellungen des Frameworks für kanonische URLs und die Sitemap.
+
+Unter [getestete Versionen und Cloud-Ergebnisse](/framework-guides/validation) finden Sie die Deployment-Prüfungen vom 9. September 2026 und ihre Grenzen.
+
diff --git a/_locales/de/framework-guides/sveltekit.mdx b/_locales/de/framework-guides/sveltekit.mdx
new file mode 100644
index 0000000..424ad11
--- /dev/null
+++ b/_locales/de/framework-guides/sveltekit.mdx
@@ -0,0 +1,110 @@
+---
+description: "Stelle SvelteKit mit adapter-node auf Lizard bereit. Konfiguriere den Produktions-Build, Port 3000, ORIGIN, Formularaktionen und den separaten Pfad für adapter-static."
+---
+
+
+
+# SvelteKit auf Lizard bereitstellen
+
+Verwende `@sveltejs/adapter-node`, um einen SvelteKit-Server für Lizard zu bauen. Dabei entsteht `build/`, das mit `node build` auf Port `3000` startet. Installiere und konfiguriere den Adapter ausdrücklich; ein Scaffold, das noch `adapter-auto` verwendet, richtet kein Node-Bereitstellungsziel ein.
+
+Beginne mit dem [vollständigen Quellcode-Beispiel](https://github.com/lizard-build/docs/tree/main/_examples/sveltekit), das die Konfiguration und Dateien enthält, die in dieser Anleitung verwendet werden.
+
+
+
+## Adapter konfigurieren
+
+```bash
+npm install --save-dev @sveltejs/adapter-node
+```
+
+Behalte in `svelte.config.js` dein bestehendes Preprocess und andere Einstellungen bei, setze aber `kit.adapter` auf den Node-Adapter:
+
+```js
+import adapter from '@sveltejs/adapter-node';
+
+export default {
+ kit: { adapter: adapter() },
+};
+```
+
+Behalte nur den Bereitstellungs-Adapter, den du tatsächlich verwenden willst. Insbesondere kann eine ungenutzte Abhängigkeit `@sveltejs/adapter-static` im aktuellen Detektor den statischen Pfad auswählen, selbst wenn deine Konfiguration adapter-node importiert.
+
+| Einstellung | Wert |
+|---|---|
+| Build | `npm run build`, normalerweise `vite build` |
+| Ausgabe | `build/` |
+| Laufzeit | `node build` |
+| Host und Port | `HOST=0.0.0.0`, `PORT=3000` |
+| Service-Port | `3000` |
+
+
+
+## Produktionsserver testen
+
+```bash
+npm ci
+npm run build
+HOST=0.0.0.0 PORT=3000 ORIGIN=http://localhost:3000 node build
+```
+
+Öffne eine servergerenderte Seite und sende eine Formularaktion ab, falls die App eine hat. Behalte den Standard-Ausgabepfad des Adapters für die in dieser Anleitung verwendete Erkennung bei.
+
+
+
+## Bereitstellen und die öffentliche Origin setzen
+
+Nach dem [CLI-Setup](/framework-guides#prepare-the-project):
+
+```bash
+lizard init --name sveltekit-app
+lizard add --service web
+lizard up --service web --port 3000
+lizard ps --json
+```
+
+Setze `ORIGIN` auf die genaue öffentliche HTTPS-Origin aus der Bereitstellungsausgabe, ohne Pfad. Ersetze zum Beispiel diesen Platzhalter durch deine tatsächliche URL:
+
+```bash
+lizard secrets set ORIGIN=https://YOUR_PUBLIC_HOST --service web
+```
+
+Verwende stattdessen die benutzerdefinierte Domain, wenn Besucher diese Origin verwenden werden. Prüfe Formulare nach der Variablenänderung erneut. Für mehrere erlaubte Origins oder Proxy-abgeleitete URLs lies die [Anleitung zum SvelteKit Node-Server](https://svelte.dev/docs/kit/adapter-node) und konfiguriere vertrauenswürdige Proxy-Header bewusst.
+
+
+
+## Verifizieren und Fehler beheben
+
+Lies Build- und Laufzeit-Logs mit `lizard logs --build --service web --json` und `lizard logs --service web --json`. Öffne direkt eine innere Route, sende ein Formular ab und rufe eine fehlende Route an.
+
+Wenn Formulare einen Fehler wegen einer Cross-Website-Übermittlung melden, prüfe `ORIGIN`, bevor du eine Sicherheitsprüfung deaktivierst. Wenn `node build` den Server nicht finden kann, prüfe den aktiven Adapter und den Ausgabepfad. Lasse Überschreibungen des Service-Befehls ungesetzt, um den lizardpack-Pfad zu verwenden.
+
+
+
+## Statische SvelteKit-Sites
+
+Eine App, die alle benötigten Seiten prerendern kann, kann `@sveltejs/adapter-static`, die Standard-Ausgabe `build/` und Service-Port `80` verwenden. Diese Ausgabe kann keine Server-Aktionen oder Endpunkte zur Request-Zeit ausführen. Konfiguriere Prerendering für die benötigten Routen; das Paket allein zu installieren reicht nicht aus.
+
+Installiere `@sveltejs/adapter-static` und ersetze den Adapter-Import in `svelte.config.js`:
+
+```js
+import adapter from '@sveltejs/adapter-static';
+
+export default {
+ kit: { adapter: adapter() },
+};
+```
+
+Für eine Website, deren Routen vollständig generiert werden können, füge dies zu `src/routes/+layout.js` hinzu:
+
+```js
+export const prerender = true;
+export const trailingSlash = 'always';
+```
+
+Entferne ungenutzte Bereitstellungs-Adapter aus den Abhängigkeiten. Führe `npm run build` aus und prüfe, dass `build/` jede benötigte Seite enthält. Für die Standard-Ausgabe lasse Überschreibungen des Service-Befehls ungesetzt und stelle einen neuen Service auf Port `80` bereit. Neue Builds liefern das generierte HTML aus und geben HTTP 404 für fehlende Seiten zurück. Verwende für nginx nicht erneut den Port `3000` aus dem Server-Rezept.
+
+Verwende [statische Routen und 404-Seiten](/framework-guides/static-routing), um zwischen generierten HTML-Routen und einem SPA-Fallback zu wählen. Sieh dir den [SvelteKit Static Adapter](https://svelte.dev/docs/kit/adapter-static) für Framework-Optionen und Einschränkungen an.
+
+Siehe [getestete Versionen und Cloud-Ergebnisse](/framework-guides/validation) für die Bereitstellungsprüfungen vom 9. September 2026 und ihre Grenzen.
+
diff --git a/_locales/de/framework-guides/validation.mdx b/_locales/de/framework-guides/validation.mdx
new file mode 100644
index 0000000..d740785
--- /dev/null
+++ b/_locales/de/framework-guides/validation.mdx
@@ -0,0 +1,72 @@
+---
+description: "Ergebnisse des Framework-Leitfadens aus 16 echten Lizard CLI-Bereitstellungen am 9. September 2026: getestete Versionen, Routen, Formulare, Migrationen, kanonische URLs und Grenzen."
+---
+
+
+
+# Testergebnisse des Framework-Leitfadens
+
+Am 9. September 2026 haben alle 16 Rezepte in 11 Frameworks einen lokalen Build und eine neue Cloud-Bereitstellung mit Lizard CLI 0.3.95 bestanden. Wir haben die veröffentlichte Einrichtung befolgt, für jedes Rezept ein neues Projekt und einen neuen Service erstellt und den Quellcode mit `lizard up` hochgeladen. Diese Ergebnisse decken die unten aufgeführten Versionen und kleinen Test-Apps ab.
+
+Der Cloud-Durchlauf bestand 100 Prüfungen von Routen, APIs und Formularen sowie 45 Prüfungen verknüpfter JavaScript- und CSS-Dateien. Django-Migrationen, ein Datenbankschreib- und -lesevorgang sowie die finalen Website-URLs von Docusaurus und Hugo wurden ebenfalls bestanden.
+
+
+
+## Getestete Rezepte
+
+| Rezept | Getestete Versionen | Port | Cloud-Prüfung |
+|---|---|---|---|
+| Next.js server | Next.js 16.3.4, React 19.2.8 | `3000` | Bestanden |
+| Next.js statischer Export | Next.js 16.3.4, React 19.2.8 | `80` | Bestanden |
+| React with Vite | React 19.2.8, Vite 8.2.2 | `80` | Bestanden |
+| Vue with Vite | Vue 3.5.42, Vue Router 5.3.1, Vite 8.2.2 | `80` | Bestanden |
+| Astro static | Astro 7.3.1 | `80` | Bestanden |
+| Astro Node Server | Astro 7.3.1, Node adapter 11.1.5 | `3000` | Bestanden |
+| Nuxt Node server | Nuxt 4.5.2 | `3000` | Bestanden |
+| Nuxt generate | Nuxt 4.5.2 | `80` | Bestanden |
+| SvelteKit Node-Server | SvelteKit 2.70.3, Svelte 5.57.0, adapter-node 5.5.7 | `3000` | Bestanden |
+| SvelteKit static | SvelteKit 2.70.3, Svelte 5.57.0, adapter-static 3.0.10 | `80` | Bestanden |
+| Docusaurus | Docusaurus 3.10.2 | `80` | Bestanden |
+| VitePress, Docs-Root | VitePress 1.6.4 | `80` | Bestanden |
+| VitePress, Projekt-Root | VitePress 1.6.4 | `80` | Bestanden |
+| FastAPI | FastAPI 0.141.1, Uvicorn 0.52.4 | `8000` | Bestanden |
+| Django | Django 6.1.1, Gunicorn 26.2.0, WhiteNoise 6.12.0, psycopg 3.3.5 | `8000` | Bestanden |
+| Hugo | Hugo 0.165.0 (extended) | `80` | Bestanden |
+
+JavaScript-Builds verwendeten Node 22; Python-Builds verwendeten Python 3.13. Uploads liefen unter macOS ohne `COPYFILE_DISABLE`. Paketmanifeste und Lockfiles pinnen die oben genannten Versionen. Tags von Container-Images können sich unabhängig von einem Package-Lockfile ändern.
+
+
+
+## Was wir am 9. September geprüft haben
+
+- Wir haben die dokumentierten lokalen Build- und Server-Befehle in Linux-Containern ausgeführt und dann `lizard init`, `lizard add` und `lizard up` für jedes Rezept ausgeführt. Wir haben die Cloud-Build- und Laufzeit-Logs gelesen und den finalen Service-Status und Port geprüft.
+- Wir haben die öffentliche Startseite, eine innere Route, ein echtes Asset, eine fehlende Seite und einen fehlenden JavaScript-Pfad angefordert. Statische Content-Sites lieferten echte 404-Antworten; React und Vue behielten ihr dokumentiertes SPA-Fallback bei. Beide VitePress-Layouts lieferten den richtigen Inhalt unter sauberen URLs.
+- Wir haben API-Antworten zur Anfragezeit, POST-Handler, SvelteKit-Formularergebnisse und die Ablehnung eines Formulars von einer nicht vertrauenswürdigen Herkunft geprüft. Wir haben das bereitgestellte Next.js-Server-Aktion-Formular per HTTP mit seiner generierten action ID übermittelt und die Weiterleitung sowie den zurückgegebenen Wert geprüft.
+- Wir haben Docusaurus und Hugo nach dem Setzen des generierten Hostnamens in der Konfiguration neu gebaut. Kanonische Docusaurus-URLs und beide Sitemaps verwendeten den öffentlichen Host.
+- Wir haben Django-Migrationen zweimal gegen Managed Postgres ausgeführt, eine Testzeile geschrieben und gelesen, gesammelte statische Dateien ausgeliefert, ein gültiges CSRF-Formular akzeptiert und ein Formular ohne sein Token abgelehnt.
+
+Jedes Rezept verwendete ein separates Testprojekt mit unterschiedlichen Namen, um den Durchlauf isoliert zu halten. Workspace-, Region- und JSON-Flags machten den Testkontext explizit. Service-Overrides für Build, Start und Dockerfile-Pfad blieben ungesetzt. Nur die Rezepte Next.js statischer Export, Nuxt generate und Django lieferten die in ihren Leitfäden dokumentierten Dockerfiles mit. Die Tests für Docusaurus, VitePress, Hugo und SvelteKit Node enthielten die [veröffentlichten Quellcodebeispiele](https://github.com/lizard-build/docs/tree/main/_examples).
+
+
+
+## Browser-Prüfungen
+
+Der Durchlauf vom 9. September bestätigte einen React-Button-Klick im Browser. Die Browser-Verbindung lieferte danach wiederholte Timeouts bei Navigation und Seitenlesevorgängen zurück, daher beansprucht dieser Durchlauf **keinen** erneuten erfolgreichen Browser-Test für alle 16 Rezepte. HTTP-Routen- und Formularprüfungen wurden unabhängig bestanden.
+
+Der Durchlauf vom 7. September umfasste Reloads direkter Routen, React-Interaktion, Vue-Router-Navigation, Next.js Server Actions und SvelteKit-Formularübermittlungen in einem Browser. Diese bleiben Ergebnisse dieses früheren Durchlaufs.
+
+
+
+## Korrekturen seit dem ersten Durchlauf
+
+Der Durchlauf vom 7. September fand fehlende Schritte zur Service-Erstellung, einen Nuxt-Static-Preset-Mismatch, Defekte im statischen Routing, macOS-Archivmetadaten, Exit-Codes bei fehlgeschlagenen Builds und Fehler bei Port-Änderungen. Die Leitfäden enthalten jetzt `lizard add` und die korrigierte statische Nuxt-Einrichtung.
+
+Die erneute Prüfung des statischen Routings vom 8. September wurde ohne benutzerdefinierte Dockerfiles für Astro static, SvelteKit static, Docusaurus, Hugo und beide VitePress-Layouts bestanden. Neue Builds enthalten diese Routing-Regeln; vorhandene Images benötigen einen Neubau.
+
+Lizard CLI 0.3.95 enthält die Korrekturen für Archive und Exit-Codes bei fehlgeschlagenen Builds. Die Produktionsprüfungen vom 9. September verifizierten außerdem Service-Port-Änderungen und den Erhalt eines expliziten Ports während Upload und Neubau. Siehe [known issues](/platform/known-issues) für die Release Hinweise und verbleibenden Grenzen.
+
+
+
+## Grenzen dieser Ergebnisse
+
+Diese Prüfungen decken Quellcode-Uploads und die dokumentierten Modi ab. Sie belegen keine Unterstützung für jedes Plugin, jeden Adapter, jedes Theme, jede Framework-Version, jeden GitHub-Bereitstellungspfad, jedes Datenbank-Recovery-Verfahren oder Workloads mit mehreren Replikaten. Djangos kleine Test-App meldet weiterhin Sicherheitswarnungen von `check --deploy`; sie ist keine vollständige Sicherheitskonfiguration für die Produktion. Diese Tests messen weder Suchrankings noch AI-Zitationen. Prüfen Sie vor dem Release die Routen und Datenoperationen Ihrer eigenen App.
diff --git a/_locales/de/framework-guides/vitepress.mdx b/_locales/de/framework-guides/vitepress.mdx
new file mode 100644
index 0000000..3fa46c7
--- /dev/null
+++ b/_locales/de/framework-guides/vitepress.mdx
@@ -0,0 +1,78 @@
+---
+description: "Stelle VitePress auf Lizard bereit mit docs:build, dem korrekten Verzeichnis .vitepress/dist, nginx und Port 80. Konfiguriere saubere URLs und prüfe Dokumentationsrouten und 404er."
+---
+
+
+
+# VitePress auf Lizard bereitstellen
+
+Lizard kann eine VitePress-Dokumentationswebsite bauen und das generierte HTML über nginx auf Port `80` ausliefern. Stimme npm-Skript und Ausgabeverzeichnis auf dein Docs-Root ab: `vitepress build docs` schreibt nach `docs/.vitepress/dist`, während `vitepress build` nach `.vitepress/dist` schreibt.
+
+Starte mit dem [vollständigen Quellcodebeispiel](https://github.com/lizard-build/docs/tree/main/_examples/vitepress), das die Konfiguration und Dateien enthält, die in dieser Anleitung verwendet werden.
+
+
+
+## Build-Skript festlegen
+
+Für Markdown-Dateien in `docs/` behalte diese Skripte in `package.json` bei:
+
+```json
+{
+ "scripts": {
+ "docs:dev": "vitepress dev docs",
+ "docs:build": "vitepress build docs",
+ "docs:preview": "vitepress preview docs"
+ }
+}
+```
+
+| Einstellung | Wert in dieser Anleitung |
+|---|---|
+| Build | `npm run docs:build` |
+| Docs root | `docs/` |
+| Output | `docs/.vitepress/dist/` |
+| Production server | nginx |
+| Service-Port | `80` |
+
+Die Erkennung findet ein Skript, das `vitepress build` enthält, und verwendet dessen Root-Argument. Halte dieses Skript direkt und eindeutig. Shell-Wrapper, mehrere passende Skripte oder ein benutzerdefiniertes `outDir` erfordern eine explizite Build-Konfiguration oder ein Dockerfile.
+
+
+
+## Website lokal prüfen
+
+```bash
+npm ci
+npm run docs:build
+npm run docs:preview
+```
+
+Prüfe eine innere Markdown-Seite und ein Asset. Mit `cleanUrls: true` verlinkt VitePress auf Routen ohne Dateiendung; der Produktionsserver muss diese URLs zu den generierten HTML-Dateien auflösen. Setze `base` auf den tatsächlichen Pfadpräfix oder `/` für die Domain-Wurzel. Siehe [VitePress deployment](https://vitepress.dev/guide/deploy).
+
+
+
+## Bereitstellen
+
+Führe nach dem [CLI-Setup](/framework-guides#prepare-the-project) den Befehl aus dem Verzeichnis aus, das `package.json` enthält, nicht von innerhalb von `docs/`:
+
+```bash
+lizard init --name vitepress-docs
+lizard add --service web
+lizard up --service web --port 80
+lizard logs --build --service web --json
+lizard ps --json
+```
+
+Schließe die VitePress-Konfiguration, Markdown, Quell-Assets, das Package-Manifest und die Lockfile ein. Schließe lokale Abhängigkeiten, generierte Ausgabe, Caches und Secrets aus. Setze `vitepress dev` oder `vitepress preview` nicht als Startbefehl des Service.
+
+
+
+## Saubere Routen und HTTP-Status prüfen
+
+Neue VitePress-Builds lösen Routen ohne Dateiendung zu ihren generierten `.html`-Dateien auf und geben für fehlende URLs HTTP 404 zurück. Lass Befehlsüberschreibungen deaktiviert, um diesen Erkennungspfad zu verwenden. Für die Standardausgabe ist kein benutzerdefiniertes Dockerfile nötig. Siehe [Statische Routen und 404er](/framework-guides/static-routing) für benutzerdefiniertes Routing.
+
+Prüfe eine saubere URL direkt und lade sie neu. Rufe einen nicht existierenden Pfad auf und bestätige HTTP 404. Wenn ein älteres Image für fehlende Pfade die Startseite ausliefert, baue den Service neu, damit die aktuellen Routing-Regeln übernommen werden.
+
+Wenn der Build `Missing script: build` meldet, prüfe, dass der ausgewählte Pfad die VitePress-Erkennung verwendet und keine Überschreibung des Service-Befehls diese ersetzt. Wenn der Build erfolgreich ist, nginx aber keine Doku ausliefert, vergleiche das Docs-Root des Skripts mit dem kopierten Ausgabeverzeichnis. Baue nach Änderungen an Inhalt oder Konfiguration neu.
+
+Siehe [Getestete Versionen und Cloud-Ergebnisse](/framework-guides/validation) für die Bereitstellungsprüfungen vom 9. September 2026 und ihre Grenzen.
+
diff --git a/_locales/de/framework-guides/vue.mdx b/_locales/de/framework-guides/vue.mdx
new file mode 100644
index 0000000..f46c995
--- /dev/null
+++ b/_locales/de/framework-guides/vue.mdx
@@ -0,0 +1,70 @@
+---
+description: "Stelle eine mit Vite gebaute Vue-App auf Lizard bereit. Konfiguriere dist-Ausgabe, Port 80, den History-Modus von Vue Router, öffentliche Umgebungsvariablen und Prüfungen für die Produktion."
+---
+
+
+
+# Vue mit Vite auf Lizard bereitstellen
+
+Stelle eine mit Vite gebaute Vue-App als statischen Webservice auf Lizard bereit. Der Build erzeugt `dist/`, und nginx liefert die Dateien auf Port `80` aus. Für Nuxt-Server-Rendering und Server-Routen nutze den [Nuxt-Leitfaden](/framework-guides/nuxt).
+
+
+
+## Projekt vorbereiten
+
+Führe den Vorgang im Verzeichnis der Vue-App aus, mit `package.json`, einer Lockfile und der Vite-Konfiguration. Behalte das Build-Skript des Scaffolds bei, einschließlich `vue-tsc`, wenn damit dein TypeScript-Code geprüft wird. Der Build muss erfolgreich abgeschlossen werden, indem das Vite-Bundle in `dist/` erzeugt wird.
+
+| Einstellung | Wert |
+|---|---|
+| Build | `npm run build` |
+| Output | `dist/` |
+| Start command | Keine für den Erkennungspfad statischer Bereitstellung |
+| Service-Port | `80` |
+
+Behalte `base: '/'` für eine Website an der Domain-Wurzel bei. Wenn du ein Pfadpräfix verwendest, richte die base von Vite an der Router-Basis und der URL aus, unter der die App tatsächlich läuft. Ein benutzerdefiniertes Ausgabeverzeichnis benötigt ein Dockerfile, das dieses Verzeichnis kopiert.
+
+
+
+## Build lokal prüfen
+
+```bash
+npm ci
+npm run build
+npm run preview
+```
+
+Nutze die lokale Vorschau-URL, um eine Komponente zu prüfen, die Daten abruft, und eine Seite, die über den Router erreicht wird. `vite preview` ist für diese lokale Prüfung gedacht; nginx liefert die Produktionsdateien aus. Informationen zum Build-Output und zum Verhalten der Vorschau findest du im [Deployment-Leitfaden von Vite](https://vite.dev/guide/static-deploy.html).
+
+
+
+## Bereitstellen
+
+Stelle nach dem [CLI-Setup](/framework-guides#prepare-the-project) das aktuelle Quellverzeichnis bereit:
+
+```bash
+lizard init --name vue-app
+lizard add --service web
+lizard up --service web --port 80
+lizard logs --build --service web --json
+lizard ps --json
+```
+
+Schließe lokale Abhängigkeiten, `dist/` und `.env`-Dateien vom Upload aus. Ohne bestehende Befehlsüberschreibungen erkennt lizardpack Vite und erstellt das statische Image. Füge `npm run dev` nicht als Startbefehl des Service hinzu.
+
+
+
+## Vue Router History-Modus
+
+Wenn deine App `createWebHistory` verwendet, muss ihr Server direkte Anfragen an Client-Routen verarbeiten können. Das standardmäßige statische Image liefert `index.html` aus, wenn keine Datei gefunden wird, sodass `/account` Vue Router bei einem harten Neuladen erreichen kann. Stimme die Router-Basis auf die Vite-base ab, zum Beispiel mit `createWebHistory(import.meta.env.BASE_URL)`. Siehe [History-Modi von Vue Router](https://router.vuejs.org/guide/essentials/history-mode.html).
+
+Teste sowohl die Navigation von der Startseite als auch das Öffnen von `/account` in einem neuen Tab. Füge eine Catch-all-Ansicht für fehlende Client-Routen hinzu. Der Server-Fallback gibt selbst für unbekannte Pfade HTTP 200 zurück; suchmaschinenfreundliche 404-Antworten liefert er nicht. Lies [statische Routen und 404er](/framework-guides/static-routing), bevor du dieses Setup für eine indexierte Content-Website verwendest.
+
+
+
+## Variablen und API-Anfragen
+
+Vite schreibt `VITE_*`-Werte während des Builds in das Browser-Bundle. Verwende sie nur für öffentliche Werte, etwa die öffentliche HTTPS-URL deiner API. Setze sie über [Variablen und Secrets](/variables) und prüfe dann die tatsächliche Netzwerkanfrage der neu gebauten App. Ein reiner Laufzeit-Neustart kann keinen Wert in bereits gebautem JavaScript ersetzen.
+
+Wenn Anfragen nur nach dem Deployment fehlschlagen, prüfe CORS auf der API und bestätige, dass der Browser nicht `localhost` oder einen privaten Backend-Hostnamen aufruft. Wenn das HTML lädt, aber Assets fehlschlagen, prüfe die base von Vite und die Asset-Pfade. Für Seiten, die HTML benötigen, bevor JavaScript läuft, wähle Nuxt-Rendering oder einen expliziten Prerendering-Schritt.
+
+Siehe [getestete Versionen und Cloud-Ergebnisse](/framework-guides/validation) für die Deployment-Prüfungen vom 9. September 2026 und ihre Grenzen.
diff --git a/_locales/de/getting-started.mdx b/_locales/de/getting-started.mdx
new file mode 100644
index 0000000..5ad00d8
--- /dev/null
+++ b/_locales/de/getting-started.mdx
@@ -0,0 +1,134 @@
+---
+description: "Installieren Sie die lizard CLI, melden Sie sich an und stellen Sie Ihre erste App in wenigen Minuten aus einem GitHub-Repo oder einem lokalen Ordner bereit, und fügen Sie dann eine Datenbank hinzu."
+---
+
+
+
+# App-Schnellstart
+
+Stellen Sie Ihre erste App in wenigen Minuten auf Lizard bereit. Sie benötigen Node.js 18+ und npm — ein Lizard-Konto wird automatisch erstellt, wenn Sie zum ersten Mal `lizard login`. Sie installieren die CLI, melden sich an und stellen dann bereit — entweder direkt aus einem GitHub-Repo oder aus einem lokalen Verzeichnis.
+
+
+
+## 1. Die CLI installieren
+
+Installieren Sie die `lizard`-Binärdatei global über npm:
+
+```bash
+npm install -g @lizard-build/cli
+```
+
+Prüfen Sie, ob sie sich in Ihrem `PATH` befindet:
+
+```bash
+lizard --version
+```
+
+> **Verwenden Sie nicht `npx`.** Verwenden Sie immer die global installierte `lizard`-Binärdatei. Beim Ausführen von `npx @lizard-build/cli` wird eine Wegwerfkopie geladen, deren Version von der Plattform abweichen kann. Aktualisieren Sie sie später direkt mit `lizard upgrade`.
+
+> **Berechtigungsfehler (EACCES)?** Verwenden Sie nicht `sudo`. Setzen Sie stattdessen für npm ein Präfix in einem Verzeichnis, das Ihrem Benutzer gehört:
+> ```bash
+> mkdir -p ~/.npm-global
+> npm config set prefix ~/.npm-global
+> echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.zshrc && source ~/.zshrc
+> npm install -g @lizard-build/cli
+> ```
+
+
+
+## 2. Anmelden
+
+```bash
+lizard login
+```
+
+Dadurch wird Ihr Browser zur Authentifizierung geöffnet und Sie kehren nach der Bestätigung in Ihr Terminal zurück. In CI oder anderen nicht interaktiven Umgebungen authentifizieren Sie sich stattdessen mit einem Token:
+
+```bash
+export LIZARD_TOKEN=lzd_xxx
+# or
+lizard login --token lzd_xxx
+```
+
+Sie können jederzeit prüfen, wer Sie sind:
+
+```bash
+lizard whoami
+```
+
+
+
+## 3. Bereitstellen
+
+Wählen Sie den Weg, der zu dem Ort passt, an dem Ihr Code liegt.
+
+
+
+### Option A — Ein GitHub-Repo bereitstellen (empfohlen)
+
+Wenn Ihr Code auf GitHub liegt, erstellen Sie einen Service direkt aus dem Repo. Lizard klont es, erkennt den Stack automatisch, baut ihn und gibt eine Live-URL zurück:
+
+```bash
+lizard add -r your-org/your-app
+```
+
+Pushes auf den verfolgten Branch lösen ab dann automatisch eine erneute Bereitstellung aus. Bei privaten Repos verbinden Sie zuerst die GitHub App:
+
+```bash
+lizard git connect
+```
+
+
+
+### Option B — Lokalen Code bereitstellen
+
+Laden Sie im Projektverzeichnis den aktuellen Ordner hoch und stellen Sie ihn bereit (berücksichtigt `.gitignore`):
+
+```bash
+lizard up
+```
+
+Wenn das Verzeichnis noch nicht mit einem Projekt verknüpft ist, erstellt oder wählt `up` es interaktiv aus. In CI verknüpfen Sie es vorher explizit mit `lizard init --name my-project`.
+
+In beiden Fällen erhalten Sie nach Abschluss des Builds eine generierte URL wie `https://your-app-production.onlizard.com`.
+
+
+
+## 4. Build und Ausführung beobachten
+
+```bash
+lizard ps # services in the project, with status + URL
+lizard logs # last runtime log lines
+lizard logs --build # the most recent build's logs
+lizard open # open the project in the dashboard
+```
+
+
+
+## 5. Eine Datenbank hinzufügen (optional)
+
+Stellen Sie ein Managed Postgres bereit und referenzieren Sie es aus Ihrem Service:
+
+```bash
+lizard add postgres
+lizard secrets set DATABASE_URL='${{postgres.DATABASE_URL}}' --service your-app
+lizard redeploy --service your-app
+```
+
+Die Referenz `${{postgres.DATABASE_URL}}` wird beim Bereitstellen aufgelöst und automatisch zusammen mit dem Add-on rotiert. Siehe [Managed Addons](/addons).
+
+
+
+## Nächste Schritte
+
+- **[Grundkonzepte](/concepts/architecture)** — Projekte, Services und die Build-Pipeline verstehen.
+- **[Bereitstellung über GitHub](/deploy/github)** — Branches, Monorepos und automatische erneute Bereitstellungen.
+- **[Variablen & Secrets](/variables)** — Geltungsbereich und Priorität.
+- **[Netzwerk](/networking)** — Ihren eigenen Hostnamen mit automatischem TLS verbinden.
+- **[Eine App bereitstellen, die Ihre AI IDE erstellt hat](https://lizard.build/blog/google-antigravity-how-to-deploy-your-app-to-production)** — dieselben drei Schritte, nur stattdessen an einen Agenten übergeben, für eine in Google Antigravity geschriebene App.
+
+
+
+## Hosting-Kosten
+
+Lizard verwendet [pay as you go](/platform/billing) ohne monatliches Abonnement. Die Ressourcennutzung wird mit Ihrem Kontoguthaben verrechnet. Gekaufte Guthaben verfallen nicht; Testguthaben schon. Prüfen Sie vor der Bereitstellung [die Preise](https://lizard.build/pricing) und Ihre Kontolimits.
diff --git a/_locales/de/guides/_meta.ts b/_locales/de/guides/_meta.ts
new file mode 100644
index 0000000..c3bc97c
--- /dev/null
+++ b/_locales/de/guides/_meta.ts
@@ -0,0 +1,2 @@
+export default { index: "Leitfaden auswählen", 'deploy-from-coding-agent': "Aus einem Coding-Agenten deployen", 'deploy-mcp-server': "Einen Remote-MCP-Server hosten", 'telegram-bot': "Einen Telegram-Bot ausführen", umami: "Umami ausführen", flowise: "Flowise mit PostgreSQL ausführen", validation: "Testergebnisse" };
+
diff --git a/_locales/de/guides/deploy-from-coding-agent.mdx b/_locales/de/guides/deploy-from-coding-agent.mdx
new file mode 100644
index 0000000..9f58714
--- /dev/null
+++ b/_locales/de/guides/deploy-from-coding-agent.mdx
@@ -0,0 +1,139 @@
+---
+description: "Stelle eine App aus Claude Code, Codex oder Cursor mit Lizard Skill und Lizard CLI bereit. Wähle GitHub oder lokalen Quellcode, verbinde eine Datenbank und überprüfe das Ergebnis."
+---
+
+
+
+# Bereitstellung aus einem Coding-Agent
+
+Ein Coding-Agent kann Lizard Skill und Lizard CLI verwenden, um die von ihm erstellte App bereitzustellen. Der Agent liest die Anleitung der installierten CLI, prüft das Zielprojekt, führt den Build aus und kontrolliert das Ergebnis. Dafür ist kein separater MCP-Transport erforderlich.
+
+
+
+## Bevor du beginnst
+
+Du brauchst eine funktionsfähige Anwendung, die Berechtigung, sie bereitzustellen, und ein Konto bei Lizard. Die Anwendung muss auf `0.0.0.0` und dem konfigurierten Port lauschen. Führe ihre lokalen Prüfungen aus, bevor du einen Cloud-Build startest.
+
+
+
+## Gib dem Agenten die aktuelle Anleitung
+
+```bash
+npm install -g @lizard-build/cli
+lizard skills get core --json
+lizard --help --json
+```
+
+Lizard Skill lädt Anweisungen, die zur installierten CLI passen. Lies für einen bestimmten Befehl dessen Schema, statt Flags zu raten:
+
+```bash
+lizard up --help --json
+lizard service set --help --json
+```
+
+Ein nützlicher Prompt ist:
+
+> Stelle diese App mit Lizard bereit. Lies die Anleitung der installierten CLI, prüfe das verknüpfte Projekt und den Service, führe die Prüfungen der App aus und zeige das Build-Ergebnis sowie eine funktionierende URL. Frage nach, bevor du einen bestehenden Produktions-Service änderst oder Daten löschst.
+
+
+
+## Lokalen Quellcode bereitstellen
+
+Für einen vollständigen Test verwende das Beispiel [agent-app-Beispiel](https://github.com/lizard-build/docs/tree/23635ba7e162bafce75d3f6206553b3ef2c0c48e/_examples/agent-app). Es nutzt Node.js 22 und `pg` 8.16.3, lauscht auf Port 3000 und liest eine Zeile aus Managed Postgres. Beim Start werden die Demo-Tabelle und die Demo-Zeile erstellt, falls sie nicht vorhanden sind. Für eine größere Anwendung solltest du deinen eigenen Migrationsprozess verwenden.
+
+Kopiere das Beispiel in ein eigenes Verzeichnis und führe seine lokalen Prüfungen aus:
+
+```bash
+npm ci
+npm run check
+lizard status --json
+```
+
+Damit wird die JavaScript-Syntax geprüft. Die Prüfungen für Datenbank und öffentliches HTTP erfolgen nach der Bereitstellung. Wenn dieses Verzeichnis bereits verknüpft ist, prüfe, ob es das vorgesehene Projekt ist. Für ein neues Testprojekt:
+
+```bash
+lizard init --name agent-example --json
+lizard add --service api --json
+lizard add postgres --json
+lizard secrets set DATABASE_URL='${{postgres.DATABASE_URL}}' --service api --json
+lizard up --service api --port 3000 --json
+```
+
+Verwende den tatsächlichen Namen der Datenbank, falls er nicht `postgres` ist. Lass die Referenz in Anführungszeichen, damit die lokale Shell sie nicht expandiert. Konfiguriere sie vor der ersten Bereitstellung. Melde dich nur mit `lizard login` an, wenn ein Befehl meldet, dass eine Authentifizierung erforderlich ist.
+
+Der Upload-Pfad ist für dieses kopierte Beispiel beabsichtigt. Für eine Anwendung, die bereits in GitHub liegt, verwende stattdessen den nächsten Abschnitt. Unter macOS mit Lizard CLI 0.3.92 führe `COPYFILE_DISABLE=1 lizard up --service api --port 3000 --json` aus, um AppleDouble-Metadaten auszuschließen. In dieser CLI-Version kann ein fehlgeschlagener Build trotzdem mit Code 0 enden: Prüfe das Ereignis `failed`/`deployed` im Terminal und verifiziere die Anwendung. Siehe [bekannte Probleme](/platform/known-issues).
+
+
+
+## Aus GitHub bereitstellen
+
+Verwende diesen Weg, wenn die Anwendung ein GitHub-Repository hat. Prüfe zuerst das Remote:
+
+```bash
+git remote get-url origin
+lizard status --json
+lizard ps --json
+```
+
+Verwende ein verknüpftes Testprojekt oder erstelle eines mit `lizard init --name YOUR_PROJECT_NAME`. Hänge das Repository an, ohne einen Build zu starten, damit Zeit bleibt, seine Umgebung zu konfigurieren:
+
+```bash
+lizard add --repo YOUR_ORG/YOUR_REPO --name api-git --no-deploy --json
+lizard secrets set DATABASE_URL='${{postgres.DATABASE_URL}}' --service api-git --json
+```
+
+Stelle zuerst Managed Postgres bereit, wenn dieses Projekt es noch nicht hat. Diese Abfolge verwendet dasselbe Node.js-Beispiel wie oben. Für ein Repository mit dieser App in einem Unterverzeichnis oder auf einem anderen Branch konfiguriere es vor der Bereitstellung:
+
+```bash
+lizard service set api-git --set branch=YOUR_BRANCH --set rootDirectory=YOUR_APP_DIRECTORY --set containerPort=3000 --json
+lizard redeploy --service api-git --json
+```
+
+Für eine App im Repository-Root auf `main` lasse den Befehl `service set` weg. Setze den korrekten Port, falls deine Anwendung einen anderen verwendet. Wenn das Repository für Lizard nicht verfügbar ist, verbinde die GitHub-App; ersetze diesen Weg nicht stillschweigend durch einen Upload.
+
+Für spätere Aktualisierungen eines bestehenden GitHub-Service verwende `lizard redeploy --service api-git` oder pushe in den verfolgten Branch, wenn Auto-Bereitstellen aktiviert ist. `lizard up` stellt einen Service auf Upload-Quellcode um. Das Ändern von Build-Einstellungen bei einem bereits laufenden Service kann einen eigenen Build auslösen; prüfe die Ereignisse, bevor du einen weiteren anforderst.
+
+
+
+## Ergebnis überprüfen
+
+Lies Build- und Laufzeit-Logs getrennt:
+
+```bash
+lizard logs --build --service api --json
+lizard logs --service api --json
+lizard ps --json
+```
+
+Verwende für den GitHub-Pfad `api-git` statt `api`. Setze `APP_URL` auf die von der CLI gemeldete HTTPS-URL und führe dann Folgendes aus:
+
+```bash
+curl --fail "$APP_URL/health"
+curl --fail "$APP_URL/data"
+```
+
+Die erste Antwort ist `App ready`. Die zweite ist `{"value":"database-connected"}`. Ein Build allein beweist nicht, dass die Datenbankreferenz aufgelöst wurde. Das Beispiel stellt nur diese feste Demo-Zeile bereit, keine API zur Datenbankverwaltung.
+
+Für diesen Test-Service prüfe einen Laufzeit-Neustart:
+
+```bash
+lizard restart --service api --json
+```
+
+Warte, bis der Service in `lizard ps --json` wieder zu `running` zurückkehrt, und wiederhole beide HTTP-Anfragen. Ein Laufzeit-Log-Tail kann leer sein; die HTTP-Antwort ist die Anwendungsprüfung. Die Zeile wird in Managed Postgres gespeichert; der Service-Prozess speichert sie nicht. Um die Wiederverwendung vorhandener Daten zu prüfen, aktualisiere die Demo-Zeile vor dem Neustart im Datenbankeditor auf einen eindeutigen Wert und bestätige anschließend, dass `/data` diesen Wert zurückgibt.
+
+`logs --json` gibt ein Log-Tail zurück und beendet sich. Lies [Speicherung und Wiederherstellung](/platform/storage-and-recovery), bevor du echte Anwendungsdaten änderst.
+
+
+
+## Wenn die Bereitstellung fehlschlägt
+
+Verwende den Exit-Code und den JSON-Fehler des fehlgeschlagenen Befehls. Ein Compile-Fehler, ein Prozess, der beendet wird, und ein nicht erreichbarer Port erfordern unterschiedliche Korrekturen. Siehe [JSON und Automatisierung](/cli/json) und [Service wird nie healthy](/deploy/troubleshooting/service-never-healthy). `redeploy` ist ein neuer Build, kein Rollback auf eine ältere Version.
+
+
+
+## Limits und Kosten
+
+Ein Agent kann über dieselbe CLI wie eine Person kostenpflichtige Ressourcen erstellen. Prüfe [Limits](/platform/limits) und [Preise](https://lizard.build/pricing), und beschränke Credentials auf das Projekt und die Services, die es benötigt.
+
+Siehe [Ergebnisse der Szenariotests](/guides/validation) für geprüfte Versionen, Cloud-Ergebnisse und verbleibende Limits.
diff --git a/_locales/de/guides/deploy-mcp-server.mdx b/_locales/de/guides/deploy-mcp-server.mdx
new file mode 100644
index 0000000..0f4bd8a
--- /dev/null
+++ b/_locales/de/guides/deploy-mcp-server.mdx
@@ -0,0 +1,116 @@
+---
+description: "Hosten Sie einen Remote-MCP-Server auf Lizard mit Streamable HTTP, Bearer-Token-Prüfungen, einem Health-Endpunkt und einem Client, der einen Tool-Aufruf verifiziert."
+---
+
+
+
+# Einen Remote-MCP-Server hosten
+
+Stellen Sie einen MCP-Server als HTTP-Anwendung bereit, wenn Clients eine Remote-URL benötigen. Dieses Beispiel stellt ein arithmetisches Tool bereit, prüft ein Bearer-Token und bietet einen Health-Endpunkt an. Es verwendet Streamable HTTP; ein lokaler `stdio`-Server kann Remote-Clients nicht allein bedienen.
+
+
+
+## Bevor Sie beginnen
+
+Sie benötigen Node.js 22, Lizard CLI, ein Projekt, das Sie bereitstellen können, und einen MCP-Client, der ein konfiguriertes Bearer-Token akzeptiert. Das Beispiel verwendet `@modelcontextprotocol/sdk` 1.30.0 im zustandslosen Modus. Es bietet weder OAuth-Login noch Browserzugriff oder einen Identitätsanbieter.
+
+Die ausführbaren Dateien befinden sich in [remote-mcp-node](https://github.com/lizard-build/docs/tree/23635ba7e162bafce75d3f6206553b3ef2c0c48e/_examples/remote-mcp-node). Verwenden Sie die eingecheckte Lockfile. Der lokale Smoke-Test prüft Initialisierung, Tool-Erkennung, einen Tool-Aufruf und die Ablehnung ohne gültiges Token. Eine Deployment-Prüfung muss außerdem den öffentlichen Proxy und den TLS-Pfad bestätigen.
+
+
+
+## Lokal ausführen
+
+Aus dem Beispielverzeichnis:
+
+```bash
+npm ci
+npm test
+node issue-token.mjs
+export MCP_PUBLIC_KEY="$(cat .mcp-public-key.pem)"
+export MCP_ALLOWED_HOSTS=127.0.0.1,localhost
+npm start
+```
+
+Das erzeugte Token läuft nach einer Stunde ab. Der private Signaturschlüssel wird nicht gespeichert. Verwenden Sie für ein dauerhaftes Deployment Ihren eigenen Token-Issuer und Rotationsprozess; bewahren Sie dessen privaten Schlüssel außerhalb des Servers auf.
+
+In einem anderen Terminal:
+
+```bash
+export MCP_URL=http://127.0.0.1:8000/mcp
+export MCP_TOKEN="$(cat .mcp-token)"
+node client.mjs
+```
+
+Der Client prüft Initialisierung, Tool-Erkennung und das Ergebnis `5` und gibt dann `MCP initialize, tools/list and tools/call passed: 5` aus. `/health` gibt `ok` zurück; eine Anfrage an `/mcp` ohne gültiges Token gibt `401` zurück.
+
+
+
+## Die Anwendung bereitstellen
+
+Behalten Sie die Dockerfile und die Lockfile des Beispiels bei. Aus dem Verzeichnis, das sie enthält:
+
+```bash
+lizard init --name mcp-example
+lizard add --service mcp
+lizard domain --service mcp --json
+```
+
+Melden Sie sich mit `lizard login` an, wenn ein Befehl meldet, dass eine Authentifizierung erforderlich ist. `init` verknüpft das Projekt; `add` erstellt den benannten Service. Der Domain-Befehl weist seinen Hostnamen vor dem Deployment zu. Verwenden Sie unten die zurückgegebene `hostname`, ohne `https://` oder einen Pfad:
+
+```bash
+lizard secrets set MCP_PUBLIC_KEY="$(cat .mcp-public-key.pem)" --service mcp
+lizard secrets set MCP_ALLOWED_HOSTS=YOUR_SERVICE_HOSTNAME --service mcp
+```
+
+Setzen Sie beide Werte vor dem ersten Deployment. Führen Sie dann Folgendes aus:
+
+```bash
+lizard up --service mcp --port 8000
+lizard logs --build --service mcp --json
+lizard logs --service mcp --json
+lizard ps --json
+```
+
+Unter macOS mit Lizard CLI 0.3.92 verwenden Sie `COPYFILE_DISABLE=1 lizard up --service mcp --port 8000`, um AppleDouble-Metadaten aus dem Archiv auszuschließen. Eine spätere CLI-Version kann die Archivkorrektur enthalten. Prüfen Sie das letzte Deployment-Ereignis und den öffentlichen Endpunkt; verlassen Sie sich nach einem fehlgeschlagenen Build bei dieser CLI-Version nicht allein auf den Exit-Code. `server.mjs` lauscht auf `0.0.0.0` und liest `PORT`, mit 8000 als Standardwert. Der Bereitstellen-Befehl setzt den Service-Port auf 8000. Konfigurieren Sie den öffentlichen Schlüssel als mehrzeiligen Umgebungswert; laden Sie weder den privaten Signaturschlüssel noch die Token-Datei hoch.
+
+
+
+## Den öffentlichen Endpunkt verifizieren
+
+Setzen Sie `MCP_URL` auf `https://YOUR_SERVICE_HOSTNAME/mcp`, halten Sie ein gültiges Token in der Client-Umgebung vor und führen Sie `node client.mjs` aus. Verifizieren Sie alle drei Ergebnisse:
+
+1. `/health` gibt `200` über HTTPS zurück.
+2. `/mcp` weist einen Client ohne gültiges Token zurück.
+3. Der authentifizierte Client listet Tools auf und ruft `add` auf und gibt dabei `5` zurück.
+
+Ein gesunder Prozess allein beweist nicht, dass der MCP-Handshake oder die gestreamte Antwort über den öffentlichen Proxy funktioniert.
+
+
+
+## Fehlerbehebung
+
+| Ergebnis | Prüfen |
+|---|---|
+| Prozess beendet sich beim Start | `MCP_PUBLIC_KEY` muss den öffentlichen PEM-Schlüssel enthalten; `MCP_ALLOWED_HOSTS` muss den Hostnamen des Service enthalten. |
+| `401` | Das Token muss RS256 verwenden, mit Issuer und Audience `mcp-example` übereinstimmen und darf nicht abgelaufen sein. |
+| `403` | Der Hostname der Anfrage muss mit `MCP_ALLOWED_HOSTS` übereinstimmen. Browser-Origin-Anfragen sind in diesem Beispiel nicht aktiviert. |
+| `405` mit einem gültigen Token | Dieser zustandslose MCP-Endpunkt akzeptiert Protokollanfragen per POST. Verwenden Sie einen MCP-Client. Ein Browser-GET ohne Token gibt zuerst `401` zurück. |
+| Lokaler Test erfolgreich, aber Remote-Aufruf schlägt fehl | Prüfen Sie Port, HTTPS, Response-Streaming und Proxy-Timeouts. |
+
+
+
+## Grenzen und Kosten
+
+Dieses Beispiel hält weder Benutzersitzungen noch dauerhafte Dateien im Serverspeicher vor. Fügen Sie für dauerhaften Anwendungszustand eine Datenbank hinzu und prüfen Sie den Zugriff pro Benutzer, bevor Sie private Tools bereitstellen. Für Clients, die OAuth-Discovery oder interaktiven Login benötigen, fügen Sie einen unterstützten OAuth-Anbieter hinzu, statt dieses Test-Token zu verteilen.
+
+Ein HTTP-Prozess kann zwischen Aufrufen aktiv bleiben. Prüfen Sie [pricing](https://lizard.build/pricing), [limits](/platform/limits) und die gemessene CPU-/Speicherauslastung; eine leere Anfragewarteschlange bedeutet nicht, dass keine Kosten anfallen.
+
+
+
+## Nächste Schritte
+
+- [Umgebungsreferenzen](/variables/references)
+- [Deployment-Wiederherstellung](/concepts/deployments)
+- [MCP TypeScript SDK-Serverleitfaden](https://ts.sdk.modelcontextprotocol.io/server)
+
+Unter [Szenariotestergebnisse](/guides/validation) finden Sie geprüfte Versionen, Cloud-Ergebnisse und verbleibende Einschränkungen.
diff --git a/_locales/de/guides/flowise.mdx b/_locales/de/guides/flowise.mdx
new file mode 100644
index 0000000..9f5012f
--- /dev/null
+++ b/_locales/de/guides/flowise.mdx
@@ -0,0 +1,165 @@
+---
+description: "Stelle Flowise mit PostgreSQL bereit, bewahre seinen Verschlüsselungsschlüssel für Anmeldedaten auf und prüfe gespeicherte Flows nach Neustarts und Upgrades."
+---
+
+
+
+# Flowise mit PostgreSQL ausführen
+
+Diese Anleitung richtet einen Flowise-Service auf Lizard ein, mit PostgreSQL für Flows, Konten und verschlüsselte Anmeldedaten. Sie baut eine feste npm-Version und setzt den Verschlüsselungsschlüssel als Service-Secret.
+
+Das grundlegende Setup deckt Flows ab, die APIs verwenden. Hochgeladene Dateien und lokale Vektor-Stores benötigen separaten persistenten Speicher; siehe [Dateispeicher](#file-storage), bevor du diese Funktionen verwendest.
+
+
+
+## Voraussetzungen
+
+- Ein Lizard-Konto mit Zugriff auf App-Hosting und Managed Postgres.
+- Node.js, npm und OpenSSL auf deinem Computer.
+- Genügend Arbeitsspeicher für deine Flowise-Workload; der Test-Service verwendet 4 GiB.
+
+Installiere Lizard CLI und schließe die Browser-Anmeldung ab:
+
+```bash
+npm install -g @lizard-build/cli
+lizard login
+```
+
+
+
+## Das Projekt erstellen
+
+```bash
+mkdir flowise-on-lizard
+cd flowise-on-lizard
+lizard init --name flowise-on-lizard
+lizard add postgres --name flowise-db
+lizard add --service flowise
+```
+
+Verwende `--workspace ` mit `lizard init`, wenn du einen Workspace auswählen musst. Warte, bis die Datenbank läuft.
+
+
+
+## Eine feste Flowise-Version bauen
+
+Erstelle `Dockerfile` mit dem folgenden Inhalt. Dies folgt dem Flowise-Docker-Build und fixiert das npm-Paket auf `3.1.4`:
+
+```dockerfile
+FROM node:24-alpine AS build
+RUN apk add --no-cache git python3 py3-pip py3-setuptools make g++ build-base cairo-dev pango-dev
+ENV PUPPETEER_SKIP_DOWNLOAD=true
+RUN npm install -g flowise@3.1.4 --legacy-peer-deps
+
+FROM node:24-alpine
+RUN apk add --no-cache chromium git python3 py3-pip py3-setuptools make g++ build-base cairo-dev pango-dev curl
+ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser
+COPY --from=build /usr/local/lib/node_modules /usr/local/lib/node_modules
+COPY --from=build /usr/local/bin /usr/local/bin
+RUN chown -R node:node /usr/local/lib/node_modules /usr/local/bin
+USER node
+EXPOSE 3000
+ENTRYPOINT ["flowise", "start"]
+```
+
+`--legacy-peer-deps` verhindert die Installation optionaler Peer-Integrationen, einschließlich einer alten nativen SQLite-Abhängigkeit. Dieses Rezept ist auf PostgreSQL und API-basierte Flows ausgelegt; installiere und teste zusätzliche Abhängigkeiten für Nodes, die sie benötigen, separat.
+
+Wähle die Dockerfile explizit aus:
+
+```bash
+lizard service set flowise --set dockerfilePath=Dockerfile
+```
+
+
+
+## PostgreSQL und Verschlüsselung konfigurieren
+
+Verweise beim Flowise-Service auf die Datenbankvariablen:
+
+```bash
+lizard secrets set \
+ DATABASE_TYPE=postgres \
+ DATABASE_HOST='${{flowise-db.PGHOST}}' \
+ DATABASE_PORT='${{flowise-db.PGPORT}}' \
+ DATABASE_USER='${{flowise-db.PGUSER}}' \
+ DATABASE_PASSWORD='${{flowise-db.PGPASSWORD}}' \
+ DATABASE_NAME='${{flowise-db.PGDATABASE}}' \
+ --service flowise
+```
+
+Behalte die einfachen Anführungszeichen bei, damit deine Shell die Referenzen nicht expandiert. Lizard löst sie auf, wenn der Service startet.
+
+Erzeuge die folgenden Secrets einmal während der Einrichtung:
+
+```bash
+lizard secrets set \
+ FLOWISE_SECRETKEY_OVERWRITE="$(openssl rand -hex 32)" \
+ JWT_AUTH_TOKEN_SECRET="$(openssl rand -hex 32)" \
+ JWT_REFRESH_TOKEN_SECRET="$(openssl rand -hex 32)" \
+ EXPRESS_SESSION_SECRET="$(openssl rand -hex 32)" \
+ TOKEN_HASH_SECRET="$(openssl rand -hex 32)" \
+ SECURE_COOKIES=true \
+ --service flowise
+```
+
+Bewahre diese Werte sicher auf. Insbesondere `FLOWISE_SECRETKEY_OVERWRITE` muss erhalten bleiben: Flowise benötigt denselben Schlüssel, um bereits in PostgreSQL gespeicherte Anmeldedaten zu entschlüsseln. Erzeuge die Secrets beim Neustart, Redeploy oder Upgrade nicht neu.
+
+
+
+## Bereitstellen und dein Konto erstellen
+
+```bash
+lizard up --service flowise --port 3000
+```
+
+Der erste Build installiert Flowise und seine Abhängigkeiten, daher kann er mehrere Minuten dauern. Öffne die von der Bereitstellung zurückgegebene HTTPS-URL und erstelle das erste Eigentümerkonto, bevor du die URL weitergibst. Melde dich im Editor an.
+
+Setze die öffentliche URL für Links, die Flowise erzeugt, und ersetze dabei das Beispiel durch deine tatsächliche HTTPS-URL:
+
+```bash
+lizard secrets set APP_URL=https://YOUR-SERVICE.onlizard.com --service flowise
+```
+
+Diese Änderung startet den Service neu. Konfiguriere SMTP separat, wenn du E-Mails zum Zurücksetzen von Passwörtern oder Einladungen benötigst.
+
+
+
+## Persistenz prüfen
+
+Erstelle und speichere einen Flow. Füge eine Test-Anmeldedatenkonfiguration hinzu und starte dann Flowise neu:
+
+```bash
+lizard restart --service flowise
+```
+
+Warte, bis der Service läuft, melde dich erneut an und prüfe, dass der Flow und die Anmeldedaten erhalten bleiben. Führe einen Flow aus, der die Anmeldedaten verwendet, um zu bestätigen, dass Flowise sie weiterhin entschlüsseln kann. Wiederhole die Prüfung nach einem Redeploy:
+
+```bash
+lizard redeploy --service flowise
+```
+
+Erstelle Backups sowohl von PostgreSQL als auch vom Verschlüsselungsschlüssel. Ein Datenbank-Backup ohne den Schlüssel kann gespeicherte Anmeldedaten nicht wiederherstellen.
+
+
+
+## Dateispeicher
+
+PostgreSQL speichert nicht jede Datei, die Flowise schreibt. Dieses Setup bindet kein persistentes Dateivolume ein, daher können lokale Uploads, lokale Vektor-Datenbanken und Datei-Logs verschwinden, wenn der Container ersetzt wird.
+
+Bevor du Uploads oder Dokument-Workflows verwendest, konfiguriere einen privaten S3-Bucket mit den [Speichervariablen](https://docs.flowiseai.com/configuration/environment-variables) von Flowise. Setze `STORAGE_TYPE=s3`, `S3_STORAGE_BUCKET_NAME`, `S3_STORAGE_ACCESS_KEY_ID`, `S3_STORAGE_SECRET_ACCESS_KEY` und `S3_STORAGE_REGION`. Für einen S3-kompatiblen Anbieter setze außerdem `S3_ENDPOINT_URL` und `S3_FORCE_PATH_STYLE=true`.
+
+Lizard's Managed Object Storage erstellt einen öffentlich lesbaren `default`-Bucket. Lege keine privaten Flowise-Dokumente in diesem Bucket ab, ohne zuvor dessen Zugriffseinstellung zu ändern. Das PostgreSQL-Setup oben richtet weder Dateispeicher, lokale Vektor-Stores noch Queue-Worker ein oder testet sie.
+
+
+
+## Fehlerbehebung und Updates
+
+```bash
+lizard events --service flowise
+lizard logs --build --service flowise
+lizard logs --service flowise
+```
+
+Wenn ein erster Bereitstellen ein Timeout erreicht, während das Image noch geladen wird, prüfe `lizard events`. Sobald der Container gestartet wurde, versuche `lizard up --service flowise --port 3000` erneut. Ein Service ohne zuvor erfolgreichen Build kann `lizard redeploy` noch nicht verwenden.
+
+Für Updates sichere die Datenbank, lies die Release-Hinweise von Flowise, ändere die npm-Version in der Dockerfile und lade sie dann erneut mit `lizard up` hoch. Prüfe die neue Version und führe die Persistenzprüfungen durch, bevor du dich auf das Update verlässt.
diff --git a/_locales/de/guides/index.mdx b/_locales/de/guides/index.mdx
new file mode 100644
index 0000000..033d9d4
--- /dev/null
+++ b/_locales/de/guides/index.mdx
@@ -0,0 +1,25 @@
+---
+description: "Anleitungen für Bereitstellungen aus Coding-Agents, das Hosten entfernter MCP-Server, das Ausführen von Telegram-Workern und das Beibehalten von Sandbox-Dateien."
+---
+
+
+
+# Anleitungen
+
+Wähle die Workload aus, die du ausführen möchtest. Jede Anleitung erklärt Einrichtung, Prüfungen und Einschränkungen; verwende die Befehlsreferenz, wenn du die genaue Syntax einer Option brauchst.
+
+| Aufgabe | Anleitung |
+|---|---|
+| Eine von Claude Code, Codex oder Cursor geschriebene App deployen | [Aus einem Coding-Agent deployen](/guides/deploy-from-coding-agent) |
+| Einem MCP-Client einen entfernten HTTPS-Endpunkt bereitstellen | [Einen entfernten MCP-Server hosten](/guides/deploy-mcp-server) |
+| Einen Telegram-Long-Polling-Prozess dauerhaft ausführen | [Einen Telegram-Bot ausführen](/guides/telegram-bot) |
+| Warteschlangen-Jobs ohne HTTP-Listener verarbeiten | [Hintergrund-Worker](/deploy/workers) |
+| Code in einem separaten Linux-Gast ausführen | [Sandboxes-Schnellstart](/sandboxes/quickstart) |
+| Website-Analytics mit PostgreSQL erfassen | [Umami ausführen](/guides/umami) |
+| Flowise-Flows und verschlüsselte Zugangsdaten in PostgreSQL beibehalten | [Flowise ausführen](/guides/flowise) |
+| Dateien in einer späteren Sandbox wiederverwenden | [Persistent Volumes](/sandboxes/volumes) |
+
+Prüfe [Limits](/platform/limits), [Speicherung und Wiederherstellung](/platform/storage-and-recovery) und [bekannte Probleme](/platform/known-issues), wenn du eine Ressource auswählst.
+
+Lies die [Ergebnisse der Szenariotests](/guides/validation) für getestete Versionen, Cloud-Prüfungen und verbleibende Lücken.
+
diff --git a/_locales/de/guides/telegram-bot.mdx b/_locales/de/guides/telegram-bot.mdx
new file mode 100644
index 0000000..c493cb6
--- /dev/null
+++ b/_locales/de/guides/telegram-bot.mdx
@@ -0,0 +1,101 @@
+---
+description: "Führe einen Telegram Long-Polling-Bot als Lizard Worker aus. Konfiguriere sein Token, deaktiviere HTTP-Routing, behalte eine Replik und prüfe Nachrichten sowie Wiederholungen."
+---
+
+
+
+# Einen Telegram-Bot ausführen
+
+Ein Long-Polling-Bot ist ein Hintergrund-Worker: Er fragt Telegram nach Updates und benötigt keinen öffentlichen HTTP-Endpunkt. Führe ihn mit `containerPort=0` und einer Replik pro Bot-Token aus.
+
+**Teststatus:** Sieben lokale Tests mit nachgebildeten Telegram-Antworten bestehen. Wir haben diese Anleitung nicht mit einem echten Bot in der Cloud geprüft. Verwende einen separaten Test-Bot und führe die unten stehenden Prüfungen für Nachrichten und Neustarts vollständig durch, bevor du dich darauf verlässt. Siehe [Ergebnisse der Szenario-Tests](/guides/validation).
+
+
+
+## Bevor du beginnst
+
+Erstelle einen Bot mit BotFather und halte sein Token geheim. Du benötigst Python 3.13, Lizard CLI und ein Projekt, das du deployen kannst. Ein Bot mit Long Polling darf keinen aktiven Webhook haben; prüfe seine aktuelle Konfiguration, bevor du änderst, wie er Updates empfängt.
+
+Die [Beispieldateien](https://github.com/lizard-build/docs/tree/23635ba7e162bafce75d3f6206553b3ef2c0c48e/_examples/telegram-worker) enthalten `worker.py`, ein Dockerfile und lokale Unit-Tests. Die Tests rufen Telegram nicht auf. Der Echo-Handler speichert seinen Offset im Arbeitsspeicher; er ist kein Verarbeitungssystem mit Exactly-once-Garantie.
+
+
+
+## Lokal prüfen
+
+Aus dem Beispielverzeichnis:
+
+```bash
+python3 -m unittest -v
+```
+
+Die Prüfungen decken Textantworten, ignorierte Updates, leere Polls und fehlgeschlagene Sendevorgänge ab. Führe den Bot lokal mit nur gesetztem `TELEGRAM_BOT_TOKEN` nur dann aus, wenn du Antworten senden willst. Beende diesen lokalen Prozess, bevor du den gehosteten Worker startest.
+
+
+
+## Als Worker deployen
+
+```bash
+lizard init --name telegram-bot
+lizard add --service bot
+```
+
+Melde dich mit `lizard login` an, falls ein Befehl meldet, dass eine Authentifizierung erforderlich ist. Setze `TELEGRAM_BOT_TOKEN` vor dem Deployment auf dem **Bot-Service**. Du kannst den Variablen-Editor im Dashboard verwenden oder den Wert in eine lokale Datei `.env` schreiben und importieren:
+
+```bash
+lizard secrets import --service bot < .env
+lizard run --service bot -- python3 check_bot.py
+lizard up --service bot --port 0
+```
+
+Die Vorabprüfung prüft das Token mit `getMe` und lehnt einen Bot mit aktivem Webhook ab. Sie entfernt oder ändert diesen Webhook nicht. Ein zweiter Polling-Prozess kann weiterhin zu Konflikten führen: Beende jede lokale Kopie vor dem Deployment.
+
+Das Beispiel schließt `.env*` von Uploads aus. Halte das Token aus Quelldateien und Screenshots heraus. Unter macOS mit Lizard CLI 0.3.92 stelle dem Upload-Befehl `COPYFILE_DISABLE=1` voran. Lies das letzte Deployment-Ereignis und die Logs, auch wenn der Befehl erfolgreich beendet wird.
+
+Für einen bestehenden Service setze den Worker-Modus ausdrücklich:
+
+```bash
+lizard service set bot --set containerPort=0
+```
+
+Nachdem du den Worker-Modus bei einem laufenden Service geändert hast, übernimm die Änderung mit `lizard redeploy --service bot`. Prüfe die Deployment-Ereignisse, bevor du einen weiteren Build anforderst. Der Worker-Modus überspringt HTTP-Port-Prüfungen und die Route des Load-Balancers; füge keinen Dummy-Webserver hinzu, nur damit dieser Prozess wie eine HTTP-App aussieht.
+
+
+
+## Ergebnis prüfen
+
+```bash
+lizard ps --json
+lizard logs --service bot --json
+lizard events --json
+```
+
+Im Log sollte `Telegram worker started` erscheinen. Sende eine Nachricht an deinen Bot und prüfe, dass genau eine Echo-Antwort zurückkommt. Stoppe und starte dann den Worker in einem freigegebenen Testfenster neu und bestätige, dass er sich wieder verbindet. Ein Worker, der als laufend markiert ist, benötigt trotzdem diese Prüfung auf Anwendungsebene.
+
+
+
+## Häufige Fehler
+
+| Symptom | Prüfen |
+|---|---|
+| Prozess beendet sich sofort | Setze `TELEGRAM_BOT_TOKEN` auf dem Service, der ihn verwendet. |
+| HTTP-Health-Check wird nie erfolgreich | Der Worker-Modus muss `containerPort=0` verwenden. |
+| Updates stoppen oder es erscheinen Konfliktfehler | Nur ein Polling-Prozess sollte dieses Token verwenden; prüfe auf einen lokalen Prozess, eine weitere Replik oder einen aktiven Webhook. |
+| Wiederholte Antworten nach einem Fehler | Die Demo speichert Offsets nicht dauerhaft und dedupliziert Update-IDs nicht. Füge dauerhafte Idempotenz hinzu, bevor du irreversible Aktionen verarbeitest. |
+| Häufige Wiederholungen | Prüfe Netzwerkzugriff, Gültigkeit des Tokens, Telegram-Limits und deinen Handler. Gib keine Request-URLs aus: Sie enthalten das Token. |
+
+
+
+## Zustand und Kosten
+
+Für einen dauerhaften Bot-Zustand verbinde [Managed Postgres](/addons/postgres). Speichere verarbeitete Update-IDs und gestalte Handler so, dass Wiederholungen sicher sind. Long Polling kann den Worker auch zwischen Nachrichten aktiv halten; plane das Budget anhand von [pricing](https://lizard.build/pricing) und der beobachteten Ressourcennutzung, nicht allein anhand der Nachrichtenanzahl.
+
+
+
+## Verwandte Anleitungen
+
+- [Hintergrund-Worker](/deploy/workers)
+- [Logs](/observability/logs)
+- [Limits](/platform/limits)
+- [Telegram getUpdates-Referenz](https://core.telegram.org/bots/api#getupdates)
+
+Siehe [Ergebnisse der Szenario-Tests](/guides/validation) für geprüfte Versionen, Cloud-Ergebnisse und verbleibende Einschränkungen.
diff --git a/_locales/de/guides/umami.mdx b/_locales/de/guides/umami.mdx
new file mode 100644
index 0000000..6b9d5a6
--- /dev/null
+++ b/_locales/de/guides/umami.mdx
@@ -0,0 +1,122 @@
+---
+description: "Stelle Umami mit Managed Postgres bereit, setze die Verschlüsselungsgeheimnisse und prüfe die Analytics nach einem Neustart und einer erneuten Bereitstellung."
+---
+
+
+
+# Umami ausführen
+
+Diese Anleitung verwendet das offizielle Umami-Docker-Image auf Lizard mit einer separaten PostgreSQL-Datenbank. Sie nutzt Lizard CLI, um ein kleines lokales Dockerfile bereitzustellen und Umami über HTTPS zu veröffentlichen.
+
+
+
+## Voraussetzungen
+
+- Ein Lizard-Konto mit Zugriff auf App-Hosting und Managed Postgres.
+- Node.js und npm auf deinem Computer sowie OpenSSL zum Erzeugen von Geheimnissen.
+
+Installiere Lizard CLI und melde dich an:
+
+```bash
+npm install -g @lizard-build/cli
+lizard login
+```
+
+Schließe die Anmeldung in deinem Browser ab, bevor du fortfährst. Die folgenden Befehle wurden mit Lizard CLI 0.3.95 und Umami 3.3.1 getestet.
+
+
+
+## Projekt und Datenbank erstellen
+
+Verwende für diese Bereitstellung ein neues Verzeichnis:
+
+```bash
+mkdir umami-on-lizard
+cd umami-on-lizard
+lizard init --name umami-on-lizard
+lizard add postgres --name umami-db
+lizard add --service umami
+```
+
+Wenn du zu mehr als einem Workspace gehörst, übergib `--workspace ` an `lizard init`, um einen auszuwählen. Warte, bis die Datenbank `running` erreicht, bevor du Umami bereitstellst.
+
+
+
+## Image und Geheimnisse festlegen
+
+Erstelle eine Datei mit dem Namen `Dockerfile`:
+
+```dockerfile
+FROM ghcr.io/umami-software/umami:3.3.1
+EXPOSE 3000
+```
+
+Weise Lizard an, diese Datei unverändert zu verwenden:
+
+```bash
+lizard service set umami --set dockerfilePath=Dockerfile
+```
+
+Verbinde die Datenbank und erzeuge zwei separate Geheimnisse:
+
+```bash
+lizard secrets set \
+ DATABASE_URL='${{umami-db.DATABASE_URL}}' \
+ APP_SECRET="$(openssl rand -hex 32)" \
+ TWO_FACTOR_ENCRYPTION_KEY="$(openssl rand -hex 32)" \
+ --service umami
+```
+
+Behalte die einfachen Anführungszeichen um die Datenbankreferenz bei: Lizard löst sie beim Start des Dienstes auf. Die Werte gehören zu diesem Dienst, daher erhalten andere Apps im Projekt sie nicht.
+
+Speichere beide erzeugten Geheimnisse in deinem Passwort-Manager. Setze sie einmal bei der Einrichtung; erzeuge sie nicht neu, wenn du neu startest oder ein Upgrade durchführst. `TWO_FACTOR_ENCRYPTION_KEY` ist für die Zwei-Faktor-Authentifizierung erforderlich.
+
+
+
+## Bereitstellen und anmelden
+
+Führe im Verzeichnis mit dem Dockerfile Folgendes aus:
+
+```bash
+lizard up --service umami --port 3000
+```
+
+Das Umami-Image führt beim Start die Einrichtung der Datenbank und die Migrationen aus. Für dieses Image ist kein separater Migrationsbefehl nötig.
+
+Öffne die von der Bereitstellung zurückgegebene HTTPS-URL. Melde dich bei einer neuen Umami-3.3.1-Datenbank mit dem Benutzernamen `admin` und dem Passwort `umami` an und ändere dann sofort das Passwort in deinem Profil, bevor du die URL weitergibst. Füge eine Website hinzu und installiere ihr Tracking-Skript auf einer Seite, die du kontrollierst.
+
+Wenn die Bereitstellung fehlschlägt, prüfe ihren Status und die Logs:
+
+```bash
+lizard events --service umami
+lizard logs --build --service umami
+lizard logs --service umami
+```
+
+Wenn der erste Start wegen Zeitüberschreitung fehlschlägt, prüfe `lizard events` auf die Bereitschaft des Containers. Sobald der Container gestartet ist, wiederhole den Upload mit `lizard up --service umami --port 3000`.
+
+
+
+## Datenpersistenz prüfen
+
+Besuche die getrackte Seite und bestätige, dass Umami einen Seitenaufruf erfasst. Starte die Anwendung neu:
+
+```bash
+lizard restart --service umami
+```
+
+Warte, bis der Dienst wieder läuft. Bestätige, dass dein neues Passwort funktioniert und dass die Website und der Seitenaufruf erhalten bleiben. Wiederhole die Prüfung dann nach einer erneuten Bereitstellung:
+
+```bash
+lizard redeploy --service umami
+```
+
+Umami speichert Konten, Website-Einstellungen und Analytics in PostgreSQL. Die Anwendung benötigt für diese Datensätze kein Dateivolume. Behalte die Datenbank und die Verschlüsselungsgeheimnisse bei, wenn du die App ersetzt oder aktualisierst. Eine Neustartprüfung ersetzt keinen getesteten Plan für Datenbank-Backup und -Wiederherstellung.
+
+
+
+## Umami aktualisieren
+
+Erstelle vor dem Upgrade ein Backup von PostgreSQL und lies die Release Hinweise. Ändere das Image-Tag im lokalen Dockerfile und führe dann `lizard up --service umami --port 3000` erneut aus. Bei diesem Upload-basierten Setup erstellt `lizard redeploy` die zuletzt hochgeladenen Dateien neu; lokale Änderungen werden nicht hochgeladen.
+
+Siehe [PostgreSQL-Anleitung von Lizard](https://lizard.build/docs/addons/postgres/) für den Datenbankzugriff und [Speicher und Wiederherstellung](https://lizard.build/docs/platform/storage-and-recovery/) für die Backup-Planung.
diff --git a/_locales/de/guides/validation.mdx b/_locales/de/guides/validation.mdx
new file mode 100644
index 0000000..5733c0f
--- /dev/null
+++ b/_locales/de/guides/validation.mdx
@@ -0,0 +1,39 @@
+---
+description: "Prüft die Anleitungen für MCP, Coding-Agent, Redis-Worker und Telegram: Cloud-Ergebnisse, Neustartverhalten, getestete Versionen und verbleibende Einschränkungen."
+---
+
+
+
+# Testergebnisse der Szenario-Anleitungen
+
+Am 2026-09-07 haben wir diese Anleitungen in einem separaten Testprojekt mit Lizard CLI 0.3.92 geprüft. Anwendungsprüfungen sind vom Build-Status getrennt. Die Tests verwendeten die Befehle aus den Anleitungen, mit einem eigenen Projektnamen und dem Dokumentations-Test-Branch für das GitHub-Beispiel.
+
+| Anleitung | Ergebnis | Prüfungen |
+|---|---|---|
+| [Remote MCP](/guides/deploy-mcp-server) | Lokal und in der Cloud bestanden | Health 200; fehlendes und ungültiges Token 401; authentifiziertes GET 405; abgelehnter Origin 403; initialize, tools/list und tools/call; Ergebnis `5` über öffentliches HTTPS |
+| [Coding-Agent: Upload](/guides/deploy-from-coding-agent) | Bestanden | `lizard up`, Health 200, datenbankgestützte Antwort 200, unbekannte Route 404; eine aktualisierte Postgres-Zeile blieb nach einem Service-Neustart erhalten |
+| [Coding-Agent: GitHub](/guides/deploy-from-coding-agent) | Bestanden | Repository mit `--no-deploy` verknüpft; Branch, Stammverzeichnis und Umgebung vor `redeploy` konfiguriert; die öffentliche App las dieselbe vorhandene Postgres-Zeile |
+| [Redis worker](/deploy/workers) | Bestanden | Port 0; enqueue und Ergebnis; Ergebnis nach Neustart beibehalten; neuer Job nach Neustart; ein nicht abgeschlossener Verarbeitungseintrag wurde beim Start wiederhergestellt |
+| [Telegram bot](/guides/telegram-bot) | Nur lokale Tests | Sieben gemockte Tests decken Updates, fehlgeschlagene Sends, Token-Prüfungen und Webhook-Ablehnung ab. Ein echter Token-, Chat- und Cloud-Echo-Test ist weiterhin erforderlich |
+
+
+
+## Versionen
+
+Der MCP-Container lief mit Node.js 22.23.2 und MCP TypeScript SDK 1.30.0. Das coding-agent-Beispiel verwendet `pg` 8.16.3 und war mit Managed Postgres verbunden, auf dem PostgreSQL 18.4 lief. Der Worker-Container lief mit Python 3.13.15 und redis-py 6.4.0. Lockfiles für Abhängigkeiten oder exakte Requirements liegen bei den Beispielen.
+
+
+
+## Umfang
+
+Die MCP-Prüfung deckt den zustandslosen HTTP-Transport des Beispiels und ein festes Bearer-Token ab. Sie stellt keine OAuth-Kompatibilität, Browser-Unterstützung, Streaming über lange Zeiträume oder Lastkapazität fest. Das Token läuft nach einer Stunde ab.
+
+Die GitHub-Prüfung verwendete den Dokumentations-Branch und das Verzeichnis `_examples/agent-app`. Sie testete ein explizites Redeploy; nicht getestet wurden jede Berechtigungskonfiguration für private Repositories oder jedes Webhook-Ereignis.
+
+Die Redis-Wiederherstellungsprüfung legte vor dem Neustart eines einzelnen Consumers einen nicht abgeschlossenen Verarbeitungseintrag an. Nicht getestet wurden Redis-Ausfall, mehrere Worker oder genau-einmalige externe Effekte. Die Datenbankprüfung belegt Persistenz über einen Anwendungsneustart hinweg, nicht Backup oder Disaster Recovery.
+
+Die Laufzeit-Log-Tails waren für die Test-Services anfangs leer. Ein Live-Log-Stream des Workers lieferte später einen neu verarbeiteten Job. Verwende die HTTP-, MCP-Client- und Job-Ergebnis-Prüfungen als Abschlusskriterien; ein leerer Log-Tail allein belegt weder Erfolg noch Misserfolg.
+
+Das Telegram-Beispiel ist nicht als cloud-verifiziert markiert. Sein Preflight liest `getMe` und `getWebhookInfo`, ohne den Webhook des Bots zu ändern. Verwende einen separaten Test-Bot, bevor du seine Polling-Schleife aktivierst.
+
+Siehe [Framework-Testergebnisse](/framework-guides/validation) für den separaten Framework-Batch mit 16 Rezepten und [known issues](/platform/known-issues) für CLI-Archiv- und Exit-Code-Einschränkungen bei fehlgeschlagenen Builds.
diff --git a/_locales/de/index.mdx b/_locales/de/index.mdx
new file mode 100644
index 0000000..4120d7c
--- /dev/null
+++ b/_locales/de/index.mdx
@@ -0,0 +1,57 @@
+---
+description: "Stellen Sie eine App bereit, führen Sie einen Worker aus, verbinden Sie Managed Postgres oder führen Sie Code in Sandboxes aus. Wählen Sie eine Aufgabe, folgen Sie einer Anleitung und prüfen Sie die Limits."
+---
+
+
+
+# Lizard-Dokumentation
+
+Lizard erstellt und betreibt Anwendungen aus einem GitHub-Repository oder einem lokalen Ordner. Verwenden Sie Lizard CLI oder das Dashboard, um einen Webservice bereitzustellen, einen Hintergrund-Worker auszuführen, Managed Postgres oder Managed Redis zu verbinden und Logs zu prüfen. Verwenden Sie Lizard SDK, um Sandboxes für die Codeausführung zu erstellen.
+
+
+
+## Aufgabe auswählen
+
+| Ich möchte… | Hier starten |
+|---|---|
+| Meine erste App bereitstellen | [App-Schnellstart](/getting-started) |
+| Next.js, React, Vue oder eine Python-App bereitstellen | [Framework-Anleitungen](/framework-guides) |
+| Über Claude Code oder einen anderen Coding-Agenten bereitstellen | [Anleitung für Coding-Agenten](/guides/deploy-from-coding-agent) |
+| Einen Remote-MCP-Server hosten | [Remote-MCP-Anleitung](/guides/deploy-mcp-server) |
+| Einen Telegram-Bot dauerhaft ausführen | [Telegram-Worker-Anleitung](/guides/telegram-bot) |
+| Eine Datenbank verbinden | [Managed Postgres](/addons/postgres) |
+| Generierten Code in einer separaten Umgebung ausführen | [Sandboxes-Schnellstart](/sandboxes/quickstart) |
+| Dateien nach dem Ende einer Sandbox behalten | [Persistent Volumes](/sandboxes/volumes) |
+
+
+
+## Eine App bereitstellen
+
+Installieren Sie Lizard CLI und melden Sie sich an. Stellen Sie dann ein Repository bereit, auf das Sie zugreifen können:
+
+```bash
+npm install -g @lizard-build/cli
+lizard login
+lizard add -r your-org/your-app
+```
+
+Lizard erstellt das Image auf seinen Servern, daher ist auf diesem Weg kein lokales Docker erforderlich. [lizardpack](/concepts/build-pipeline) erkennt unterstützte Projekte; Projekte mit speziellen Build-Anforderungen können explizite Befehle oder ein Dockerfile verwenden. Prüfen Sie die Build-Logs und verifizieren Sie nach der Bereitstellung die URL der Anwendung.
+
+
+
+## Ihre Ressourcen verstehen
+
+Ein **Workspace** gruppiert Mitglieder und Projekte. Ein **Projekt** gruppiert Services, Datenbanken und Sandboxes. Ein **Service** führt eine Anwendung oder einen Worker aus. Managed Postgres, Managed Redis und Managed Object Storage stellen Datendienste bereit, mit denen sich Anwendungen über Umgebungsreferenzen verbinden.
+
+Für Apps und Sandboxes gelten unterschiedliche Regeln für Laufzeit und Speicher. Lesen Sie [Limits](/platform/limits) und [Speicher und Wiederherstellung](/platform/storage-and-recovery), bevor Sie sich auf Größe, Lebensdauer oder Datenaufbewahrung einer Ressource verlassen.
+
+
+
+## Die passende Detailtiefe finden
+
+- [Anleitungen](/guides) behandeln eine Aufgabe von der Einrichtung bis zur Prüfung des Ergebnisses.
+- [Framework-Anleitungen](/framework-guides) enthalten Build-Befehle, Adapter, Ports und Prüfungen für jeden Stack.
+- [Kernkonzepte](/concepts/architecture) erklären Projekte, Builds und Bereitstellungen.
+- [Lizard CLI-Referenz](/cli) listet Befehle, Flags und Exit-Codes auf.
+- [Fehlerbehebung](/deploy/troubleshooting/service-never-healthy) hilft dabei, einen fehlgeschlagenen Start zu diagnostizieren.
+- [Bekannte Probleme](/platform/known-issues) dokumentiert Limits und Wiederherstellungsfälle, die Sie vor einem Release prüfen sollten.
diff --git a/_locales/de/manifest.json b/_locales/de/manifest.json
new file mode 100644
index 0000000..6011f83
--- /dev/null
+++ b/_locales/de/manifest.json
@@ -0,0 +1,576 @@
+{
+ "locale": "de",
+ "status": "published",
+ "pages": [
+ {
+ "path": "addons/index.mdx",
+ "sourceSha256": "a364ec2783f0102fb3067cc844c4db4e6709b3bc522508dea3ccc67aae830ae0",
+ "translationSha256": "44e7d2421f54460726c6838dfaee65bca7b45bccd88caa4e0d045d73b10893dc",
+ "status": "published"
+ },
+ {
+ "path": "addons/postgres.mdx",
+ "sourceSha256": "78346399743959929c09c87d1d98a7e8274d93c1e21a764df94a02b613ac0d09",
+ "translationSha256": "e291e099a2d6cde1432bc05c6e7e472fb70ae42ff0393627bbb47a5318397ca1",
+ "status": "published"
+ },
+ {
+ "path": "addons/redis.mdx",
+ "sourceSha256": "5c295a88f06837b2c581b62b2a8787dec1f8da73c77cdf1c8a8b051d5fdd9c19",
+ "translationSha256": "baed9fdbf19dba68610f2c1fac0adb4c9ef1185a753d24629b2946d17532675e",
+ "status": "published"
+ },
+ {
+ "path": "addons/storage.mdx",
+ "sourceSha256": "60eb80b5a079fc37daa87d064bbb6824ff8061682f54671567389b41ea9a2e3a",
+ "translationSha256": "4a5875633d24be826505df8c11235136ac20737bed5987de129b76901c9814de",
+ "status": "published"
+ },
+ {
+ "path": "agents.mdx",
+ "sourceSha256": "6d12cad052e608f5685ce8a08051d0b5c9d0f0981c06ddf7aa422479f8a6a20a",
+ "translationSha256": "5906bf6023b4d10c837e69d1477d2fed8785d3e180e0633ab007f781e075c700",
+ "status": "published"
+ },
+ {
+ "path": "cli/add.mdx",
+ "sourceSha256": "da07da89b28ff85a02dd9afd621d75c935a8e47e26c3bb1bebdeb4fae7d935b7",
+ "translationSha256": "a8b806751c657d2f5f308cf215781849a9949317a4991f7795dffe3d8292cfd3",
+ "status": "published"
+ },
+ {
+ "path": "cli/config.mdx",
+ "sourceSha256": "7ff4c3a6d511e1bf7086f6ea11f47af473c9fd6d15865808bdd0548c265bcd56",
+ "translationSha256": "81c7b68d29e3d923c719dc0b287f24d050e18eb1e651fa88e2519c246af871f8",
+ "status": "published"
+ },
+ {
+ "path": "cli/docs.mdx",
+ "sourceSha256": "2f99ebda3a4339d975e1b12c6e8949b4aac33e2b6b4284cfbf5944b274936b83",
+ "translationSha256": "d8cab399cae3bd583bb2a5d8d46dad47d8e10b36cccf5ab2e7112e32aafcf1b8",
+ "status": "published"
+ },
+ {
+ "path": "cli/domain.mdx",
+ "sourceSha256": "9d4d1e70a6b4078de6486abf9f3f8c679b922e117823232d41df0e403918458f",
+ "translationSha256": "672d9288139b7a0b927769dd8fa730e7d32238d10866f44c56855168859dff45",
+ "status": "published"
+ },
+ {
+ "path": "cli/events.mdx",
+ "sourceSha256": "ce890a024e8b37c7566a3f23d74fe867554aacbcf034103a64d48ba910b4aa4d",
+ "translationSha256": "984900f7875e9fe324536d43ca3789bee1c6434d19ff925d8a5d980751036474",
+ "status": "published"
+ },
+ {
+ "path": "cli/git.mdx",
+ "sourceSha256": "d41bde854400c6879516d11f06a0792adad0491f294addcb6a3fbbaca140d2f5",
+ "translationSha256": "b66d21943cc72776f9e253f2d298f0ac4631ba2a51695b03035c9d704aeb2dc5",
+ "status": "published"
+ },
+ {
+ "path": "cli/index.mdx",
+ "sourceSha256": "b9f5bb24b661770d8b5fe2916ea43890af08cafc17f32ccd0e49d2e56a0df422",
+ "translationSha256": "6b8787cd9e340bebb25ec1c603b32f394e2d6a214d95d72ab94b8ab24cc129c2",
+ "status": "published"
+ },
+ {
+ "path": "cli/init.mdx",
+ "sourceSha256": "9ea4e3b5641acc86a3bb0e7013f74cd03df18d64a150858f33cc4220e987cfc7",
+ "translationSha256": "3c335d2fa6718bfcbc1edfd57639d436132dfae0ce2f14775d108a90e13edd0e",
+ "status": "published"
+ },
+ {
+ "path": "cli/json.mdx",
+ "sourceSha256": "0db2f5c74b3d7d55b467f5235d38805f5ba531b3b56b60eeb591722b89634798",
+ "translationSha256": "e3fea8ebdedcb18e348dafcbbd3a05f2c4d43a7a619132709e52a7b4ee2bca03",
+ "status": "published"
+ },
+ {
+ "path": "cli/link.mdx",
+ "sourceSha256": "c830b5269697edcce4a1344de712a26319d60dbb73f9aee71f905da45f301c90",
+ "translationSha256": "f56e990aa851cdf32b4a9117aafaef3c0bd19b5ba49529c9a32ae3069f23238e",
+ "status": "published"
+ },
+ {
+ "path": "cli/login.mdx",
+ "sourceSha256": "732fd0d32942e45da0f61325478ac2853710161f8d8dd9cbd874b192ddd41220",
+ "translationSha256": "9c50cfd0d9cdec16809effcaf1a95cd35719907b34b77932c1036bfd029e60b9",
+ "status": "published"
+ },
+ {
+ "path": "cli/logout.mdx",
+ "sourceSha256": "a8e49ead7c934a4c29d44421349bd46d3f7f1cc81dbde03ef4350d10cbf12e03",
+ "translationSha256": "0d70b27d0bcae0b3821a502486166e8b795d514699511f137cb31fa8018ba299",
+ "status": "published"
+ },
+ {
+ "path": "cli/logs.mdx",
+ "sourceSha256": "deebb5f030fb9b3a36000036f9b8f829fc8319cd0c559ebe0f528f175d5eb384",
+ "translationSha256": "3530dc06f30a2e27e46fe52d5116ca48e6b31c815ab84054ef84b576b8df7124",
+ "status": "published"
+ },
+ {
+ "path": "cli/metrics.mdx",
+ "sourceSha256": "dcfa3c003c126ccbc276d2423d5d8fab30adfb685459c4cf546cc53ed02d3429",
+ "translationSha256": "dff9c866f45dd0c97e552c6890072ee3bbe0619087bde0c983b57e9236adee9f",
+ "status": "published"
+ },
+ {
+ "path": "cli/open.mdx",
+ "sourceSha256": "34659aaba345efeca309eded62ca791414e7f2cac10aa6a66b1fc81a6adcc7cd",
+ "translationSha256": "4f55e44cde8fc478cc22ec3651f836ee24b9113ffdfe778a68c09286f03c9ad6",
+ "status": "published"
+ },
+ {
+ "path": "cli/port.mdx",
+ "sourceSha256": "925f588fe174b968738163a0c064af2090b9d4489dd82a75a5b111d8c002f8e8",
+ "translationSha256": "3d32e49e0a9cdf6db3259f946c1f08689d7c95af78ecd184fae840b1cc860075",
+ "status": "published"
+ },
+ {
+ "path": "cli/project.mdx",
+ "sourceSha256": "3cd89738f9965ece2a6ec8158963cfe3d0f118bf81334dde58792ac858890521",
+ "translationSha256": "d5f3658205f3921cb551be034d0b2f1ad560bfe121850648d4ed1417727c0f2e",
+ "status": "published"
+ },
+ {
+ "path": "cli/ps.mdx",
+ "sourceSha256": "7cae9f4efdd03bd9cc38affa13ce3537d8f6a6cb8ec4a3e12748235a29afb7d1",
+ "translationSha256": "9695e0b71ddf11810686dac3364eea24ca6267423533c9cff91150238a0e7377",
+ "status": "published"
+ },
+ {
+ "path": "cli/redeploy.mdx",
+ "sourceSha256": "69e3567d19d1eee5ecb88848519c871170982cd8bdae0cc832848425c00976f4",
+ "translationSha256": "ed2a27bb2330251ca99ad5bc355d415a30aa89a450e37df1e7fda2e363e1b151",
+ "status": "published"
+ },
+ {
+ "path": "cli/regions.mdx",
+ "sourceSha256": "fb4374ff44f0cb307cda3b11a32d2af140628aecefcc72648c8bd4fac79a0390",
+ "translationSha256": "69037ae1bfb260f31a06e28cef800bbb962144cfd1e1998ed06d86b613ab4ada",
+ "status": "published"
+ },
+ {
+ "path": "cli/restart.mdx",
+ "sourceSha256": "0001cc039c216e29704bc8dd032843f33eeda479e3b936864c55ebb82c19392b",
+ "translationSha256": "77449e3d7a68782edd605763a8a8317de6c87ef8a4fe070473e3551c41fe53de",
+ "status": "published"
+ },
+ {
+ "path": "cli/run.mdx",
+ "sourceSha256": "3edbc8067d4e4223e7f8fabab0d031173b096b641134895988c9693bdc10b5d6",
+ "translationSha256": "a77b92588749a33a0e122660ac623e13ac2a276a5d0895726ed15567444b3414",
+ "status": "published"
+ },
+ {
+ "path": "cli/scale.mdx",
+ "sourceSha256": "d0128acc8893d2b40bc7b663fe48867ed247851cddc52817ef2f1a55a97bef5e",
+ "translationSha256": "9efa037427345bd83de5b338c92f549ebbca51701408ed85eb8f9b8683dcf6a6",
+ "status": "published"
+ },
+ {
+ "path": "cli/secrets.mdx",
+ "sourceSha256": "635491af6079e6a4f8c718f5443f5b19b9b3e8697957a2917a451631eecf3282",
+ "translationSha256": "4a4c5841fbc29eae90e029be02ac53a33b95652169f3f5cde8822df21502dfa3",
+ "status": "published"
+ },
+ {
+ "path": "cli/service.mdx",
+ "sourceSha256": "f4a4dedae24ae7928cc0e8279525f80551f1bb01b209beb97254b5966d8ff038",
+ "translationSha256": "f5e5c174e1d1e894e5bdb58c34da9fce622ca141bd6f84514ec9ef09aa352512",
+ "status": "published"
+ },
+ {
+ "path": "cli/skills.mdx",
+ "sourceSha256": "5ee058f81c64343d5667de9ebd49f1bc975010a25258a74ce92458d638b7731b",
+ "translationSha256": "57ad7fbba1516398626e98007b86776a122490278e34803952e433b746370df0",
+ "status": "published"
+ },
+ {
+ "path": "cli/ssh.mdx",
+ "sourceSha256": "f2c1105cca6be5eff87de0249a23d52dd4b5302065b6a0839ba3106669664e46",
+ "translationSha256": "d2d83e6abbd45812bffb17c1bd080ef566ecff65371ff04cfcb752c874ac8317",
+ "status": "published"
+ },
+ {
+ "path": "cli/status.mdx",
+ "sourceSha256": "d1c2b6873e7679bdb11253c71aa03566f64c9d46f30a9de283ac58b42a47af8a",
+ "translationSha256": "98b3976d21085aec898f9668c96479327f8921e59e641acea94e9e66f929481f",
+ "status": "published"
+ },
+ {
+ "path": "cli/unlink.mdx",
+ "sourceSha256": "e824c1f057db0696eee4b37488cdd43292dbe9d08770112d3e9af9b9ab70a5d6",
+ "translationSha256": "dacb38971292bddc5bcedffdaf69eaf157925ccfc169a8349f1ff6cfd46df536",
+ "status": "published"
+ },
+ {
+ "path": "cli/up.mdx",
+ "sourceSha256": "8d7512c5e26dbf5a0316437f99e1cc93ce0ebdfe7bf69491636ed767eda36695",
+ "translationSha256": "2b590db021ffd8568c210c369daace003b07924877b240049c8f1b7ba627f3fc",
+ "status": "published"
+ },
+ {
+ "path": "cli/upgrade.mdx",
+ "sourceSha256": "1f33d0a46185278e2858d89f7a19e9e57a63d5dd6bd36c66c0f4f348384c8e93",
+ "translationSha256": "01852308b431e0fb70e5db0442d9000b70a33822f0b46091328f5ccae7dae41a",
+ "status": "published"
+ },
+ {
+ "path": "cli/whoami.mdx",
+ "sourceSha256": "053bc71c8bd276882bdd10cd64d42ce8e13e500c01424fcfd8e1fd7083b3467d",
+ "translationSha256": "4acda3b7b9c209c5ca9c802f4125b451bd399cdd8e8289af4026a7f8e95c8909",
+ "status": "published"
+ },
+ {
+ "path": "cli/workspace.mdx",
+ "sourceSha256": "bc138c7663e0b4c8ae76c3b2d55c9f72d83fa08fc19f3475d5e7bc08e7da78d2",
+ "translationSha256": "1dfcc33e715a59f1108b0a1728d9a5d39475bfb79f1eff30e27729cdecb287fd",
+ "status": "published"
+ },
+ {
+ "path": "concepts/architecture.mdx",
+ "sourceSha256": "fa5a5aa8a4f23b1d89be99fd3d8db0a9f19831991f9d5fb55730fd12dd399cff",
+ "translationSha256": "ce3b0a5a263292fc398673dfccd96b984fea7b386a9ad19b9f4cb988042f6ed0",
+ "status": "published"
+ },
+ {
+ "path": "concepts/build-pipeline.mdx",
+ "sourceSha256": "b0ec0991712b3f5ef246a1ec3dea10687a7c592debecec517b6498db2daa4bb3",
+ "translationSha256": "2d1d0d2483e1614c2ba8460a2c77eb613807034d26733b17c2fb4c3ad665be38",
+ "status": "published"
+ },
+ {
+ "path": "concepts/deployments.mdx",
+ "sourceSha256": "0f54a580f17b7c807cadebe8b0d6ef9bfd793e8b16486c51c6cffb40a8eb8bba",
+ "translationSha256": "8f969550ccc71bde4cada0acd60f3e51b1b2573c58b623ef86ce64a94c5ba0a9",
+ "status": "published"
+ },
+ {
+ "path": "concepts/index.mdx",
+ "sourceSha256": "92ffb749631fb660c542e40ff875f7cd8aa4849c9d77d06f4ac286578ee58bc4",
+ "translationSha256": "d46819b930b65a14ab1622849e11f33155c1ba498733c7d84db530f4a4f45746",
+ "status": "published"
+ },
+ {
+ "path": "dashboard.mdx",
+ "sourceSha256": "4fa1240afec8962e3df1c9e564280c83963761f2f64b47502eb8b0d9e9d2ed0c",
+ "translationSha256": "051272d46e3993988d860f25f3e55acae641cf73c6a987b4d7b6298492f4c11f",
+ "status": "published"
+ },
+ {
+ "path": "deploy/github.mdx",
+ "sourceSha256": "697a33210ef14bb34a5074f44847fa69cb7ea169494942fc571e773b200b44c2",
+ "translationSha256": "faf576cf87d3b9119ad8b67f2e2a3eb72c23b5780b3b5deac9d8b85c3c74c759",
+ "status": "published"
+ },
+ {
+ "path": "deploy/index.mdx",
+ "sourceSha256": "39a4a222ec6cbf55b0d98393646ad7690433e651cc81e3954e85a713157c193f",
+ "translationSha256": "67276671b82b8208fabcb934c7b19de3b8c85cca0e7d86b464954fa461cbc06a",
+ "status": "published"
+ },
+ {
+ "path": "deploy/regions.mdx",
+ "sourceSha256": "83fc01f4cafa29b368b5bee232de3db69a7fa0c92fd74a6a16381c327005881e",
+ "translationSha256": "a65ba69b9bcb1eb7595c17a3e8a3738b4115a3ece375312edd5e77d0dcde1c62",
+ "status": "published"
+ },
+ {
+ "path": "deploy/scaling.mdx",
+ "sourceSha256": "563e23a94dc6dd4c634c141f4e953dfc97fcc9a2002cf54ba1030e36e3d83748",
+ "translationSha256": "d8c369845b96c338433c66d18bf3df035eaa02fec955b21a577d6d09fadf6b00",
+ "status": "published"
+ },
+ {
+ "path": "deploy/troubleshooting/double-build.mdx",
+ "sourceSha256": "1d2254daad7f87e1fbe9e869bd6e0a2f7afbb71ef73e9964e2d2be3b7c011884",
+ "translationSha256": "b1b92cea993fc0295b61c3a8a982da388cd925a6302dd17f84e67eb118d3525b",
+ "status": "published"
+ },
+ {
+ "path": "deploy/troubleshooting/incomplete-dockerfile.mdx",
+ "sourceSha256": "6f9a46f14284e8c095ef4450973b21b6841073c0b8a959e233e267ff437cc6e0",
+ "translationSha256": "03cb36eb29607b5e57842e1ab6b209552ae303774ee734e41879e0286186359c",
+ "status": "published"
+ },
+ {
+ "path": "deploy/troubleshooting/service-never-healthy.mdx",
+ "sourceSha256": "9d348e4d46599ed785b0c8d7d906d3672c8ad834114a3d80834467af954e17a8",
+ "translationSha256": "3d00465f4a864d05ee8bdb19c771c2813df387ee04708dc7dd49b11d36937110",
+ "status": "published"
+ },
+ {
+ "path": "deploy/upload.mdx",
+ "sourceSha256": "17fc2068ae350b3a6ab7349e29fc908abb1ca8087260c7ed8e0025ec5a053941",
+ "translationSha256": "32af03ab42a89a652a30a364139f01b0b6bea9d676943ba738ce7a8f8562b759",
+ "status": "published"
+ },
+ {
+ "path": "deploy/workers.mdx",
+ "sourceSha256": "43a2bbbb43fb079d035d5cf785f7e6c0536f84ed941e54bc8382a067df0b6fad",
+ "translationSha256": "7bc28fe5f91e59c68e9d97534e59c5881f7351dffaa200e28fff3049c61aa5c8",
+ "status": "published"
+ },
+ {
+ "path": "framework-guides/astro.mdx",
+ "sourceSha256": "4b89ac3379be48f204f3b932680f0900161e7373ed2436590be3456dd07e6315",
+ "translationSha256": "97ee493c3344864a5c0481bc9ca80c29c362e7fa995ed6f5888954ce82a19038",
+ "status": "published"
+ },
+ {
+ "path": "framework-guides/django.mdx",
+ "sourceSha256": "11422a3685e71d7b95f2055799ca16c9037ebe8a279c1d9c1c891a2dade79440",
+ "translationSha256": "d9f030a05f28ccd9f1d2d9681e30091b2fc7d272897dfa87985b30c8e29f4026",
+ "status": "published"
+ },
+ {
+ "path": "framework-guides/docusaurus.mdx",
+ "sourceSha256": "65a0cbde6b2ba696cfb9cc99b45a0c4f7d7d82b24763d82230ede29eb48fe20f",
+ "translationSha256": "92f2204b2fe8020c76568e210917374a139cdff8ab29717c35c838196e8169cf",
+ "status": "published"
+ },
+ {
+ "path": "framework-guides/fastapi.mdx",
+ "sourceSha256": "9da90747b275c5d3b46aa6827ff7603ec6efb1cc4fffe48836c58d4770f904f8",
+ "translationSha256": "69848a95f263d310c096ec5b34076a40d28afa8f9a13ff096301bc8c1ab83155",
+ "status": "published"
+ },
+ {
+ "path": "framework-guides/hugo.mdx",
+ "sourceSha256": "c552b74cc22994ab2e17d5a0c1eb4afdaf2d00f64960d9581bcf46300f6c202c",
+ "translationSha256": "fab7d71d874e088726167dc8a66cb6cd30651e739d19ef5a6576020bef469314",
+ "status": "published"
+ },
+ {
+ "path": "framework-guides/index.mdx",
+ "sourceSha256": "ca924027746d3390d618495318c3fdde147d705193b3e04d30d71ac779c2a33a",
+ "translationSha256": "f20a5bc159288deadcc0c2ac9253747c08858de16ed16ca08ac22af2e0227c95",
+ "status": "published"
+ },
+ {
+ "path": "framework-guides/nextjs/index.mdx",
+ "sourceSha256": "a30666d082660a9a10e0f8a990b0ac1a476ad16d71c45c3e33d11e8d7f9ed926",
+ "translationSha256": "b1f3222369adac2e56c6b5a8e2a53005ba50270c02d4a8cdf44f4c23b0bdeae8",
+ "status": "published"
+ },
+ {
+ "path": "framework-guides/nextjs/static-export.mdx",
+ "sourceSha256": "344b7b0a3c925f9e5f7df53054d3aa1525dd8e0b2c98c2e86fd990fa8309a795",
+ "translationSha256": "164814d6d707ee8ea473a553afd774e6c7aebd6a9f40e843f53217ada68cebf4",
+ "status": "published"
+ },
+ {
+ "path": "framework-guides/nuxt.mdx",
+ "sourceSha256": "edfe7100de75c167475248a291fbb276ab899e4e9aba4aabb37745720b4180ee",
+ "translationSha256": "60125cfd41e52b883124eebe82698f787303621a492cb72a8ad4e7abdd7b2458",
+ "status": "published"
+ },
+ {
+ "path": "framework-guides/react.mdx",
+ "sourceSha256": "c96a03f9b274d91751231de136d1a37a2554ebcdad8ebffd5b11067c06537c34",
+ "translationSha256": "7201def0c935f3bd57d0b3229493a44c08f7f90f1ce8c59225a30d47cbfb4273",
+ "status": "published"
+ },
+ {
+ "path": "framework-guides/static-routing.mdx",
+ "sourceSha256": "277dbfc3d581d2ba332fe183807134aca7084876648a0aca7cb4b7cf227caf43",
+ "translationSha256": "753f9513ed11482778a88ddb1004ffa02dd3b464f1d2759b6d40586e8c6317e3",
+ "status": "published"
+ },
+ {
+ "path": "framework-guides/sveltekit.mdx",
+ "sourceSha256": "eb98e0ae2bcc536998735b23d6d28ea658fce42e1139c78d3eb4570a54347d52",
+ "translationSha256": "9269750736fe9fbda31a463dd6e9552004ea92669acdd8d224eef35c40669b3a",
+ "status": "published"
+ },
+ {
+ "path": "framework-guides/validation.mdx",
+ "sourceSha256": "068375b554451b4be0aa21b2ea7d53789e61e44cd592947877cce6223240f26f",
+ "translationSha256": "548f92d1c09c6d21a9603797753b5f6476054ed7bab84d95f7bd63e3c9e6ee15",
+ "status": "published"
+ },
+ {
+ "path": "framework-guides/vitepress.mdx",
+ "sourceSha256": "5e3d98d5d3e2dcbb5af644fb500e39389e216efe772eda2933aa291384aebda4",
+ "translationSha256": "0a760bbc03473a8148c386f1d4048bfc92c57b68d7b0449ebe4a4ecab5cdb423",
+ "status": "published"
+ },
+ {
+ "path": "framework-guides/vue.mdx",
+ "sourceSha256": "442bd3f20789c9c6243ed364d8e4c350efebeb33a289334ee5222c9047217098",
+ "translationSha256": "caf96619e51d8a327f2f7284d282ad2bd79db8abe5337aad9bca9cf13be1a7e9",
+ "status": "published"
+ },
+ {
+ "path": "getting-started.mdx",
+ "sourceSha256": "34aa52cecefcc9a9ef34f3eb6586c8cd42de7cad388916e983aabc31c77a1527",
+ "translationSha256": "bdbd31789ca787fc29a2ca1246021bbabae854b0951f4f9c971c82ed819f2049",
+ "status": "published"
+ },
+ {
+ "path": "guides/deploy-from-coding-agent.mdx",
+ "sourceSha256": "446afe16553138fce16e5ee5aba6c52f600eb9d7f3b326f8822eabbec56ea734",
+ "translationSha256": "7cfcd473ada9108c6093a892e91bcae3c5652f0e2b29e3518cc1c247744ed303",
+ "status": "published"
+ },
+ {
+ "path": "guides/deploy-mcp-server.mdx",
+ "sourceSha256": "55f7aea7cf3929bb84cd7ad4b67c1feb52cc707d888ec00fa2a7fe702d417738",
+ "translationSha256": "a30b112dfa9a4ac4d5149ab22b6f87e37e0a686fcd5bc2d463591ee17bb4ceb5",
+ "status": "published"
+ },
+ {
+ "path": "guides/flowise.mdx",
+ "sourceSha256": "fa697aec8657e3ea920d1c88a6095ff442064a0ab3c0a812f10e5e5c5c1ee1b6",
+ "translationSha256": "840fc8158176ff5a359b3ed5568b0aa5cc815fb48c49dd9744845c855afff10c",
+ "status": "published"
+ },
+ {
+ "path": "guides/index.mdx",
+ "sourceSha256": "6492dcbd87273f0bc2148b1b3cf3e787ce4873932c2b270d11685f8984615ac6",
+ "translationSha256": "5e8653a81a66979c5545b5401ae28cf6e4be4e0e2e3c5519391cb6261d036062",
+ "status": "published"
+ },
+ {
+ "path": "guides/telegram-bot.mdx",
+ "sourceSha256": "db7b0a93dbae68b767e93022e99d2684dc7f8881bb4060cc2743c2f95742510a",
+ "translationSha256": "43951db61c741dc66e0f17c5cfbb7c07fdd28359d06822131878a2e570bdf4a5",
+ "status": "published"
+ },
+ {
+ "path": "guides/umami.mdx",
+ "sourceSha256": "60ac58aa3f74b7b22f7a29c2dabb1040983ffb9635ec0364bea5f4eeb9a1a184",
+ "translationSha256": "ea5a10182a872bbc3b9e7dd44944aca6cef5f37f6cbf9a0df0d4497488bb30f9",
+ "status": "published"
+ },
+ {
+ "path": "guides/validation.mdx",
+ "sourceSha256": "f060ee682789b323ce18e0f282ba6bb47a85accc912583a7600e69546dd9aeed",
+ "translationSha256": "b7705358083fade68f66a4bf09c160b77629252e7a7b1b249764e2cad84cd86b",
+ "status": "published"
+ },
+ {
+ "path": "index.mdx",
+ "sourceSha256": "45b40d974470539641750f9473f39a6af74fbf999f39e8fb924c867abcc18370",
+ "translationSha256": "0bc2db151f6161f020d05d19b8a87489b4830ce5b0d4cc77b2c1cbab7fd44b89",
+ "status": "published"
+ },
+ {
+ "path": "networking.mdx",
+ "sourceSha256": "cf23c1a1df8c7e4b7835590d38786dc0574de771374c42dea5c1f5fdfc0079fd",
+ "translationSha256": "b60d55b76e04d1f4312f25680c7abb2cbb34b107dc6b01f6f158874c8eb5ecd3",
+ "status": "published"
+ },
+ {
+ "path": "observability/events.mdx",
+ "sourceSha256": "db2092362e0139e9ef1b6816eafd3f90ecfca59faad01fe1dfe0383057ce6bdb",
+ "translationSha256": "1be06cc7da43e41457a177ac6acbcef17b8f45988a9f4644a916f1bd3153f62d",
+ "status": "published"
+ },
+ {
+ "path": "observability/index.mdx",
+ "sourceSha256": "c99b35a322a98276ae9759c2443b7e1ebb77bb2a07b15391d6eff2d4e0d59fd1",
+ "translationSha256": "63df275d220bb59ba43d767efbbfa8540bec44629ae9680014ebfbde02f3ee5b",
+ "status": "published"
+ },
+ {
+ "path": "observability/logs.mdx",
+ "sourceSha256": "9e1e57fcde78990342ebd7619a1d5762f15dfb35c95142885f8c561bb9e35d40",
+ "translationSha256": "11609dc08f990e6d0180b0d95651acfe21c9495015b3e92e1adc262d8d13597e",
+ "status": "published"
+ },
+ {
+ "path": "observability/metrics.mdx",
+ "sourceSha256": "f95728b789c693cc7de9e37c2e8b07e8e35a8129fa754ac7aa8c296b97a7364a",
+ "translationSha256": "45b9408d44a49c51ac60577c0958a124623d654f1538017b27b13ed4bb5283a2",
+ "status": "published"
+ },
+ {
+ "path": "platform/billing.mdx",
+ "sourceSha256": "a93fe73b92ee9d775f4b3e8182db6b719f6a1e8fa988b9f0a482eb5e24d29c62",
+ "translationSha256": "c806f23e5c5d52c53d0d6e12af9941338cdb3e96bca5a4c63a167e44f905e2dc",
+ "status": "published"
+ },
+ {
+ "path": "platform/known-issues.mdx",
+ "sourceSha256": "d9d69003cc9345a6059440d9f03894ceb437d7173be215e95403ba9b9210aec0",
+ "translationSha256": "f99332df402d17865860a684150dd6ccd29122ba5f3c708eb69caef038c7eadd",
+ "status": "published"
+ },
+ {
+ "path": "platform/limits.mdx",
+ "sourceSha256": "5f2166c38b61c6dc032b4f0e4ac1fc1ae2c8a14db9af49ffd2371a7bf4649214",
+ "translationSha256": "52ddfc087e0474bde6680311895ff9a954a5db46b717b9a31541a6ef803f2581",
+ "status": "published"
+ },
+ {
+ "path": "platform/storage-and-recovery.mdx",
+ "sourceSha256": "30a114b2f76b0d2bbcf67cdd2a07630ef1c3992a526aa8915ca30a63d0ba18d4",
+ "translationSha256": "11029247498dbc0d12e3a92f7f94b2ddc4064d2fcb5db898135834a47b95707d",
+ "status": "published"
+ },
+ {
+ "path": "sandboxes/code-interpreter.mdx",
+ "sourceSha256": "d187221290fdbba78567a330e562a618cdd7d9fff31cc32c74b7ed9c1c67f241",
+ "translationSha256": "d303e7ef51fdd91e3119091031521ab5266a31ea589aa4b244b67fef810f42a7",
+ "status": "published"
+ },
+ {
+ "path": "sandboxes/dashboard.mdx",
+ "sourceSha256": "828415eb0c46fce33f20bc2dae780262eacabf58127a590b1d681d54966db527",
+ "translationSha256": "d9a0a9861df6aa1527d239d986b7aab4b17ab463ce26b9b0c23fc4afa6a76cea",
+ "status": "published"
+ },
+ {
+ "path": "sandboxes/index.mdx",
+ "sourceSha256": "f07dd490dcb4e1b5376d256de65e13d79a37688fb8286b2dd6578e0eb14fdfbb",
+ "translationSha256": "450c89416e702f1fb14110b5fd63237f74131f7c49805f7015aa88c5eaf4b0e1",
+ "status": "published"
+ },
+ {
+ "path": "sandboxes/quickstart.mdx",
+ "sourceSha256": "c58f024fe163b5142bf554232363ffd74fce365d54cebc2f14ae997f9ab210dd",
+ "translationSha256": "542e0c31f41014a74da89bb10af5437df5a392bd60ed5e6ca6753a91a9276bc0",
+ "status": "published"
+ },
+ {
+ "path": "sandboxes/sdk-reference.mdx",
+ "sourceSha256": "2ef3c1a78d607f5daec121d792e10e66b25dc62538da865aaed3cc69a1947bd9",
+ "translationSha256": "a5abd0e91902c3efac68c51b32ed6b4a607a74b119a9655615ba51e0fc473940",
+ "status": "published"
+ },
+ {
+ "path": "sandboxes/volumes.mdx",
+ "sourceSha256": "335158c3113ae1afa8cf0c966ffb5390d4e52b4e21965058318be124b5235438",
+ "translationSha256": "537ac222286e43ad4fc43aabd88e3d3ca5088cd19eb4dfb6863cd8d7e9d1f437",
+ "status": "published"
+ },
+ {
+ "path": "studio/getting-started.mdx",
+ "sourceSha256": "3d6df5a941a22427bf6146f91cf795ceac7439aaf86d8c2d1213dcd3ba8ba2ae",
+ "translationSha256": "08b1f32113f89be4bbe78c16ddc00a2f728ebbeb6460b07f531cc33f49f9c90d",
+ "status": "published"
+ },
+ {
+ "path": "variables/index.mdx",
+ "sourceSha256": "2b605e838fc7dc268894a433dd4dfea5f3aa9b786ee80b334f9ae9edb242400c",
+ "translationSha256": "70e5d8a710919e1c018c11f8e28b59ba8c8036b3244e29b9aebc82b868b2f81a",
+ "status": "published"
+ },
+ {
+ "path": "variables/references.mdx",
+ "sourceSha256": "21300a1c62e7d69d9bd9c935f95985ad1dc03fd5085ab6b862749b178f34f89c",
+ "translationSha256": "7f33bda29839ee73f374faa6a69824bc55e5265968d0e42df7ab66801cee97b2",
+ "status": "published"
+ },
+ {
+ "path": "variables/troubleshooting/reference-not-applied.mdx",
+ "sourceSha256": "2be66a188aa38cb545bd36437c19d928f70eedab58c3b38a7a2ae7720c5f25fa",
+ "translationSha256": "0602e4272d1494fd5c49ba02aca54f1e69f2e22b15bf4404c3492c9ef6c72b45",
+ "status": "published"
+ }
+ ]
+}
diff --git a/_locales/de/networking.mdx b/_locales/de/networking.mdx
new file mode 100644
index 0000000..c43a7ae
--- /dev/null
+++ b/_locales/de/networking.mdx
@@ -0,0 +1,83 @@
+---
+description: "Jeder Service erhält eine onlizard.com-Domain mit automatischem TLS. Füge einen benutzerdefinierten Hostnamen hinzu, verifiziere DNS, stelle einen Port bereit oder entferne eine Domain."
+---
+
+
+
+# Netzwerk
+
+Jeder Service erhält beim Deployment sofort eine generierte `*.onlizard.com`-Domain mit automatischem TLS, unabhängig von der Region. Füge deinen eigenen Hostnamen hinzu, wenn du live gehen willst.
+
+
+
+## Generierte Domains
+
+Die Standarddomain eines Service wird automatisch für dich erstellt. Zeige sie an (oder generiere eine neue):
+
+```bash
+lizard domain # show the service's current domain
+lizard domain generate # generate a new *.onlizard.com subdomain
+```
+
+Object Storage, das über ein [S3-Add-on](/addons/storage) bereitgestellt wird, verwendet stattdessen einen regionsspezifischen Gateway-Host (`s3-.onlizard.com`).
+
+
+
+## Eine benutzerdefinierte Domain hinzufügen
+
+Der Hostname ist ein **Positionsargument** — es gibt kein `add`-Subcommand:
+
+```bash
+lizard domain app.example.com --service web
+```
+
+Lizard gibt die zu erstellenden DNS-Einträge zurück (einen `CNAME` für den Hostnamen und einen `TXT`-Eintrag zur Verifizierung). Füge sie bei deinem DNS-Anbieter hinzu.
+
+
+
+## Verifizieren
+
+Sobald DNS propagiert wurde, aktiviere die Domain:
+
+```bash
+lizard domain verify app.example.com
+```
+
+Dabei wird der `TXT`-Eintrag geprüft und die Domain aktiviert. TLS wird automatisch bereitgestellt.
+
+
+
+## Eine Domain entfernen
+
+```bash
+lizard domain delete app.example.com
+lizard domain rm app.example.com --yes # alias, skip confirmation
+```
+
+
+
+## Einen bestimmten Port bereitstellen
+
+Wenn dein Service auf einem nicht standardmäßigen Port bereitstellt, ordne die Domain diesem Port zu:
+
+```bash
+lizard domain app.example.com --service web --port 8080
+```
+
+## Worker-Services
+
+Ein [Service im Worker-Modus](/deploy/workers) (`containerPort=0`) kann weiterhin eine generierte Domain anzeigen, stellt aber nichts bereit — es gibt keinen Listener und keine Load-Balancer-Route. Füge einem Worker keine benutzerdefinierte Domain hinzu.
+
+
+
+## Im Dashboard verwalten
+
+Die Ansicht **Domains** im Dashboard (`lizard open`) zeigt den Verifizierungs- und TLS-Status jeder Domain und ermöglicht es dir, Hostnamen visuell hinzuzufügen oder zu entfernen.
+
+
+
+## Siehe auch
+
+- [`lizard domain`](/cli/domain) — die vollständige Befehlsreferenz.
+- [Regionen](/deploy/regions) — Services und Addons zur Verringerung der Latenz gemeinsam platzieren.
+- [Vom Prototyp zu einem SaaS, für das Leute zahlen](https://lizard.build/blog/google-antigravity-how-to-deploy-your-app-to-production#from-vibe-coded-prototype-to-a-saas-people-pay-for) — wo eine benutzerdefinierte Domain zwischen all den anderen Dingen steht, die eine generierte App noch braucht.
diff --git a/_locales/de/observability/_meta.ts b/_locales/de/observability/_meta.ts
new file mode 100644
index 0000000..eeddf79
--- /dev/null
+++ b/_locales/de/observability/_meta.ts
@@ -0,0 +1,6 @@
+export default {
+ index: "Übersicht",
+ logs: "Logs",
+ metrics: "Metriken & Kosten",
+ events: "Ereignisse & Verlauf",
+};
diff --git a/_locales/de/observability/events.mdx b/_locales/de/observability/events.mdx
new file mode 100644
index 0000000..62998e2
--- /dev/null
+++ b/_locales/de/observability/events.mdx
@@ -0,0 +1,45 @@
+---
+description: "Lies die Bereitstellen-Zeitleiste eines Service und den Live-Status seiner Replikate mit lizard events und finde denselben Verlauf in der Bereitstellungen-Ansicht des Dashboards."
+---
+
+
+
+# Events & Verlauf
+
+`lizard events` zeigt den Bereitstellen-Verlauf eines Service und den Live-Status seiner Replikate — die Zeitleiste dessen, was ausgeliefert wurde und was gerade läuft.
+
+
+
+## Events anzeigen
+
+```bash
+lizard events # deploy history + replica status
+lizard events --service api # a specific service
+lizard events --limit 25 # show more entries (default 10)
+```
+
+Jeder Eintrag umfasst eine Bereitstellen- oder Skalierungsaktion und den daraus resultierenden Replikatstatus, sodass du "Was hat sich geändert, und ist es gesund?" auf einen Blick beantworten kannst.
+
+
+
+## Schnellstatus
+
+Für eine schnelle Übersicht aller Services im Projekt — Status und URL — verwende:
+
+```bash
+lizard ps
+lizard status # the current directory's workspace/project/service link
+```
+
+## Dashboard
+
+Die Ansicht **Bereitstellungen** im Dashboard (`lizard open`) stellt denselben Verlauf als Zeitleiste dar, mit einem Detailbereich pro Bereitstellen (Build-Logs, Commit, Status) und dem Gesundheitsstatus pro Replikat.
+
+
+
+## Siehe auch
+
+- [Bereitstellungen](/concepts/deployments) — der Bereitstellen-Lebenszyklus.
+- [Logs](/observability/logs) — Laufzeit-, Build- und Neustart-Logs.
+- [Metrics & Cost](/observability/metrics) — Ressourcennutzung und Abrechnung.
+- [`lizard events`](/cli/events) — die vollständige Befehlsreferenz.
diff --git a/_locales/de/observability/index.mdx b/_locales/de/observability/index.mdx
new file mode 100644
index 0000000..9e80a08
--- /dev/null
+++ b/_locales/de/observability/index.mdx
@@ -0,0 +1,17 @@
+---
+description: "Sehen Sie, was Ihre Services tun: Logs streamen, Metriken und Kosten verfolgen sowie Bereitstellen- und Replikatverlauf prüfen."
+---
+
+# Observability
+
+Sehen Sie, was Ihre Services tun: Logs streamen, Metriken und Kosten verfolgen sowie Bereitstellen- und Replikatverlauf prüfen.
+
+
+
+## In diesem Abschnitt
+
+- [Logs](/observability/logs) — Live- und historische Logs, einschließlich Build- und Neustart-Logs.
+- [Metrics & Cost](/observability/metrics) — Ressourcennutzung und die dafür anfallenden Kosten.
+- [Events & History](/observability/events) — Bereitstellen-Zeitleiste und Status pro Replikat.
+
+Jede Ansicht hier hat auch ein `--json`-Formular; genau dieses liest ein AI-Coding-Agent, wenn sich ein Bereitstellen fehlerhaft verhält — siehe [Deploys aus Claude Code](https://lizard.build/blog/deploy-from-claude-code).
diff --git a/_locales/de/observability/logs.mdx b/_locales/de/observability/logs.mdx
new file mode 100644
index 0000000..73ff74d
--- /dev/null
+++ b/_locales/de/observability/logs.mdx
@@ -0,0 +1,67 @@
+---
+description: "Laufzeit-Logs streamen, Build-Logs nach einem fehlgeschlagenen Bereitstellen lesen und den Log-Tail rund um einen Neustart abrufen – über die CLI oder das Dashboard."
+---
+
+# Logs
+
+Lizard erfasst **Laufzeit**-Logs, **Build**-Logs und den Log-Tail rund um **Neustarts**. Streame sie live in deinem Terminal oder sieh sie dir im Dashboard an.
+
+
+
+## Laufzeit-Logs
+
+```bash
+lizard logs # last 200 runtime lines, then live tail
+lizard logs --service api # a specific service
+lizard logs --tail 1000 # more history (max 1000)
+lizard logs --level error # filter by level
+```
+
+
+
+### Verhalten mit `--json`
+
+`lizard logs --json` ist **kein** Stream — es gibt die letzten 200 Zeilen zurück (überschreibbar mit `--tail N`, maximal 1000) und beendet sich dann. Nutze das für Snapshots und Skripting. Streame nur dann live ohne `--json`, wenn du ein interaktives Tail möchtest.
+
+## Build-Logs
+
+```bash
+lizard logs --build # the most recent build's logs
+```
+
+Das ist das Erste, was du prüfen solltest, wenn ein Bereitstellen fehlschlägt — lies die Logs, behebe die Ursache und dann `lizard redeploy`. Siehe [Build-Pipeline](/concepts/build-pipeline).
+
+
+
+## Neustart- / Crash-Logs
+
+Wenn eine Replik abstürzt oder neu startet, hol dir den umgebenden Log-Tail:
+
+```bash
+lizard logs --restart latest # the most recent restart
+lizard logs --restart # a specific restart
+lizard logs --restarts # list recent restarts
+```
+
+
+
+## Durch den Verlauf blättern
+
+`lizard service logs` unterstützt das Blättern durch ältere Fenster:
+
+```bash
+lizard service logs --service api --tail all # full history (no follow)
+lizard service logs --service api --page 2 # older window (implies --tail 200)
+```
+
+## Dashboard
+
+Das Dashboard (`lizard open`) streamt Laufzeit- und Build-Logs mit Such- und Level-Filtern und zeigt die Build-Ausgabe pro Deployment in der Ansicht **Bereitstellungen**.
+
+
+
+## Siehe auch
+
+- [`lizard logs`](/cli/logs) — die vollständige Befehlsreferenz.
+- [Ereignisse & Verlauf](/observability/events) — Bereitstellen-Verlauf und Replik-Status.
+- [Bereitstellen aus Claude Code](https://lizard.build/blog/deploy-from-claude-code) — Logs, die dafür geschrieben sind, von einem Agenten gelesen zu werden, nicht nur von dir.
diff --git a/_locales/de/observability/metrics.mdx b/_locales/de/observability/metrics.mdx
new file mode 100644
index 0000000..6fef0e0
--- /dev/null
+++ b/_locales/de/observability/metrics.mdx
@@ -0,0 +1,48 @@
+---
+description: "CPU, Arbeitsspeicher, Netzwerk und Festplatte für einen Service verfolgen, sehen, was die aktuelle Skalierung kostet, und anhand der Zahlen handeln."
+---
+
+
+
+# Metriken & Kosten
+
+Verfolge CPU, Arbeitsspeicher, Netzwerk und Festplatte für einen Service — und sieh, was es kostet — über die CLI oder das Dashboard.
+
+
+
+## Metriken anzeigen
+
+```bash
+lizard metrics # CPU / memory / network / disk
+lizard metrics --service api # a specific service
+lizard metrics --range # time window
+lizard metrics --watch # live-updating view
+```
+
+
+
+## Kosten einbeziehen
+
+```bash
+lizard metrics --cost
+```
+
+Fügt Kostenangaben neben der Ressourcennutzung hinzu, damit du den Preis der aktuellen Skalierung sehen kannst.
+
+## Dashboard
+
+Das Dashboard (`lizard open`) stellt diese als Diagramme in der Ansicht **Metriken / Observability** dar, und die Ansicht **Nutzung** schlüsselt Verbrauch und Abrechnung im gesamten Projekt auf. Öffne es mit:
+
+```bash
+lizard open
+```
+
+
+
+## Auf Basis der Werte handeln
+
+- Hohe CPU-/Arbeitsspeicherauslastung → hochskalieren: `lizard scale --service api --cpu 2 --memory 2048`.
+- Anhaltende Last → Replikate hinzufügen: `lizard scale --service api --replicas 3`.
+- Speicherengpass bei einem Add-on → Speicher erweitern: `lizard scale --service postgres --storage 8192`.
+
+Siehe [Scaling](/deploy/scaling).
diff --git a/_locales/de/platform/_meta.ts b/_locales/de/platform/_meta.ts
new file mode 100644
index 0000000..0546759
--- /dev/null
+++ b/_locales/de/platform/_meta.ts
@@ -0,0 +1 @@
+export default { billing: "Abrechnung & Guthaben", limits: "Limits", 'storage-and-recovery': "Speicher & Wiederherstellung", 'known-issues': "Bekannte Probleme" };
diff --git a/_locales/de/platform/billing.mdx b/_locales/de/platform/billing.mdx
new file mode 100644
index 0000000..bcd6b37
--- /dev/null
+++ b/_locales/de/platform/billing.mdx
@@ -0,0 +1,61 @@
+---
+description: "Lizard pay as you go: Ressourcensätze, Kontoguthaben, optionales automatisches Aufladen, Zahlungsgebühren und was passiert, wenn Ihr Guthaben aufgebraucht ist."
+---
+
+# Pay as you go
+
+Lizard hat für Standardkonten keine monatliche Grundgebühr und keine Sitzplatzgebühr. Laden Sie Guthaben auf Ihr Konto und zahlen Sie für die Ressourcen, die Sie nutzen. Ungenutztes gekauftes Guthaben bleibt in Ihrem Kontostand, sodass Sie in einem ruhigen Monat kein weiteres Paket kaufen müssen.
+
+
+
+## Ressourcensätze
+
+Die Preise sind in US-Dollar angegeben.
+
+| Ressource | Rate |
+| --- | ---: |
+| CPU | $0.000006948 pro vCPU-Sekunde |
+| Memory | $0.000003474 pro GB-Sekunde |
+| Persistent Volumes | $0.000000054 pro GB-Sekunde |
+| Managed Object Storage | $0.0135 pro GB-Monat |
+| Outgoing traffic | $0.045 pro GB, ab dem ersten Byte |
+
+Für eingehenden Traffic fallen keine Gebühren an. Für Apps, Managed Postgres, Managed Redis und Sandboxes gelten dieselben jeweils anwendbaren Ressourcensätze. Die Ressourcenlimits des Kontos gelten weiterhin; das Hinzufügen von Guthaben erhöht diese Limits nicht.
+
+Zum Beispiel kosten eine vCPU und 1 GB Arbeitsspeicher, die eine Stunde lang genutzt werden, $0.0375192 an Compute-Kosten. Speicher, ausgehender Traffic und Zahlungsgebühren können diesen Betrag erhöhen. Dies ist ein Beispiel für Ressourcenkosten, nicht der berechnete Betrag für eine Aufladung.
+
+Die vollständige Preisübersicht finden Sie unter [current pricing](https://lizard.build/pricing). Für Enterprise-Abrechnung gilt Ihr Vertrag.
+
+
+
+## Kontoguthaben
+
+Die Nutzung in einem Workspace wird vom Kontoguthaben seines Eigentümers abgezogen. Das Hinzufügen von Mitgliedern verursacht keine Sitzplatzgebühr. Auf der Seite „Credits“ sehen Sie Ihr Guthaben, Käufe und jegliches Guthaben, das abläuft.
+
+- **Gekauftes Guthaben verfällt nicht.** Es wird nicht jeden Monat zurückgesetzt.
+- **Testguthaben verfällt.** Neue Konten erhalten $10 Testguthaben, gültig für 31 Tage.
+- **Promo-Guthaben kann verfallen.** Prüfen Sie die Bedingungen und das angezeigte Ablaufdatum für die Gutschrift.
+
+Ein gekauftes Guthaben bezahlt die Nutzung; es ist kein Rabatt auf den Ressourcensatz. Ziehen Sie es beim Kostenvergleich mit einem anderen Anbieter nicht noch einmal ab.
+
+
+
+## Aufladungen und Gebühren
+
+Öffnen Sie **Credits** in den Kontoeinstellungen, um Guthaben hinzuzufügen. Bevor Sie bestätigen, zeigt der Aufladebildschirm den Mindestbetrag, den Guthabenbetrag, die Zahlungsgebühr und den Gesamtbetrag an. Eine Mindestaufladung ist keine monatliche Gebühr.
+
+Automatisches Aufladen ist optional. Wählen Sie den Guthabenschwellenwert und den Betrag in Ihren Credits-Einstellungen. Sie können es dort deaktivieren. Das Deaktivieren des automatischen Aufladens stoppt keine Ressourcen und beendet keine Gebühren für deren Nutzung.
+
+
+
+## Niedriges oder leeres Guthaben
+
+Lizard warnt Sie, wenn Ihr Guthaben niedrig ist. Wenn Ihr Guthaben aufgebraucht ist und eine Zahlung es nicht wiederherstellt, kann die Erstellung von Ressourcen eingeschränkt werden und laufende Dienste können nach der jeweils geltenden Kulanzfrist pausieren. Prüfen Sie Ihre Credits-Seite auf die Kontobedingungen und stellen Sie das Guthaben vor Ablauf der Kulanzfrist wieder her, um eine Pausierung zu vermeiden.
+
+
+
+## Inaktive Apps und gespeicherte Daten
+
+Eine App kann Arbeitsspeicher und CPU verwenden, auch wenn sie keine Anfragen hat. Stoppen Sie die App, um die Compute-Nutzung zu beenden. Persistent Volumes und Managed Object Storage verursachen weiter Speicherkosten, solange Sie Daten gespeichert halten, auch wenn die App gestoppt ist.
+
+Lesen Sie vor dem Entfernen von Daten [Speicher und Wiederherstellung](/platform/storage-and-recovery). Lesen Sie [metrics](/observability/metrics), um konfigurierte Limits mit der gemessenen Nutzung zu vergleichen.
diff --git a/_locales/de/platform/known-issues.mdx b/_locales/de/platform/known-issues.mdx
new file mode 100644
index 0000000..cbcdae5
--- /dev/null
+++ b/_locales/de/platform/known-issues.mdx
@@ -0,0 +1,51 @@
+---
+description: "Aktuelle Hinweise zum Lebenszyklus von Sandboxes, Grenzen bei der Wiederherstellung von Bereitstellungen und Vorrangregeln für Build-Einstellungen, die Sie prüfen sollten, bevor Sie sich auf einen Workflow verlassen."
+---
+
+
+
+# Bekannte Probleme
+
+Diese Seite dokumentiert Verhalten, das besondere Vorsicht oder eine verifizierte Freigabe erfordert. Ein zur Prüfung eingereichter Code-Fix ist keine Garantie für einen laufenden Dienst.
+
+
+
+## Pause und Ablauf von Sandboxen
+
+Die Pause soll die verbleibende Laufzeit einfrieren. Ein Konflikt zwischen der Uhr des Knotens und einem separaten Bereinigungsprozess kann dazu führen, dass eine pausierte Sandbox nach ihrer ursprünglichen Frist beendet wird. Auch der Neustart des Node-Agent und das Fortsetzen einer Sandbox ohne Ablaufzeit benötigen den Lebenszyklus-Fix.
+
+Bis dieser Fix einen Live-Test bestanden hat und Ihre Region erreicht hat, sollten Sie sich für langfristigen Zustand nicht allein auf Pause verlassen. Speichern Sie Dateien unter `/data` auf einem Persistent Volume, oder speichern Sie den Anwendungszustand in einer Datenbank oder einem Object Storage. Host-Arbeitsspeicher ist kein Backup. Verwenden Sie eine explizite Laufzeit und beenden Sie die Sandbox, wenn die Aufgabe erledigt ist.
+
+
+
+## Redeploy ist kein Rollback
+
+`lizard redeploy` baut die ausgewählte Quelle mit der aktuellen Konfiguration erneut. Dabei wird kein vorheriger Build ausgewählt. Ein fehlgeschlagener Build und ein fehlgeschlagener Start haben unterschiedliche Auswirkungen; prüfen Sie den aktiven Dienst und seine Logs, bevor Sie einen Wiederherstellungsschritt wählen. Gehen Sie nicht davon aus, dass jede Runtime bei einem fehlgeschlagenen Start weiterhin das alte Release ausliefert.
+
+
+
+## Vorrang des Dockerfile
+
+Explizite Build- oder Start-Befehle haben Vorrang vor einem Dockerfile im Repository. Entfernen Sie diese Überschreibungen, wenn Sie `dockerfilePath` auswählen. Schon eine Aktualisierung der Einstellungen kann einen Build starten, prüfen Sie daher die Ereignisse, bevor Sie ein weiteres Redeploy auslösen. Siehe [Fehlerbehebung für Dockerfile](/deploy/troubleshooting/incomplete-dockerfile).
+
+
+
+## Vorlagen und MCP
+
+Die aktuelle API zum Erstellen von Sandboxes akzeptiert die zwei integrierten Vorlagen. Anleitungen, die `lizard push` für benutzerdefinierte Vorlagen verwenden, entsprechen nicht der aktuellen öffentlichen CLI.
+
+Lizard Skill verwendet Lizard CLI. Dieser Workflow stellt keinen MCP-Transport bereit. Das Hosting eines eigenen entfernten MCP-Servers ist ein separates Application-Deployment; siehe den [Leitfaden](/guides/deploy-mcp-server).
+
+
+
+## Änderungen am Service-Port: behoben und verifiziert am 2026-09-09
+
+Die Prüfung vom 7. September ergab HTTP 503, nachdem ein Upload-Dienst von Port `3000` auf `80` geändert wurde, obwohl ein bereiter Prozess vorhanden war. Der Fix in Produktion wendet den gewählten Port jetzt auf den laufenden Dienst an und behält einen expliziten Port beim Upload und beim Rebuild bei. Eine Live-Prüfung der Portänderung war am 9. September erfolgreich. Prüfen Sie nach einem Deployment sowohl die öffentliche URL als auch den Zustand des Dienstes.
+
+
+
+## Upload-Archive und Exit-Codes bei fehlgeschlagenen Builds: behoben
+
+Lizard CLI 0.3.95 schließt macOS-`._*`-Metadateneinträge aus Source-Uploads aus und gibt bei fehlgeschlagenen Cloud-Builds einen Exit-Code ungleich null zurück. Aktualisieren Sie ältere CLI-Versionen; `COPYFILE_DISABLE` wird nicht mehr benötigt. Die [Framework-Prüfungen](/framework-guides/validation) decken Uploads von macOS mit der aktuellen CLI ab.
+
+Ein erfolgreicher Build allein beweist noch nicht, dass die App funktioniert. Prüfen Sie nach dem Deployment die öffentliche URL, Routen, Formulare und Datenoperationen.
diff --git a/_locales/de/platform/limits.mdx b/_locales/de/platform/limits.mdx
new file mode 100644
index 0000000..1562835
--- /dev/null
+++ b/_locales/de/platform/limits.mdx
@@ -0,0 +1,47 @@
+---
+description: "Prüfen Sie vor dem Deployment die Replikatlimits von Apps, Ressourcen und Timeouts von Sandboxes, Regionen und den Geltungsbereich von Kontingenten auf Kontoebene."
+---
+
+# Limits
+
+Limits hängen von der Ressource, dem Tarif und dem Konto ab. Eine Einstellung pro Replikat entspricht nicht der insgesamt für einen Service oder ein Konto verfügbaren Kapazität. Prüfen Sie Ihren aktuellen Tarif und das Ergebnis der Erstellungs- oder Skalierungsanfrage, bevor Sie eine Workload dimensionieren.
+
+
+
+## Anwendungen
+
+| Einstellung | Geltungsbereich | Was zu prüfen ist |
+|---|---|---|
+| CPU und Arbeitsspeicher | Jedes Replikat | Drei Replikate mit einer Obergrenze von 2 vCPU / 2 GiB haben zusammen eine konfigurierte Obergrenze von 6 vCPU / 6 GiB. Das ist keine Nutzungsvorhersage. |
+| Anzahl der Replikate | Service und Tarif | Die API akzeptiert 1–10; Tariflimits können diesen Bereich einschränken. Prüfungen im Standardtarif erlauben 1, bzw. 5 für Pro/Enterprise, mit kontoabhängigen Ausnahmen. |
+| Ressourcenobergrenze des Kontos | Kontoinhaber | Ein zweites Projekt erzeugt nicht zwangsläufig ein zweites Kontingent. Fragen Sie vor der Planung eines großen Bereitstellungen nach der effektiven Kontenobergrenze. |
+| Worker-Modus | Service | `containerPort=0` läuft ohne HTTP-Listener oder öffentliche Load-Balancer-Route. |
+| Benutzerdefinierte Domain | Hostname | Benutzerdefinierte Wildcard-Domains werden nicht akzeptiert. Verwenden Sie einen spezifischen Hostnamen und schließen Sie die Prüfungen zu Eigentümerschaft und DNS ab. |
+
+Anwendungen können verschiedene Runtimes verwenden. Gehen Sie nicht davon aus, dass jede Anwendung dieselbe Firecracker-Mikro-VM-Grenze wie Sandboxes hat.
+
+## Sandboxes
+
+| Einstellung | Aktuelle Create-API |
+|---|---|
+| CPU und Arbeitsspeicher | 4 vCPU / 4096 MiB |
+| Vorlagen | `base`, `code-interpreter-v1` |
+| Standardlaufzeit der Raw API | `timeoutMs: 0`, kein Ablauf |
+| Standardlaufzeit des Lizard SDK | 300000 ms, fünf Minuten |
+| Bereich für explizite Laufzeit | Ganzzahlige Millisekunden von 0 bis 2147483647 |
+| Laufzeit aktualisieren | Mindestens 1000 ms; kein Idle-Timer |
+| Anbindung von Persistent Volumes | Jeweils nur eine Sandbox, auf dem Node des Volumes |
+
+Übergeben Sie in Skripten eine explizite Laufzeit. Zum Beispiel macht `--timeout 300000` das beabsichtigte Limit über verschiedene Versionen von Lizard CLI hinweg eindeutig. Lesen Sie vor dem Parken einer Sitzung [Pausieren und Ablauf](/platform/known-issues#sandbox-pause-and-expiration).
+
+
+
+## Regionen
+
+Die aktuell konfigurierten Regionen umfassen US East (Virginia), `us-east-1`, und EU West (Limburg), `eu-west-lim-a`. Eine Region im Katalog garantiert nicht, dass für jede Ressource Kapazität verfügbar ist. Prüfen Sie die Regionsauswahl beim Erstellen der Ressource; eine Sandbox, die ein vorhandenes Volume verwendet, muss auf dem Node dieses Volumes laufen.
+
+
+
+## Vor dem Erhöhen der Skalierung
+
+Prüfen Sie aktiven Tarif, Einstellungen pro Replikat, Kontenobergrenze, Datenbank-Verbindungslimit und Wachstum des Storage zusammen. Verwenden Sie [Skalierung](/deploy/scaling), [Metriken](/observability/metrics) und [Preise](https://lizard.build/pricing), um konfigurierte Kapazität mit der gemessenen Nutzung zu vergleichen.
diff --git a/_locales/de/platform/storage-and-recovery.mdx b/_locales/de/platform/storage-and-recovery.mdx
new file mode 100644
index 0000000..b979e82
--- /dev/null
+++ b/_locales/de/platform/storage-and-recovery.mdx
@@ -0,0 +1,53 @@
+---
+description: "Wählen Sie Speicher für Anwendungsdaten und Sandbox-Dateien. Verstehen Sie Anhänge, Host-Ausfälle, Exporte und Wiederherstellung, bevor Sie eine Ressource löschen oder ersetzen."
+---
+
+
+
+# Speicher und Wiederherstellung
+
+Wählen Sie den Speicher danach aus, welche Daten einen Prozessneustart, ein neues Deployment oder einen Host-Ausfall überstehen müssen. Das sind unterschiedliche Ereignisse. Persistenter Speicher bietet für sich allein weder ein Backup noch einen Wiederherstellungspunkt oder Hochverfügbarkeit.
+
+| Daten | Wo sie gespeichert werden sollten | Grenze |
+|---|---|---|
+| Anwendungsdaten | Managed Postgres oder eine andere Datenbank | Ein Neustart ist etwas anderes als das Wiederherstellen gelöschter oder beschädigter Daten. Testen Sie einen separaten Export- und Wiederherstellungsweg. |
+| Cache- und Queue-Daten | Managed Redis | Entscheiden Sie, ob die Workload ihren Zustand neu aufbauen kann oder einen eigenen Wiederherstellungsplan braucht. |
+| Von Anwendungen gemeinsam genutzte Dateien | Managed Object Storage | Legen Sie die Zugriffsrichtlinie des Buckets fest, bevor Sie private Daten hochladen. Der automatisch erstellte Bucket `default` ist öffentlich lesbar. |
+| Dateien, die von späteren Sandboxes benötigt werden | Persistent Volumes, eingehängt unter `/data` | Jeweils nur ein Sandbox-Anhang; das Volume bleibt auf seinem Node. |
+| Temporäre Sandbox-Dateien | Das Gast-Dateisystem außerhalb von `/data` | Erwarten Sie nicht, dass sie nach dem Ende der Sandbox oder nach dem Ersetzen des Gasts noch vorhanden sind. |
+| Angehaltener Prozesszustand | Host-Arbeitsspeicher | Pausieren ist kein dauerhaftes Snapshot; bei einem Host-Ausfall geht dieser Zustand verloren. |
+
+
+
+## Dateien nach dem Ende einer Sandbox behalten
+
+Erstellen Sie ein Persistent Volume im selben Projekt, hängen Sie es beim Erstellen der Sandbox an und schreiben Sie unter `/data`. Beenden Sie die erste Sandbox, bevor Sie das Volume an die nächste anhängen. Siehe das [vollständige Beispiel](/sandboxes/volumes).
+
+
+
+## Wiederherstellung einer Datenbank planen
+
+Vor einer Migration oder einem Release, das Daten verändert:
+
+1. Wählen Sie eine Exportmethode für die verwendete Datenbank und Version.
+2. Speichern Sie den Export getrennt von der Ressource, die geändert wird.
+3. Stellen Sie ihn in einer separaten Testdatenbank wieder her und prüfen Sie, ob die Anwendung ihn lesen kann.
+4. Halten Sie die Dauer der Wiederherstellung und die neuesten im Export enthaltenen Daten fest.
+
+Gehen Sie nicht davon aus, dass es geplante Backups, Point-in-Time-Recovery, Multi-Node-Replikation oder eine Garantie für die Wiederherstellungszeit gibt, nur weil eine Datenbank verwaltet wird. Prüfen Sie die aktuelle Servicevereinbarung und die verfügbaren Steuerungsmöglichkeiten für Ihre Ressource.
+
+
+
+## Umgebungsreferenzen
+
+Eine Anwendung sollte ihre Datenbankverbindung aus einer Umgebungsreferenz lesen. Ein Connection String ist ein Zugangsdatengeheimnis; geben Sie ihn nicht aus, um eine Aktualisierung zu prüfen. Eine Verbindungsprüfung wie `SELECT 1` belegt mehr, als die Variable nur in einer Shell zu sehen.
+
+
+
+## Verwandte Anleitungen
+
+- [Managed Postgres](/addons/postgres)
+- [Managed Redis](/addons/redis)
+- [Managed Object Storage](/addons/storage)
+- [Persistent Volumes](/sandboxes/volumes)
+- [Deployment-Wiederherstellung](/concepts/deployments#failed-releases-and-recovery)
diff --git a/_locales/de/sandboxes/_meta.ts b/_locales/de/sandboxes/_meta.ts
new file mode 100644
index 0000000..3afc9a7
--- /dev/null
+++ b/_locales/de/sandboxes/_meta.ts
@@ -0,0 +1,8 @@
+export default {
+ index: "Übersicht",
+ quickstart: "Schnellstart",
+ 'sdk-reference': "SDK-Referenz",
+ 'code-interpreter': "Code-Interpreter",
+ volumes: "Persistent Volumes",
+ dashboard: "Dashboard",
+};
diff --git a/_locales/de/sandboxes/code-interpreter.mdx b/_locales/de/sandboxes/code-interpreter.mdx
new file mode 100644
index 0000000..92929ca
--- /dev/null
+++ b/_locales/de/sandboxes/code-interpreter.mdx
@@ -0,0 +1,109 @@
+---
+description: "CodeSandbox behält zwischen Aufrufen einen zustandsbehafteten Kernel bei, sodass Variablen und Importe erhalten bleiben. Führen Sie Python, JavaScript oder Bash so aus, wie es ein Agent tut."
+---
+
+# Code Interpreter
+
+`CodeSandbox` erweitert eine normale [sandbox](/sandboxes) um einen **zustandsbehafteten Kernel** — Variablen, Importe und Funktionsdefinitionen bleiben zwischen Aufrufen erhalten, genau wie in einem Jupyter-Notebook. Das ist das richtige Werkzeug, wenn ein KI-Agent Code schrittweise erzeugt und ausführt.
+
+Er startet aus dem Vorlage `code-interpreter-v1` (Python 3.14 + Node.js 26, mit einer Code-Ausführungs-API auf Port 8080) und unterstützt standardmäßig **Python, JavaScript und Bash**.
+
+
+
+## Code ausführen
+
+```ts
+import { CodeSandbox } from '@lizard-build/sdk';
+
+// Every sandbox belongs to a project — usage is metered per project
+const sandbox = await CodeSandbox.create({ project: 'my-project' }); // defaults to 'code-interpreter-v1'
+
+await sandbox.runCode('x = 42');
+const result = await sandbox.runCode('print(x * 2)');
+console.log(result.stdout); // "84\n" — x survived from the previous call
+
+await sandbox.kill();
+```
+
+`runCode(code, opts?)` gibt ein `Execution` zurück:
+
+| Feld | Beschreibung |
+|---|---|
+| `stdout` / `stderr` | Erfasste Ausgabeströme |
+| `results` | Umfangreiche Ergebnisse (Werte sowie alle erzeugten Bilder / Diagramme) |
+| `error` | Ein `ExecutionError` (`name`, `message`, `traceback`), wenn der Code einen Fehler ausgelöst hat |
+| `executionCount` | Monotoner Zähler für den Kernel |
+
+
+
+## Eine Sprache auswählen
+
+Standard ist Python. Übergeben Sie `language` für einen einmaligen Aufruf in einer anderen Laufzeitumgebung:
+
+```ts
+const js = await sandbox.runCode('1 + 1', { language: 'javascript' });
+console.log(js.results[0].data); // "2"
+
+await sandbox.runCode('echo "$(uname -s)"', { language: 'bash' });
+```
+
+
+
+## Ausgabe streamen
+
+Bei Zellen mit langer Laufzeit können Sie stdout/stderr während der Erzeugung streamen, statt auf das Ergebnis zu warten:
+
+```ts
+await sandbox.runCode('for i in range(5): print(i)', {
+ onStdout: (line) => process.stdout.write(line),
+ onStderr: (line) => process.stderr.write(line),
+ onResult: (r) => console.log('result:', r),
+ onError: (e) => console.error('error:', e.name, e.message),
+});
+```
+
+
+
+## Isolierte Kontexte
+
+Ein **Kontext** ist ein unabhängiger Namespace innerhalb derselben Sandbox — verwenden Sie einen pro Agent-Sitzung oder pro Benutzer, damit ihre Variablen nie kollidieren.
+
+```ts
+const a = await sandbox.createContext({ language: 'python' });
+const b = await sandbox.createContext({ language: 'python' });
+
+await sandbox.runCode('secret = 1', { context: a });
+await sandbox.runCode('print(secret)', { context: b }); // NameError — b never saw it
+
+await sandbox.listContexts();
+await sandbox.restartContext(a); // clear all variables/state
+await sandbox.deleteContext(b); // free its resources
+```
+
+Übergeben Sie an `runCode` **entweder** `context` **oder** `language`, nicht beides — ein Kontext ist bereits an eine Sprache gebunden.
+
+
+
+## Checkpointing einer Sitzung
+
+Da `CodeSandbox` eine Sandbox ist, funktionieren [Anhalten und Fortsetzen](/sandboxes/quickstart#pause-and-resume) genauso. Installieren Sie einen umfangreichen Abhängigkeits-Stack einmal, halten Sie an und setzen Sie später fort, wobei der Kernel-Status erhalten bleibt:
+
+```ts
+const sandbox = await CodeSandbox.create({ project: 'my-project' });
+await sandbox.runCode('import subprocess; subprocess.run(["pip", "install", "scikit-learn"])');
+const id = sandbox.sandboxId;
+await sandbox.pause();
+
+// Later — resume with packages and kernel variables already in place
+const resumed = await CodeSandbox.connect(id);
+const out = await resumed.runCode('import sklearn; print(sklearn.__version__)');
+console.log(out.stdout);
+await resumed.kill();
+```
+
+
+
+## Siehe auch
+
+- [SDK-Referenz](/sandboxes/sdk-reference) — jede Methode von `CodeSandbox` und jede Option von `runCode`.
+- [Persistent Volumes](/sandboxes/volumes) — Speicher anhängen, der länger als eine einzelne Sandbox bestehen bleibt.
diff --git a/_locales/de/sandboxes/dashboard.mdx b/_locales/de/sandboxes/dashboard.mdx
new file mode 100644
index 0000000..96c49c6
--- /dev/null
+++ b/_locales/de/sandboxes/dashboard.mdx
@@ -0,0 +1,57 @@
+---
+description: "Sandboxes manuell über die Sandboxes-Seite eines Projekts erstellen und prüfen: API-Schlüssel, Live-Shells, Lebenszyklus-Steuerung, Snapshots und Volumes."
+---
+
+# Sandboxes-Dashboard
+
+Jedes Projekt hat eine **Sandboxes**-Seite, auf der du Sandboxes manuell erstellen und prüfen kannst — nützlich zum Debuggen der Umgebung eines Agents, für den Zugriff auf eine interaktive Shell oder um stichprobenartig zu prüfen, welchen Code etwas erzeugt hat. Öffne ein Projekt und wähle in der Seitenleiste **Sandboxes** aus (`///sandboxes`).
+
+Die Seite hat drei Tabs: **Sandboxes**, **Volumes** und **Snapshots**.
+
+
+
+## API-Schlüssel abrufen
+
+Wenn du Sandboxes noch nicht verwendet hast, führt dich der Leerzustand durch das Erstellen eines **API-Schlüssels** für das SDK. Der Schlüssel wird **einmalig** angezeigt — kopiere ihn sofort; später kann er nicht mehr abgerufen werden. Speichere ihn als `LIZARD_API_KEY` (siehe [Quickstart](/sandboxes/quickstart#authenticate)).
+
+
+
+## Sandbox erstellen
+
+Klicke auf **New Sandbox** und lege Folgendes fest:
+
+- **Snapshot** — die [Vorlage](/sandboxes#templates), von der gebootet wird (`base` oder `code-interpreter-v1`).
+- **Location** — die Region, in der sie ausgeführt wird (standardmäßig die nächstgelegene verfügbare).
+- **Resources** — die aktuellen Vorlagen verwenden 4 vCPU und 4096 MiB RAM; das sind keine Größenoptionen pro Erstellung.
+
+Hier erstellte Sandboxes haben kein Timeout — sie laufen, bis du sie beendest.
+
+
+
+## Laufende Sandbox prüfen
+
+Wenn du eine Sandbox auswählst, öffnet sich ein Detailbereich mit zwei Tabs.
+
+**Overview** zeigt ID, Vorlage, Status, Region sowie CPU/Arbeitsspeicher an, außerdem:
+
+- **Exposed ports** — jeder Port, der mit [`getHost`](/sandboxes/quickstart#exposing-a-port) geöffnet wurde, jeweils mit einer kopierbaren öffentlichen `https://…onlizard.com`-URL, die du direkt öffnen kannst.
+- **SSH access** — falls verfügbar, ein direkt einfügbarer `ssh root@ -p `-Befehl und das generierte Passwort.
+
+**Terminal** gibt dir eine browserbasierte Shell direkt in die micro-VM (über SSH), sodass du dich umsehen kannst, ohne das Dashboard zu verlassen.
+
+Aktive Sandboxes melden in der Liste CPU- und Speicherauslastung in Echtzeit; pausierte und gestoppte melden null.
+
+
+
+## Lebenszyklus
+
+- **Kill Sandbox** (im Detailbereich) beendet sie sofort und gibt ihre Ressourcen frei — einschließlich des Trennens eines eventuell verbundenen [Volumes](/sandboxes/volumes).
+- **Pause / resume** werden über das [SDK](/sandboxes/quickstart#pause-and-resume) gesteuert; eine pausierte Sandbox wird hier als **Paused** angezeigt und verbraucht keine bedarfsabhängige Rechenleistung.
+
+## Snapshots
+
+Im Tab **Snapshots** werden die Vorlagen aufgelistet, von denen eine Sandbox booten kann — die integrierten `base` und `code-interpreter-v1`. Ein Upload-Befehl für benutzerdefinierte Vorlagen ist nicht Teil der aktuellen öffentlichen CLI. Jeder Eintrag zeigt die standardmäßigen vCPU-/Speicherwerte und die Beschreibung.
+
+## Volumes
+
+Im Tab **Volumes** verwaltest du [persistenten Speicher](/sandboxes/volumes): Erstelle ein Volume mit Name und Größe und sieh, an welche Sandbox es jeweils angehängt ist.
diff --git a/_locales/de/sandboxes/index.mdx b/_locales/de/sandboxes/index.mdx
new file mode 100644
index 0000000..ab8e85f
--- /dev/null
+++ b/_locales/de/sandboxes/index.mdx
@@ -0,0 +1,88 @@
+---
+description: "Eine Sandbox ist eine isolierte Firecracker-Mikro-VM, die in Millisekunden startet, Code ausführt und wieder verworfen wird. Die Recheneinheit hinter KI-Agenten."
+---
+
+# Sandboxes
+
+Eine **Sandbox** ist eine isolierte Firecracker-Mikro-VM, die Sie bei Bedarf starten, darin Code ausführen und nach Abschluss wieder beenden. Jede davon ist eine vollständige Linux-Umgebung mit eigenem Dateisystem, Netzwerk und Prozess-Namespace — gestartet in Millisekunden statt in Minuten.
+
+Sandboxes sind die Recheneinheit hinter KI-Agenten, Code-Interpretern, Evals und CI-ähnlichen Jobs auf Lizard. Während ein [Service](/concepts/architecture) eine langlebige Bereitstellung ist, die an ein Repo gebunden ist, ist eine Sandbox **ephemer, programmatisch und wegwerfbar** — erstellen Sie für jede Aufgabe eine Sandbox innerhalb der für Ihr Konto verfügbaren Kapazität.
+
+```ts
+import { Sandbox } from '@lizard-build/sdk';
+
+const sandbox = await Sandbox.create('base', { project: 'my-project' });
+const { stdout } = await sandbox.process.exec('echo "hello from Lizard"');
+console.log(stdout); // hello from Lizard
+await sandbox.kill();
+```
+
+
+
+## Wann Sie eine Sandbox verwenden sollten
+
+| Verwenden Sie eine **Sandbox**, wenn… | Verwenden Sie einen **Service**, wenn… |
+|---|---|
+| Ein Agent nicht vertrauenswürdigen oder generierten Code ausführen muss | Sie eine App bereitstellen, die dauerhaft läuft |
+| Sie pro Aufgabe eine frische, wegwerfbare Linux-Umgebung möchten | Sie eine stabile `..onlizard.com`-URL und TLS möchten |
+| Sie viele isolierte Jobs gleichzeitig auffächern müssen | Sie einen einzelnen, ständig laufenden Prozess haben |
+| Die Workload nur kurz lebt oder pausiert wird | Die Workload git-basiert ist und automatisch neu bereitgestellt wird |
+
+Sobald ein Agent innerhalb einer Sandbox eine funktionierende App erstellt hat, können Sie sie mit [`lizard up`](/deploy/upload) zu einem persistenten Service hochstufen — ganz ohne Dockerfile.
+
+
+
+## Was sie schnell macht
+
+- **Firecracker-Mikro-VMs** — für jede Sandbox ein separater Linux-Gast. App-Laufzeiten haben unterschiedliche Isolationsregeln. Hardwarevirtualisierung trennt den Gast vom Host. Kontrollieren Sie Anmeldedaten und Netzwerkzugriff für Code, dem Sie nicht vertrauen.
+- **Pausieren und fortsetzen** — beim Pausieren werden die vCPUs der Mikro-VM eingefroren. Arbeitsspeicher, Dateisystem und laufende Prozesse bleiben erhalten, sodass beim Fortsetzen genau dort weitergemacht wird, wo zuvor aufgehört wurde — ohne Pakete neu zu installieren oder Caches erneut aufzuwärmen. So überstehen lang laufende Agent-Sitzungen mehrere getrennte Aufrufe. Der Zustand wird im Arbeitsspeicher des Hosts gehalten statt auf die Festplatte geschrieben, daher übersteht er keinen Host-Ausfall. Siehe [pause & resume](/sandboxes/quickstart#pause-and-resume).
+- **Von einer Vorlage starten** — jeder Node erstellt pro Vorlage vorab einen Golden Snapshot, sodass `create` eine Wiederherstellung und kein Kaltstart ist.
+
+
+
+## Vorlagen
+
+Eine Sandbox startet aus einer **Vorlage** (im Dashboard auch *Snapshot* genannt). Zwei sind integriert:
+
+| Vorlage | Inhalt | Am besten geeignet für |
+|---|---|---|
+| `base` | Debian Linux, Node.js 26 und die Lizard CLI | Allzweck-Shell- und Build-Umgebungen |
+| `code-interpreter-v1` | Python 3.14 + Node.js 26, mit einer HTTP-API zur Codeausführung auf Port 8080 | KI-Code-Interpreter — steuern Sie sie mit [`CodeSandbox`](/sandboxes/code-interpreter) |
+
+`base` ist die Standardvorlage. Die öffentliche Create-API akzeptiert diese beiden Vorlagennamen. Sie bietet keinen Ablauf zum Hochladen benutzerdefinierter Vorlagen.
+
+
+
+## Lebenszyklus
+
+Eine Sandbox wechselt zwischen drei Zuständen:
+
+```
+create ──▶ running ⇄ paused ──▶ stopped
+ (killed or expired)
+```
+
+- **running** — der Gast kann Befehle ausführen, mit Dateien arbeiten und freigegebene Ports bereitstellen.
+- **paused** — vCPUs stoppen. Arbeitsspeicher des Gasts und Prozesszustand bleiben auf dem Host erhalten; das ist weder ein dauerhaftes Snapshot noch ein Backup.
+- **stopped** — die Sandbox wurde durch Löschung oder Ablauf beendet. Ihr lokales Dateisystem ist nicht mehr verfügbar.
+
+Das SDK setzt standardmäßig eine Laufzeit von fünf Minuten. Die rohe Create-API akzeptiert `timeoutMs: 0` für kein Ablaufdatum. Übergeben Sie ein explizites Timeout, wenn sich ein Skript in allen Clients gleich verhalten muss, und geben Sie die Sandbox frei, wenn die Aufgabe beendet ist. Befehle setzen die Laufzeit nicht zurück.
+
+Das Pausieren soll die verbleibende Laufzeit erhalten. Prüfen Sie das [aktuelle Lebenszyklus-Problem](/platform/known-issues#sandbox-pause-and-expiration), bevor Sie sich auf eine Pause verlassen, die länger als die ursprüngliche Frist dauert. Persistente Dateien gehören in ein [Volume](/sandboxes/volumes); ein pausierter Gast übersteht keinen Host-Ausfall.
+
+
+
+## Ressourcen und Limits
+
+Jede Sandbox läuft mit festen **4 vCPU / 4096 MiB RAM**. Die öffentliche Create-API bietet keine Einstellung für die Größe pro Sandbox. Jede Sandbox übernimmt die Ressourcen ihrer Vorlage.
+
+Die Region wird automatisch anhand der verfügbaren Kapazität gewählt; im Dashboard können Sie eine festlegen. Gehen Sie nicht davon aus, dass für App-Kontingente und Sandbox-Kapazität dieselben Durchsetzungsregeln gelten. Siehe [Limits](/platform/limits).
+
+
+
+## So können Sie Sandboxes steuern
+
+| Oberfläche | Am besten geeignet für | Hier starten |
+|---|---|---|
+| **SDK** (JS / Python) | Agenten, Apps und Skripte — einschließlich zustandsbehafteter, mehrsprachiger Ausführung über [`CodeSandbox`](/sandboxes/code-interpreter) | [Quickstart](/sandboxes/quickstart) · [SDK Reference](/sandboxes/sdk-reference) |
+| **Dashboard** | Manuelles Erstellen, Terminal, SSH, Monitoring | [Dashboard](/sandboxes/dashboard) |
diff --git a/_locales/de/sandboxes/quickstart.mdx b/_locales/de/sandboxes/quickstart.mdx
new file mode 100644
index 0000000..601adeb
--- /dev/null
+++ b/_locales/de/sandboxes/quickstart.mdx
@@ -0,0 +1,235 @@
+---
+description: "Starte deine erste Sandbox mit dem Lizard SDK: installieren, einen API-Schlüssel erstellen, ein Projekt auswählen, Code ausführen, Dateien verschieben, einen Port freigeben und pausieren."
+---
+
+
+
+# Sandboxes-Schnellstart
+
+Starte eine Sandbox, führe darin Code aus, gib einen Port frei und pausiere sie mit dem Lizard SDK.
+
+
+
+## Installieren
+
+```bash
+# JavaScript / TypeScript
+npm install @lizard-build/sdk
+
+# Python
+pip install lizard-sdk
+```
+
+
+
+## Authentifizieren
+
+Sandboxes authentifizieren sich mit einem **API-Schlüssel**. Erstelle einen im Dashboard (**Sandboxes → Erste Schritte → Neuer API-Schlüssel**) — er wird nur einmal angezeigt, also kopiere ihn sofort.
+
+Lege ihn in deiner Umgebung fest, dann übernimmt das SDK ihn automatisch:
+
+```bash
+export LIZARD_API_KEY=""
+```
+
+Du kannst ihn auch explizit übergeben: `Sandbox.create('base', { apiKey, project })`.
+
+
+
+## Ein Projekt auswählen
+
+Jede Sandbox gehört zu einem Projekt — die Nutzung wird pro Projekt abgerechnet, daher verweigert die API das Erstellen ohne eines. Gib das Projekt über seine ID, seinen Slug oder seinen Namen an.
+
+Der `Lizard`-Client bindet genau ein Projekt, daher musst du es nur einmal angeben:
+
+```ts
+import { Lizard } from '@lizard-build/sdk';
+
+const lizard = new Lizard({ project: 'my-project' });
+const sandbox = await lizard.create('base');
+```
+
+```python
+from lizard import Lizard
+
+lizard = Lizard(project="my-project")
+sandbox = lizard.create("base")
+```
+
+`Sandbox.create` verwendet dieselbe Option `project`, wenn du lieber keinen Client behalten möchtest. Beide Formen werden unten verwendet.
+
+
+
+## Deine erste Sandbox
+
+**JavaScript / TypeScript**
+
+```ts
+import { Sandbox } from '@lizard-build/sdk';
+
+// Boot from a template (default: 'base') in a project
+const sandbox = await Sandbox.create('base', { project: 'my-project' });
+
+// Run a command and wait for it to finish
+try {
+ const result = await sandbox.process.exec('node -e "console.log(2 ** 10)"');
+ console.log(result.stdout); // 1024
+ console.log(result.exitCode); // 0
+} finally {
+ await sandbox.kill();
+}
+```
+
+**Python**
+
+```python
+from lizard import Sandbox
+
+sandbox = Sandbox.create("base", project="my-project")
+
+# exec_ (trailing underscore) because `exec` is reserved in Python
+try:
+ result = sandbox.process.exec_("python -c 'print(2 ** 10)'")
+ print(result.stdout) # 1024
+finally:
+ sandbox.kill()
+```
+
+`process.exec` gibt `{ stdout, stderr, exitCode }` zurück. Es wartet, bis der Befehl abgeschlossen ist — lang laufende Prozesse im Hintergrund mit einem angehängten `&` starten.
+
+
+
+## Mit Dateien arbeiten
+
+`sandbox.fs` liest und schreibt direkt in das Dateisystem der Micro-VM und erstellt bei Bedarf übergeordnete Verzeichnisse.
+
+```ts
+await sandbox.fs.write('/app/server.js', `
+ const http = require('http');
+ http.createServer((_, res) => res.end('hello from Lizard')).listen(3000);
+`);
+
+const src = await sandbox.fs.read('/app/server.js');
+const entries = await sandbox.fs.list('/app'); // [{ name, path, type, size }]
+await sandbox.fs.makeDir('/app/data');
+await sandbox.fs.remove('/app/old.log');
+```
+
+| Methode | Beschreibung |
+|---|---|
+| `fs.write(path, data)` | Eine Datei schreiben — String oder Bytes; erstellt übergeordnete Verzeichnisse |
+| `fs.read(path)` | Eine Datei als UTF-8-String lesen |
+| `fs.list(path)` | Verzeichniseinträge auflisten |
+| `fs.makeDir(path)` | Ein Verzeichnis und alle fehlenden übergeordneten Verzeichnisse erstellen |
+| `fs.remove(path)` | Eine Datei oder ein Verzeichnis löschen |
+
+
+
+## Einen Port freigeben
+
+Starte einen HTTP-Server innerhalb der Sandbox und erhalte eine öffentliche HTTPS-URL dafür — ohne Tunneling.
+
+```ts
+await sandbox.process.exec('node /app/server.js &'); // listen on :3000
+
+const host = await sandbox.getHost(3000);
+console.log(`Live at https://${host}`);
+// https://-3000.sandbox..onlizard.com
+```
+
+`getHost(port)` registriert eine Route zu diesem Port und gibt den Hostnamen zurück. Die URL ist öffentlich und TLS-terminiert. Entferne sie anschließend wieder im Dashboard.
+
+
+
+## Pausieren und fortsetzen
+
+Beim Pausieren werden die vCPUs des Gasts eingefroren und sein aktueller Zustand im Arbeitsspeicher des Hosts beibehalten. Es wird kein dauerhaftes Snapshot geschrieben. Prüfe das [Problem zu Pause und Ablauf](/platform/known-issues#sandbox-pause-and-expiration), bevor du eine Sitzung über ihre ursprüngliche Frist hinaus beibehältst.
+
+```ts
+// Set the environment up once
+const sandbox = await Sandbox.create('base', { project: 'my-project' });
+await sandbox.process.exec('npm install -g some-heavy-toolchain');
+const id = sandbox.sandboxId;
+
+await sandbox.pause(); // freeze the guest; see the lifecycle issue below
+
+// …minutes or hours later, from anywhere:
+const resumed = await Sandbox.connect(id); // resumes guest state still held by the host
+await resumed.process.exec('some-heavy-toolchain --version'); // already installed
+await resumed.kill();
+```
+
+`Sandbox.connect(id)` setzt eine pausierte Sandbox automatisch fort. Du kannst auch `sandbox.resume()` für ein Handle aufrufen, das du bereits hältst.
+
+**Python**
+
+```python
+sandbox = Sandbox.create("base", project="my-project")
+sandbox.process.exec_("pip install numpy pandas")
+sandbox_id = sandbox.sandbox_id
+sandbox.pause()
+
+resumed = Sandbox.connect(sandbox_id) # resumes guest state still held by the host
+resumed.process.exec_("python -c 'import numpy'")
+resumed.kill()
+```
+
+## Timeouts
+
+Eine Sandbox mit einem positiven Timeout läuft nach dieser Lebensdauer ab. Das SDK verwendet standardmäßig fünf Minuten; `timeoutMs: 0` beim Erstellen deaktiviert den Ablauf. Setze ein explizites Limit und gib die Sandbox frei, wenn die Aufgabe beendet ist. Eine laufende Sandbox passt du an mit:
+
+```ts
+const sandbox = await Sandbox.create('base', { project: 'my-project', timeoutMs: 10 * 60 * 1000 }); // 10 min
+await sandbox.setTimeout(30 * 60 * 1000); // extend to 30 min from now
+```
+
+Pause soll die verbleibende Laufzeit einfrieren, aber das aktuelle [Lebenszyklus-Problem](/platform/known-issues#sandbox-pause-and-expiration) erfordert ein verifiziertes Backend-Release. Verlasse dich nicht auf unbegrenztes Pausieren zur Datenaufbewahrung.
+
+
+
+## Sandboxes verwalten
+
+```ts
+const sandbox = await Sandbox.create('base', { project: 'my-project' });
+const info = await sandbox.getInfo(); // { sandboxId, template, startedAt, endAt, … }
+
+const all = await Sandbox.list(); // every running sandbox for this account
+await sandbox.kill();
+```
+
+
+
+## Vollständiges Beispiel
+
+Ein Agent, der ein Skript schreibt, es ausführt, das Ergebnis bereitstellt und den Gast für einen späteren Aufruf pausiert:
+
+```ts
+import { Sandbox } from '@lizard-build/sdk';
+
+const sandbox = await Sandbox.create('base', { project: 'my-project', timeoutMs: 15 * 60 * 1000 });
+
+try {
+ await sandbox.fs.write('/app/app.js', `
+ const http = require('http');
+ http.createServer((_, res) => res.end('ok')).listen(3000);
+ `);
+ await sandbox.process.exec('node /app/app.js &');
+
+ const host = await sandbox.getHost(3000);
+ const res = await fetch(`https://${host}`);
+ console.log(await res.text()); // ok
+
+ await sandbox.pause(); // resume later with Sandbox.connect(sandbox.sandboxId)
+} catch (err) {
+ await sandbox.kill();
+ throw err;
+}
+```
+
+
+
+## Nächste Schritte
+
+- **[SDK-Referenz](/sandboxes/sdk-reference)** — jede Methode von `Sandbox`, `CodeSandbox` und `Volume`.
+- **[Code Interpreter](/sandboxes/code-interpreter)** — zustandsbehafteten, mehrsprachigen Code ausführen.
+- **[Persistent Volumes](/sandboxes/volumes)** — Speicher anhängen, der länger als eine einzelne Sandbox bestehen bleibt.
diff --git a/_locales/de/sandboxes/sdk-reference.mdx b/_locales/de/sandboxes/sdk-reference.mdx
new file mode 100644
index 0000000..bfa09a0
--- /dev/null
+++ b/_locales/de/sandboxes/sdk-reference.mdx
@@ -0,0 +1,144 @@
+---
+description: "Jede Klasse und Methode im Lizard SDK für JavaScript und Python: Lizard, Sandbox, CodeSandbox und Volume, mit Optionen und Rückgabetypen."
+---
+
+
+
+# SDK-Referenz
+
+Die Pakete `@lizard-build/sdk` (JS/TS) und `lizard-sdk` (Python) werden von den meisten Agents, Apps und Skripten verwendet, um Sandboxes zu steuern. Diese Seite erfasst jede Klasse und Methode; eine Einführung finden Sie im [Quickstart](/sandboxes/quickstart).
+
+
+
+## Installieren & authentifizieren
+
+```bash
+npm install @lizard-build/sdk # JavaScript / TypeScript
+pip install lizard-sdk # Python
+```
+
+Das SDK liest `LIZARD_API_KEY` aus der Umgebung oder akzeptiert eine explizite Option `apiKey` für `Sandbox.create` / `Sandbox.connect`. Wie Sie einen Schlüssel erstellen, finden Sie unter [Quickstart → Authentifizieren](/sandboxes/quickstart#authenticate).
+
+Jede Sandbox gehört außerdem zu einem **Projekt** — die Nutzung wird pro Projekt abgerechnet, daher wird eine Erstellung ohne Projekt abgelehnt.
+
+## `Lizard`
+
+Ein Client, der an ein Projekt gebunden ist, sodass Sie das Projekt einmal angeben statt bei jedem Aufruf.
+
+| Mitglied | Beschreibung |
+|---|---|
+| `new Lizard({ project, apiKey?, apiUrl?, timeoutMs? })` | Einen Client erstellen. `project` ist erforderlich — seine ID, sein Slug oder sein Name (`Lizard(project=…)` in Python). |
+| `lizard.create(template?, options?)` | Eine Sandbox im Projekt des Clients starten. |
+| `lizard.connect(sandboxId)` | Eine Sandbox per ID anbinden und sie automatisch fortsetzen, wenn sie pausiert ist. |
+| `lizard.list()` | Alle laufenden Sandboxes für das Konto auflisten. |
+| `lizard.projectId()` | Die Projektreferenz des Clients in ihre ID auflösen (nach dem ersten Aufruf zwischengespeichert). |
+
+```ts
+const lizard = new Lizard({ project: 'my-project' });
+const sandbox = await lizard.create('base');
+```
+
+```python
+lizard = Lizard(project="my-project")
+sandbox = lizard.create("base")
+```
+
+Eine Projektreferenz, die zu nichts passt, auf das der Schlüssel zugreifen kann, löst vor dem Start irgendeiner Sandbox einen Fehler aus und listet die Projekte auf, die er sehen kann.
+
+> Python-Methodennamen mit einem nachgestellten Unterstrich (`exec_`) vermeiden Kollisionen mit reservierten Wörtern, und Eigenschaften verwenden snake_case (`sandbox_id`) statt camelCase (`sandboxId`). Die folgenden Beispiele verwenden JS/TS-Namen; prüfen Sie das installierte Python-Paket für Methodensignaturen.
+
+## `Sandbox`
+
+| Mitglied | Beschreibung |
+|---|---|
+| `Sandbox.create(template?, options?)` | Eine Sandbox starten. `template` ist standardmäßig `'base'`; `options.project` benennt das Projekt, dem die Kosten berechnet werden. |
+| `Sandbox.connect(sandboxId)` | Eine Sandbox per ID anbinden und sie automatisch fortsetzen, wenn sie pausiert ist. |
+| `Sandbox.list()` | Alle laufenden Sandboxes für das Konto auflisten. |
+| `sandbox.sandboxId` | Die ID der Sandbox (`sandbox_id` in Python). |
+| `sandbox.process.exec(cmd)` | Einen Befehl ausführen und auf seinen Abschluss warten (`process.exec_` in Python). Gibt `{ stdout, stderr, exitCode }` zurück. |
+| `sandbox.fs.write(path, data)` | Eine Datei schreiben — String oder Bytes; erstellt übergeordnete Verzeichnisse. |
+| `sandbox.fs.read(path)` | Eine Datei als UTF-8-String lesen. |
+| `sandbox.fs.list(path)` | Verzeichniseinträge auflisten → `[{ name, path, type, size }]`. |
+| `sandbox.fs.makeDir(path)` | Ein Verzeichnis und alle fehlenden übergeordneten Verzeichnisse erstellen. |
+| `sandbox.fs.remove(path)` | Eine Datei oder ein Verzeichnis löschen. |
+| `sandbox.getHost(port)` | Eine Route zu `port` registrieren und ihren öffentlichen, TLS-terminierten Hostnamen zurückgeben. |
+| `sandbox.pause()` | Guest-vCPUs stoppen und den Zustand im Host-Speicher behalten. Lesen Sie den [Lebenszyklus-Status](#lifecycle-status), bevor Sie sich auf eine Pause über die ursprüngliche Frist hinaus verlassen. |
+| `sandbox.resume()` | Eine pausierte Sandbox an Ort und Stelle fortsetzen. |
+| `sandbox.setTimeout(ms)` | Die verbleibende Lebensdauer einer laufenden Sandbox in Millisekunden setzen (mindestens 1000). |
+| `sandbox.getInfo()` | Metadaten abrufen → `{ sandboxId, template, startedAt, endAt, … }`. |
+| `sandbox.kill()` | Die Sandbox sofort beenden und ihre Ressourcen freigeben. |
+
+### `Sandbox.create(template?, options?)`
+
+| Option | Typ | Standard | Hinweise |
+|---|---|---|---|
+| `template` | string | `'base'` | `'base'` oder `'code-interpreter-v1'` — die beiden unterstützten [Vorlagen](/sandboxes#templates) |
+| `project` | string | — | **Erforderlich.** Das Projekt, dem die Kosten berechnet werden — seine ID, sein Slug oder sein Name (`project` in Python). Nicht nötig über einen Client `Lizard`. |
+| `projectId` | string | — | Exakte Projekt-ID; überspringt das Auflösen von `project` |
+| `timeoutMs` | int | SDK-Standard 5 min | Lebensdauer in ms |
+| `region` | string | auto | An eine Region anheften |
+| `volumeId` | string | — | Ein [Volume](/sandboxes/volumes) bei `/data` anhängen |
+| `apiKey` | string | `LIZARD_API_KEY` env var | Expliziter API-Schlüssel, überschreibt die Umgebung |
+
+```ts
+const sandbox = await Sandbox.create('base', { project: 'my-project', timeoutMs: 10 * 60 * 1000 });
+```
+
+## `CodeSandbox`
+
+Erweitert `Sandbox` um einen zustandsbehafteten Kernel. Die vollständige Einführung finden Sie unter [Code Interpreter](/sandboxes/code-interpreter).
+
+| Mitglied | Beschreibung |
+|---|---|
+| `CodeSandbox.create(options?)` | Einen Code-Interpreter starten (standardmäßig mit der Vorlage `code-interpreter-v1`). Akzeptiert dieselbe Option `project` wie `Sandbox.create`. |
+| `CodeSandbox.connect(sandboxId)` | Einen vorhandenen Code-Interpreter-Sandbox anbinden (und automatisch fortsetzen). |
+| `sandbox.runCode(code, opts?)` | Code im Kernel ausführen. Gibt ein `Execution` zurück. |
+| `sandbox.createContext(opts)` | Einen isolierten Namespace erstellen — `{ language }`. |
+| `sandbox.listContexts()` | Die Kontexte der Sandbox auflisten. |
+| `sandbox.restartContext(context)` | Alle Variablen bzw. den gesamten Zustand in einem Kontext löschen. |
+| `sandbox.deleteContext(context)` | Die Ressourcen eines Kontexts freigeben. |
+
+### `runCode(code, opts?)`
+
+| Option | Beschreibung |
+|---|---|
+| `language` | Laufzeit für einen einmaligen Aufruf — `'python'` (Standard), `'javascript'` oder `'bash'`. Gegenseitig ausschließend mit `context`. |
+| `context` | Innerhalb eines bestimmten isolierten Kontexts statt des Standardkontexts ausführen. Gegenseitig ausschließend mit `language`. |
+| `onStdout` / `onStderr` | Ausgabe zeilenweise streamen, während sie erzeugt wird. |
+| `onResult` | Wird für jedes Rich Ergebnis aufgerufen (Werte, erzeugte Bilder/Diagramme). |
+| `onError` | Wird mit einem `ExecutionError` aufgerufen, wenn der Code eine Ausnahme auslöst. |
+
+Gibt ein `Execution` zurück:
+
+| Feld | Beschreibung |
+|---|---|
+| `stdout` / `stderr` | Erfasste Ausgabeströme |
+| `results` | Rich Results (Werte sowie eventuell erzeugte Bilder / Diagramme) |
+| `error` | Ein `ExecutionError` (`name`, `message`, `traceback`), wenn der Code eine Ausnahme ausgelöst hat |
+| `executionCount` | Monotoner Zähler für den Kernel |
+
+## `Volume`
+
+Die vollständige Einführung finden Sie unter [Persistent Volumes](/sandboxes/volumes).
+
+| Mitglied | Beschreibung |
+|---|---|
+| `Volume.create(projectId, name, options)` | Ein Volume erstellen. `options.sizeGb` ist standardmäßig `5`. |
+| `Volume.list(projectId)` | Volumes in einem Projekt auflisten → `[{ id, name, sizeGb, status, attachedTo, … }]`. |
+| `Volume.get(projectId, volumeId)` | Einen Handle für ein vorhandenes Volume abrufen. |
+| `volume.getInfo(projectId)` | Metadaten und Anhangsstatus abrufen. |
+| `volume.delete(projectId)` | Ein Volume löschen — es muss zuvor getrennt werden. |
+
+
+
+## Siehe auch
+
+- [Quickstart](/sandboxes/quickstart) — installieren, authentifizieren und eine vollständige Einführung.
+- [Code Interpreter](/sandboxes/code-interpreter) — der Leitfaden zu `CodeSandbox`.
+- [Persistent Volumes](/sandboxes/volumes) — der Leitfaden zu `Volume`.
+
+
+
+## Lebenszyklus-Status
+
+Bevor Sie sich darauf verlassen, dass eine Pause eine Sitzung über ihre ursprüngliche Frist hinaus erhält, lesen Sie die [bekannten Probleme](/platform/known-issues#sandbox-pause-and-expiration). Eine Pause hält den Guest-Zustand im Host-Speicher; sie ist kein dauerhaftes Backup.
diff --git a/_locales/de/sandboxes/volumes.mdx b/_locales/de/sandboxes/volumes.mdx
new file mode 100644
index 0000000..44436d3
--- /dev/null
+++ b/_locales/de/sandboxes/volumes.mdx
@@ -0,0 +1,79 @@
+---
+description: "Hänge ein Volume unter /data ein, um Checkpoints, Weights oder ein Arbeitsverzeichnis über Sandbox-Neustarts hinweg zu behalten. Volumes erstellen, einhängen und verwalten."
+---
+
+# Persistent Volumes
+
+Sandboxes sind flüchtig — wenn eine beendet wird oder abläuft, ist ihr Dateisystem weg. Ein **Volume** ist persistenter Blockspeicher, der länger lebt als jede einzelne Sandbox. Hänge eines ein, um Daten (Checkpoints, Modellgewichte, ein Arbeitsverzeichnis) über Sandbox-Neustarts hinweg zu behalten.
+
+Ein Volume kann **jeweils nur an eine Sandbox gleichzeitig** angehängt werden und wird innerhalb der Micro-VM unter **`/data`** eingehängt. Da ein Volume an den Node gebunden ist, auf dem es liegt, wird eine Sandbox, die es einhängt, auf genau diesem Node geplant.
+
+
+
+## Erstellen und einhängen
+
+Hänge ein Volume ein, indem du seine ID an `Sandbox.create` übergibst, zusammen mit dem Projekt, dem die Sandbox in Rechnung gestellt wird. Alles, was unter `/data` geschrieben wird, bleibt erhalten, nachdem die Sandbox verschwunden ist.
+
+```ts
+import { Sandbox, Volume } from '@lizard-build/sdk';
+
+// Create a 10 GB volume in a project (default size: 5 GB)
+const volume = await Volume.create('proj_123', 'agent-workdir', { sizeGb: 10 });
+
+// Attach it to a sandbox — mounted at /data
+const sandbox = await Sandbox.create('base', { project: 'proj_123', volumeId: volume.volumeId });
+try {
+ await sandbox.fs.write('/data/state.json', JSON.stringify({ step: 1 }));
+} finally {
+ await sandbox.kill(); // the volume persists
+}
+
+// A later sandbox re-attaches and sees the data
+const next = await Sandbox.create('base', { project: 'proj_123', volumeId: volume.volumeId });
+try {
+ console.log(await next.fs.read('/data/state.json')); // {"step":1}
+} finally {
+ await next.kill();
+}
+```
+
+
+
+## Volumes verwalten
+
+```ts
+await Volume.list('proj_123'); // [{ id, name, sizeGb, status, attachedTo, … }]
+const v = await Volume.get('proj_123', 'vol_abc');
+await v.getInfo('proj_123');
+await v.delete('proj_123'); // must be detached first
+```
+
+| Methode | Beschreibung |
+|---|---|
+| `Volume.create(projectId, name, { sizeGb })` | Ein Volume erstellen (standardmäßig 5 GB) |
+| `Volume.list(projectId)` | Volumes in einem Projekt auflisten |
+| `Volume.get(projectId, volumeId)` | Ein Handle für ein vorhandenes Volume abrufen |
+| `volume.getInfo(projectId)` | Metadaten und Anhangsstatus abrufen |
+| `volume.delete(projectId)` | Ein Volume löschen (muss ausgehängt sein) |
+
+
+
+## Im Dashboard
+
+Volumes befinden sich im Tab **Sandboxes → Volumes** eines Projekts. Erstelle eines mit Name und Größe; die Tabelle zeigt für jedes Volume Größe, Status (`available` / `attached`) und welche Sandbox es hält. Ein Volume wird automatisch wieder auf `available` freigegeben, wenn seine Sandbox beendet wird oder abläuft. Siehe die Anleitung zum [Dashboard](/sandboxes/dashboard).
+
+
+
+## Hinweise
+
+- Ein Volume kann jeweils nur an **eine Sandbox** gleichzeitig angehängt werden. Der Versuch, ein bereits angehängtes Volume einzuhängen, führt zu einem Konflikt.
+- Das Löschen einer Sandbox (oder ihr Ablauf) **trennt** das Volume — es löscht es nicht. Die Daten bleiben für die nächste Einhängung erhalten.
+- Lösche das Volume selbst, um den Speicherplatz freizugeben.
+- Eine pausierte Sandbox behält ihre Einhängung weiterhin. Persistent Volumes verwenden Node-lokalen Speicher; exportiere Daten, die du nach einem Node-Ausfall wiederherstellen können musst. Siehe [Speicher und Wiederherstellung](/platform/storage-and-recovery).
+
+
+
+## Siehe auch
+
+- [SDK Reference](/sandboxes/sdk-reference) — jede `Volume`-Methode.
+- [Quickstart](/sandboxes/quickstart) — ein Volume beim Erstellen der Sandbox einhängen.
diff --git a/_locales/de/studio/_meta.ts b/_locales/de/studio/_meta.ts
new file mode 100644
index 0000000..2524ce0
--- /dev/null
+++ b/_locales/de/studio/_meta.ts
@@ -0,0 +1,3 @@
+export default {
+ 'getting-started': "Lizard Studio installieren",
+};
diff --git a/_locales/de/studio/getting-started.mdx b/_locales/de/studio/getting-started.mdx
new file mode 100644
index 0000000..ff13703
--- /dev/null
+++ b/_locales/de/studio/getting-started.mdx
@@ -0,0 +1,145 @@
+---
+title: "Lizard Studio für Claude Code und ChatGPT installieren"
+description: "Installieren Sie Lizard Studio in Chrome, verbinden Sie Claude Code oder ChatGPT mit einem lokalen Projekt und führen Sie Ihre erste Website-Änderung durch. Folgen Sie der Einrichtungsanleitung."
+---
+
+
+
+# Lizard Studio installieren
+
+Lizard Studio ist eine kostenlose Chrome-Erweiterung, die Claude Code oder ChatGPT mit der Seite verbindet, die Sie gerade erstellen. Öffnen Sie einen Chat neben der Seite, wählen Sie ein Element aus und bitten Sie den Agenten, die Dateien in Ihrem lokalen Projekt zu bearbeiten. Die Erweiterung enthält Seiteninspektion, Anmerkungen, Lineale, eine Farbpipette und Browser-Debugging-Tools.
+
+Diese Anleitung führt Sie von der Installation bis zu einer Quellcodeänderung, die ein Neuladen der Seite übersteht. Ein Beispiel zum Herunterladen finden Sie im [visuellen Bearbeitungsleitfaden für Claude Code](https://lizard.build/blog/claude-code-visual-editor).
+
+
+
+## Das benötigen Sie
+
+- Google Chrome auf macOS, Windows oder Linux.
+- Node.js und npm. Der lokale Host setzt Node.js 18 oder höher voraus; Ihr gewählter Agent kann eine höhere Anforderung haben. Verwenden Sie eine Node.js-Version, die beide unterstützen.
+- Die lokale CLI für Claude Code oder ChatGPT, angemeldet mit Ihrem eigenen Konto.
+- Einen lokalen Projektordner. Damit Quellcodeänderungen im Browser sichtbar werden, starten Sie den Entwicklungsserver dieses Projekts und öffnen dessen URL.
+
+Die Erweiterung und der Host sind kostenlos und unter der MIT-Lizenz veröffentlicht. Die Nutzung des Modells unterliegt den Kontoanforderungen, Limits und Gebühren Ihres Anbieters. Sie benötigen kein Lizard-Konto, um Lizard Studio zu verwenden.
+
+
+
+## 1. Die Chrome-Erweiterung hinzufügen
+
+Öffnen Sie [Lizard Studio im Chrome Web Store](https://chromewebstore.google.com/detail/kgbaeoalmkabpoglpjcdmppdmcipfdeh) und wählen Sie **Zu Chrome hinzufügen**. Heften Sie die Erweiterung an, wenn Sie sie über die Symbolleiste erreichen möchten.
+
+Die Symbolleiste stellt die Design-Tools bereit; das Seitenpanel von Chrome enthält Ihre Chats. Die Installation aus dem Store erfordert keinen Entwicklermodus.
+
+
+
+## 2. Ihren Agenten installieren
+
+Wählen Sie den Agenten, den Sie verwenden möchten. Den anderen können Sie später hinzufügen.
+
+Für Claude Code folgen Sie der [offiziellen Einrichtungsanleitung](https://code.claude.com/docs/en/setup). Prüfen Sie die Installation in einem Terminal:
+
+```bash
+claude --version
+```
+
+Für ChatGPT in Lizard Studio installieren Sie die Codex CLI:
+
+```bash
+npm install -g @openai/codex
+codex --version
+```
+
+Lizard Studio bezeichnet diesen Agenten in der Benutzeroberfläche als **ChatGPT**. Das Paket und der Terminalbefehl verwenden den Namen **Codex**. Dies ist ein lokaler Coding-Agent, der mit Ihrem Projekt verbunden ist; die Website chatgpt.com wird dabei nicht eingebettet.
+
+Öffnen Sie den gewählten Agenten und schließen Sie dessen Anmeldeablauf ab, bevor Sie fortfahren. Unterstützte Verbindungswege finden Sie im [Lizard Studio README](https://github.com/lizard-build/lizard-studio#setup).
+
+
+
+## 3. Den lokalen Host installieren
+
+Führen Sie diesen Befehl einmal in einem Terminal aus:
+
+```bash
+npx @lizard-build/lizard-studio-host install
+```
+
+Der Host verbindet die Chrome-Erweiterung mit dem Agenten auf Ihrem Computer. Das Installationsprogramm kopiert den Host nach `~/.lizard-studio/host` und registriert ihn beim Browser. Lassen Sie Node.js installiert: Der Browser verwendet es, um den Host zu starten.
+
+Öffnen Sie das Seitenpanel der Erweiterung nach der Installation erneut. Wenn Sie einen vorhandenen Host aktualisiert haben, öffnen Sie das Panel erneut, bevor Sie einen neuen Chat starten.
+
+
+
+## 4. Die Seite mit ihrem Projekt verbinden
+
+Starten Sie den Entwicklungsserver Ihres Projekts mit dem üblichen Befehl. Öffnen Sie die ausgegebene URL in Chrome und öffnen Sie dann Lizard Studio auf diesem Tab.
+
+Starten Sie einen Chat, wählen Sie **Claude Code** oder **ChatGPT** und wählen Sie den Ordner, der den Quellcode dieses Projekts enthält. Jeder Chat behält seinen eigenen Projektordner und seine eigenen Berechtigungen. Ein Tab mit der richtigen Seite teilt dem Agenten nicht automatisch mit, welches lokale Repository geändert werden soll.
+
+Bevor Sie um eine Bearbeitung bitten, prüfen Sie die Verbindung mit einer schreibgeschützten Anfrage:
+
+```text
+Read this page's title and inspect its main heading. Tell me which
+local project folder you are using. Do not change any files yet.
+```
+
+Wenn der Agent den falschen Ordner nennt, korrigieren Sie die Auswahl, bevor Sie fortfahren.
+
+
+
+## 5. Ein Element auswählen und eine Änderung vornehmen
+
+Wählen Sie **Selector** in der Seiten-Symbolleiste und klicken Sie auf das Element, das Sie ändern möchten. Die Auswahl fügt dem Chat Kontext hinzu. Bei einem visuellen Problem, das mehrere Elemente betrifft, verwenden Sie **Annotate**, um den Bereich zu markieren und den Screenshot dem Chat hinzuzufügen.
+
+Probieren Sie eine Anfrage mit messbarem Ergebnis aus:
+
+```text
+Find the source for the selected card's action row. Set the gap
+between its buttons to 24px in the project files. Keep the button
+labels and colors unchanged. Show the diff, then inspect the
+rendered row to check its computed gap.
+```
+
+Lesen Sie die vorgeschlagenen Dateiänderungen und verwenden Sie die Berechtigungssteuerung, um die gewünschte Arbeit zu genehmigen. Ihr Berechtigungsmodus bestimmt, welche Aktionen eine separate Aufforderung benötigen.
+
+Wenn Ihr Entwicklungsserver die Seite neu lädt, prüfen Sie das Ergebnis. Falls sie nicht automatisch neu lädt, aktualisieren Sie Chrome.
+
+
+
+## 6. Prüfen, dass die Änderung bestehen bleibt
+
+Eine temporäre DOM-Änderung kann korrekt aussehen, bis Sie die Seite aktualisieren. Eine Quellcodeänderung ändert die Dateien, die Ihr Entwicklungsserver ausliefert.
+
+Prüfen Sie den Datei-Diff in Ihrem Editor oder führen Sie `git diff` im Projektordner aus. Aktualisieren Sie die Seite und prüfen Sie dasselbe Element erneut. Im obigen Beispiel sollte der berechnete Abstand weiterhin `24px` sein. Prüfen Sie sowohl Desktop- als auch schmale Layouts, bevor Sie die Änderung beibehalten.
+
+Das Bearbeiten eines lokalen Projekts aktualisiert keine bereitgestellte Website. Stellen Sie separat bereit, wenn die Änderung live gehen soll.
+
+
+
+## Wenn die Verbindung fehlschlägt
+
+| Was Sie sehen | Was Sie prüfen sollten |
+|---|---|
+| Das Seitenpanel kann den Host nicht erreichen | Führen Sie das Host-Installationsprogramm aus, prüfen Sie, ob Node.js verfügbar ist, und öffnen Sie dann das Panel erneut. |
+| Der Agent kann nicht starten | Prüfen Sie `claude --version` oder `codex --version` in einem Terminal und schließen Sie die Anmeldung dieses Agenten ab. |
+| Der Agent sieht die Seite, kann aber ihren Code nicht finden | Wählen Sie den richtigen lokalen Ordner und prüfen Sie, ob der Tab den Entwicklungsserver dieses Projekts verwendet. |
+| Eine Änderung verschwindet nach dem Aktualisieren | Prüfen Sie den Diff. Bitten Sie um eine Quellcodeänderung, wenn der Agent nur das Live-DOM geändert hat. |
+| Die Symbolleiste erscheint nicht auf einer Chrome-Einstellungsseite | Chrome blockiert Content-Scripts auf Seiten unter `chrome://`, auf der Seite "Neuer Tab" und im Chrome Web Store. Öffnen Sie eine normale Website. |
+
+Unter macOS vermeidet der Host-Speicherort in `~/.lizard-studio/host` außerdem Einschränkungen, auf die Chrome stoßen kann, wenn ein Host unter Desktop, Dokumente oder Downloads gestartet wird. Weitere Details finden Sie in den [Host-Hinweisen im README](https://github.com/lizard-build/lizard-studio#2-the-local-host-one-time).
+
+
+
+## Wohin Ihre Daten gehen
+
+Die Erweiterung und der Host laufen auf Ihrem Computer. Der ausgewählte Modellanbieter erhält die Anfragen, die Sie über seinen Agenten senden. Lizard Studio verwendet keinen Lizard-Chatserver und sammelt keine Telemetrie. Eine lokale Installation bedeutet nicht, dass ein Cloud-Modell Ihre Prompts lokal verarbeitet. Lesen Sie die [Datenschutzerklärung von Lizard Studio](https://github.com/lizard-build/lizard-studio/blob/main/PRIVACY.md), bevor Sie es mit einem Projekt verwenden, das Datenbeschränkungen hat.
+
+
+
+## Verwandte Anleitungen
+
+- [Ein Element auswählen und sein CSS korrigieren](https://lizard.build/blog/claude-code-visual-editor)
+- [ChatGPT zum Bearbeiten einer lokalen Website verwenden](https://lizard.build/studio/chatgpt)
+- [Lizard Studio und Claude in Chrome vergleichen](https://lizard.build/studio/compare/claude-in-chrome)
+- [Eine Claude Code-GUI auswählen](https://lizard.build/blog/claude-code-gui)
+
+Einrichtung anhand des Lizard Studio-Quellcodes am 14. September 2026 geprüft.
diff --git a/_locales/de/variables/_meta.ts b/_locales/de/variables/_meta.ts
new file mode 100644
index 0000000..83ae951
--- /dev/null
+++ b/_locales/de/variables/_meta.ts
@@ -0,0 +1,5 @@
+export default {
+ index: "Variablen & Secrets",
+ references: "Dienstübergreifende Referenzen",
+ troubleshooting: "Fehlerbehebung",
+};
diff --git a/_locales/de/variables/index.mdx b/_locales/de/variables/index.mdx
new file mode 100644
index 0000000..30c7040
--- /dev/null
+++ b/_locales/de/variables/index.mdx
@@ -0,0 +1,112 @@
+---
+description: "Legen Sie Secrets auf Service- oder Projektebene fest, verstehen Sie die Merge-Priorität und sehen Sie, welche Werte einen Build versus den laufenden Container erreichen."
+---
+
+
+
+# Variablen & Secrets
+
+Lizard speichert Konfiguration als **Secrets**. Sie gibt es in zwei Bereichen — **Service** (der Standard) und **Projekt** (`--global`) — und sie werden in einer festgelegten Prioritätsreihenfolge in die Umgebung Ihrer App zusammengeführt. Es gibt keinen globalen Bereich auf Workspace-Ebene.
+
+
+
+## Variablen setzen
+
+`lizard secrets set` ist variadisch — Sie können eine oder mehrere auf einmal setzen. Standardmäßig schreibt es in den **verknüpften Service**:
+
+```bash
+lizard secrets set DATABASE_URL=postgres://… LOG_LEVEL=info
+lizard secrets set API_KEY=sk_live_… --service api
+```
+
+Fügen Sie `--global` hinzu, um in den Bereich **Projekt** zu schreiben (jeder Service im Projekt sieht ihn):
+
+```bash
+lizard secrets set NODE_ENV=production --global
+```
+
+
+
+## Auflisten, löschen, importieren
+
+```bash
+lizard secrets list # current scope
+lizard secrets list --show # reveal values
+lizard secrets delete OLD_KEY ANOTHER_KEY # variadic
+cat .env | lizard secrets import # import dotenv from stdin
+```
+
+Im [Befehlsreferenz für `lizard secrets`](/cli/secrets) finden Sie alle Flags.
+
+
+
+## Geltungsbereich
+
+| Gültigkeitsbereich | Befehl | Gespeichert als | Sichtbar für |
+|-------|---------|-----------|------------|
+| **Service** (default) | `lizard secrets set K=v --service ` | `secrets.services[]` | nur dieser Service |
+| **Projekt** (global) | `lizard secrets set K=v --global` | `secrets.shared` | jeder Service im Projekt |
+
+**Verwenden Sie standardmäßig den Service-Bereich.** Ein kompromittierter Service kann seine eigene Umgebung lesen — ein breiterer Bereich bedeutet, dass ohne Grund mehr Anmeldedaten offengelegt werden. Reservieren Sie `--global` für nicht geheime, nachweislich öffentliche Werte wie `LOG_LEVEL`, `NODE_ENV`, Feature-Flags oder ein Frontend-`SENTRY_DSN`. Wenn Sie unsicher sind, ob ein Wert ein Secret ist, behandeln Sie ihn als solches und begrenzen Sie ihn auf den Service.
+
+Für gemeinsam genutzte Ressourcen wie eine Datenbank gilt: Legen Sie die DSN **nicht** in `--global` ab — binden Sie sie pro Consumer mit einer [Referenz](/variables/references):
+
+```bash
+lizard secrets set DATABASE_URL='${{postgres.DATABASE_URL}}' --service api
+lizard secrets set DATABASE_URL='${{postgres.DATABASE_URL}}' --service worker
+```
+
+Die Rotation erfolgt weiterhin einmal auf dem Add-on; jede Referenz wird aktualisiert.
+
+
+
+## Priorität
+
+Wenn derselbe Schlüssel an mehreren Stellen definiert ist, gilt: **Der letzte Schreibvorgang gewinnt**:
+
+```
+addon-issued env < project secrets < project env < app env < app secrets < platform vars
+```
+
+Also **überschreiben App-Secrets Projekt-Secrets**, und **Plattformvariablen** (`PORT`, `LIZARD_SERVICE_NAME`, `LIZARD_PROJECT_ID`, `LIZARD_PUBLIC_DOMAIN`) werden zuletzt angewendet und können nicht überschrieben werden.
+
+
+
+## Build-Zeit vs. Laufzeit
+
+Die meisten Variablenänderungen werden **ohne Rebuild** angewendet — der Service wird neu gestartet, um sie zu übernehmen, was ein paar Sekunden dauert. Ausnahmen sind Build-Zeit-Werte, die in das Image eingebettet werden:
+
+- Änderungen an `VITE_*` und `NEXT_PUBLIC_*` **erzwingen beim nächsten Bereitstellen einen Rebuild**.
+
+Siehe [Build-Pipeline → Rebuild-Trigger](/concepts/build-pipeline#what-triggers-a-rebuild).
+
+
+
+## Überprüfen
+
+Bestätigen Sie, was ein laufender Service tatsächlich sieht:
+
+```bash
+lizard ssh --service api -- env
+```
+
+Wenn ein erwarteter Wert nicht vorhanden ist, siehe [Fehlerbehebung → ein Secret oder eine Referenz wird nicht angezeigt](/variables/troubleshooting/reference-not-applied).
+
+
+
+## Lokale Entwicklung
+
+Führen Sie einen Befehl **lokal** aus, wobei die Projekt- und Service-Secrets des Service eingefügt werden (praktisch für Skripte und Migrationen):
+
+```bash
+lizard run --service api -- node scripts/seed.js
+```
+
+Siehe [`lizard run` vs. `lizard ssh`](/cli/run#run-vs-ssh).
+
+
+
+## Siehe auch
+
+- [Service-übergreifende Referenzen](/variables/references) — lesen Sie die Werte eines Service aus einem anderen, ohne Anmeldedaten per Copy-paste zu duplizieren.
+- [`lizard secrets`](/cli/secrets) — die vollständige Befehlsreferenz.
diff --git a/_locales/de/variables/references.mdx b/_locales/de/variables/references.mdx
new file mode 100644
index 0000000..4a5dfbb
--- /dev/null
+++ b/_locales/de/variables/references.mdx
@@ -0,0 +1,76 @@
+---
+description: "Lies die Werte eines Dienstes oder Add-ons aus einem anderen mit der Syntax ${{name.KEY}}. Wie Referenzen beim Bereitstellen aufgelöst werden und warum sie besser sind als Kopieren."
+---
+
+
+
+# Dienstübergreifende Referenzen
+
+Mit Referenzen kann ein Dienst oder Add-on die Werte eines anderen lesen, ohne Credentials per Copy-and-paste zu duplizieren. Sie halten Secrets an einer Stelle und rotieren automatisch.
+
+## Syntax
+
+```
+${{.}}
+```
+
+- `` — der Name des Zieldienstes oder Add-ons (der im Dashboard angezeigt und in `lizard add -n` verwendet wird).
+- `` — ein Schlüssel in der zusammengeführten Umgebung des Ziels.
+
+Verwende sie überall dort, wo ein Wert akzeptiert wird — am häufigsten in einem Secret:
+
+```bash
+lizard secrets set DATABASE_URL='${{postgres.DATABASE_URL}}' --service api
+```
+
+
+
+## Wie sie aufgelöst werden
+
+- Referenzen werden zur **Deploy-Zeit** anhand der zusammengeführten Umgebung des Ziels aufgelöst.
+- Sie werden per **ID** gespeichert, daher macht ein späteres Umbenennen des Ziels die Referenz nicht kaputt.
+- Eine Referenz auf ein **fehlendes** Ziel oder einen fehlenden Schlüssel wird zu einem **leeren String** aufgelöst — das Bereitstellen schlägt dadurch *nicht* fehl.
+- Nur **zirkuläre** Referenzen werfen einen Fehler.
+
+> Weil ein fehlender Schlüssel stillschweigend leer wird, prüfe nach dem Einrichten einer Referenz immer, ob der Consumer den Wert tatsächlich erhalten hat:
+> ```bash
+> lizard ssh --service api -- env | grep DATABASE_URL
+> ```
+
+Wenn eine Referenz nicht wie erwartet erscheint, siehe [Troubleshooting → ein Secret oder eine Referenz wird nicht angezeigt](/variables/troubleshooting/reference-not-applied).
+
+
+
+## Häufige Muster
+
+**Ein Add-on mit mehreren Diensten verbinden** — auf jedem Consumer binden, damit die Rotation überall weitergegeben wird:
+
+```bash
+lizard secrets set REDIS_URL='${{redis.REDIS_URL}}' --service api
+lizard secrets set REDIS_URL='${{redis.REDIS_URL}}' --service worker
+```
+
+**Einen Wert aus einem anderen Dienst referenzieren** — z. B. eine berechnete URL oder ein Token teilen:
+
+```bash
+lizard secrets set UPSTREAM_URL='${{api.LIZARD_PUBLIC_DOMAIN}}' --service web
+```
+
+**Ein zweites Add-on desselben Typs referenzieren** — verwende seinen generierten Namen:
+
+```bash
+lizard secrets set CACHE_URL='${{redis-winter-otter.REDIS_URL}}' --service api
+```
+
+
+
+## Warum nicht einfach `--global` verwenden?
+
+Wenn du eine gemeinsame DSN im Projektbereich (`--global`) ablegst, ist sie für *jeden* Dienst sichtbar, auch für solche, die sie nicht benötigen. Referenzen geben dir dieselbe Rotation mit einer Single Source of Truth und sorgen zugleich dafür, dass jedes Secret auf die Dienste beschränkt bleibt, die es tatsächlich verwenden. Siehe [Secret-Scopes](/variables#scoping).
+
+
+
+## Siehe auch
+
+- [Variablen & Secrets](/variables) — Scopes und Priorität.
+- [`lizard secrets`](/cli/secrets) — die vollständige Befehlsreferenz.
diff --git a/_locales/de/variables/troubleshooting/_meta.ts b/_locales/de/variables/troubleshooting/_meta.ts
new file mode 100644
index 0000000..bf33223
--- /dev/null
+++ b/_locales/de/variables/troubleshooting/_meta.ts
@@ -0,0 +1,3 @@
+export default {
+ 'reference-not-applied': "Ein Secret oder eine Referenz wird nicht angezeigt",
+};
diff --git a/_locales/de/variables/troubleshooting/reference-not-applied.mdx b/_locales/de/variables/troubleshooting/reference-not-applied.mdx
new file mode 100644
index 0000000..9b195a6
--- /dev/null
+++ b/_locales/de/variables/troubleshooting/reference-not-applied.mdx
@@ -0,0 +1,71 @@
+---
+description: "Dein Secret oder Verweis ist gesetzt, aber der Service sieht ihn nie. Fehlende Ziele werden zu leeren Strings aufgelöst, und die Rangfolge kann einen Wert verdecken."
+---
+
+
+
+# Ein Secret oder Verweis erscheint nicht in meinem Service
+
+Du hast ein Secret oder einen `${{name.KEY}}`-Verweis gesetzt, erneut bereitgestellt, und der laufende Service sieht den erwarteten Wert trotzdem nicht.
+
+
+
+## Was das bedeutet
+
+Der von dir gesetzte Wert ist nie in die zusammengeführte Umgebung des Service gelangt — oder etwas anderes in der Zusammenführung hat ihn überschrieben, bevor die App gestartet wurde.
+
+
+
+## Warum das passieren kann
+
+- **Das Verweisziel oder der Schlüssel existiert nicht.** Ein Verweis auf einen fehlenden Service-/Add-on-Namen oder auf einen Schlüssel, den dieses Add-on nicht bereitstellt, wird zu einem **leeren String** aufgelöst, statt das Deployment fehlschlagen zu lassen. Es gibt keinen Fehler als Hinweis — der Service startet einfach mit einem leeren Wert.
+- **Etwas mit höherer Priorität hat ihn überschrieben.** Werte werden in einer festen Reihenfolge zusammengeführt — `addon-issued env < project secrets < project env < app env < app secrets < platform vars` — daher kann ein projektbezogenes (`--global`) Secret stillschweigend von einem servicebezogenen Secret mit demselben Schlüssel verdeckt werden, und Plattformvariablen (`PORT`, `LIZARD_SERVICE_NAME`, `LIZARD_PROJECT_ID`, `LIZARD_PUBLIC_DOMAIN`) haben immer Vorrang und können überhaupt nicht überschrieben werden.
+- **Du hast einen Build-Zeit-Wert geändert, aber keinen neuen Build ausgeführt.** Die meisten Variablenänderungen werden ohne Rebuild übernommen — der Service startet neu, um sie zu übernehmen. `VITE_*`- und `NEXT_PUBLIC_*`-Werte sind die Ausnahme — sie werden in die gebauten Assets eingebettet, daher übernimmt ein einfacher Neustart keinen neuen Wert; der Service braucht einen frischen Build.
+
+
+
+## Mögliche Lösungen
+
+
+
+### Prüfe, was der laufende Service tatsächlich sieht
+
+Das ist maßgeblich — es zeigt die Umgebung des Live-Containers, nicht das, von dem du glaubst, dass du es gesetzt hast:
+
+```bash
+lizard ssh --service api -- env | grep DATABASE_URL
+```
+
+Wenn der Schlüssel fehlt oder leer ist, ist das Verweisziel bzw. der Schlüssel falsch, oder für diesen Geltungsbereich ist nichts gesetzt. Prüfe den Add-on- oder Service-Namen mit `lizard ps` noch einmal und den Schlüssel anhand der [dokumentierten Variablen](/addons) des Addons.
+
+
+
+### Prüfe auf eine Kollision zwischen Geltungsbereichen
+
+Liste Secrets in beiden Geltungsbereichen auf und vergleiche sie:
+
+```bash
+lizard secrets list --service api --show
+lizard secrets list --global --show
+```
+
+Denke daran: **App-Secrets überschreiben Projekt-Secrets** — wenn ein servicebezogener Wert für denselben Schlüssel existiert, hat er Vorrang vor allem, was mit `--global` gesetzt wurde.
+
+
+
+### Nach einer Änderung zur Build-Zeit neu bauen
+
+Wenn der geänderte Schlüssel `VITE_*` oder `NEXT_PUBLIC_*` ist, löse einen echten Rebuild statt eines Neustarts aus:
+
+```bash
+lizard redeploy --service api
+```
+
+Siehe [Build-Zeit vs. Laufzeit](/variables#build-time-vs-runtime) und [Build-Pipeline → was einen Rebuild auslöst](/concepts/build-pipeline#what-triggers-a-rebuild).
+
+
+
+## Siehe auch
+
+- [Variablen & Secrets](/variables) — Geltungsbereiche und Priorität.
+- [Service-übergreifende Verweise](/variables/references) — Verweissyntax und Auflösung.
diff --git a/_locales/es/_meta.ts b/_locales/es/_meta.ts
new file mode 100644
index 0000000..57d8489
--- /dev/null
+++ b/_locales/es/_meta.ts
@@ -0,0 +1,18 @@
+export default {
+ index: "Introducción",
+ 'getting-started': "Inicio rápido de la app",
+ studio: "Lizard Studio",
+ 'framework-guides': "Guías de frameworks",
+ guides: "Guías",
+ platform: "Límites y operaciones",
+ concepts: "Conceptos básicos",
+ deploy: "Despliegue",
+ variables: "Variables",
+ networking: "Redes",
+ addons: "Addons gestionados",
+ sandboxes: "Sandboxes",
+ observability: "Observabilidad",
+ cli: "Referencia de CLI",
+ dashboard: "Panel de la app",
+ agents: "Agentes de código",
+};
diff --git a/_locales/es/addons/_meta.ts b/_locales/es/addons/_meta.ts
new file mode 100644
index 0000000..c3a9a6b
--- /dev/null
+++ b/_locales/es/addons/_meta.ts
@@ -0,0 +1,6 @@
+export default {
+ index: "Resumen",
+ postgres: "Postgres",
+ redis: "Redis",
+ storage: "Almacenamiento de objetos (S3)",
+};
diff --git a/_locales/es/addons/index.mdx b/_locales/es/addons/index.mdx
new file mode 100644
index 0000000..dbe129d
--- /dev/null
+++ b/_locales/es/addons/index.mdx
@@ -0,0 +1,80 @@
+---
+description: "Aprovisiona Postgres, Redis y almacenamiento compatible con S3 gestionados con un solo comando lizard add, y luego conéctalos a los servicios por referencia."
+---
+
+
+
+# Addons gestionados
+
+Lizard aprovisiona **Postgres**, **Redis** y **almacenamiento de objetos compatible con S3** gestionados con un solo comando. Cada addon vive en tu proyecto, expone un conjunto fijo de variables de entorno y lo consumen tus servicios mediante [referencias](/concepts/architecture#cross-resource-references).
+
+
+
+## Aprovisionar un addon
+
+```bash
+lizard add postgres # one addon
+lizard add postgres redis s3 # several at once
+lizard add --list # show available types
+```
+
+
+
+## Nombres
+
+El **primer** addon de un tipo determinado recibe el tipo sin más como nombre; así que `${{postgres.DATABASE_URL}}` funciona de inmediato. Los addons adicionales del mismo tipo reciben un nombre generado como `postgres-autumn-bear`.
+
+No hay fallback de alias de tipo: una referencia debe usar el nombre **real** del addon. Como las referencias se almacenan por ID, puedes cambiar el nombre de un addon después sin romper los consumidores existentes:
+
+```bash
+lizard service rename --service postgres # addons rename through the same command
+```
+
+
+
+## Consumir un addon
+
+Haz referencia a las variables de un addon desde cualquier servicio. La referencia se resuelve en el momento del deploy y rota automáticamente cuando cambian las credenciales del addon:
+
+```bash
+lizard secrets set DATABASE_URL='${{postgres.DATABASE_URL}}' --service api
+lizard redeploy --service api
+```
+
+Limita la referencia a los servicios que realmente la usan (consulta [Alcance de secretos](/variables#scoping)).
+
+
+
+## Variables por tipo
+
+| Complemento | Variables |
+|-------|-----------|
+| **postgres** | `DATABASE_URL`, `PGHOST`, `PGPORT`, `PGUSER`, `PGPASSWORD`, `PGDATABASE`, `POSTGRES_USER`, `POSTGRES_DB`, `POSTGRES_PASSWORD` |
+| **redis** | `REDIS_URL` |
+| **s3** | `S3_ENDPOINT`, `S3_DEFAULT_BUCKET`, `S3_ACCESS_KEY_ID`, `S3_SECRET_ACCESS_KEY`, `S3_REGION` |
+
+
+
+## Navegadores del panel
+
+El [panel](/dashboard) incluye un navegador de datos para cada addon: un editor SQL/de tablas para Postgres, un navegador de claves para Redis y un navegador de buckets/objetos para S3, para que puedas inspeccionar y editar datos sin salir de Lizard.
+
+
+
+## Almacenamiento
+
+Los volúmenes de datos de los addons son **solo ampliables**. Aumenta la capacidad con:
+
+```bash
+lizard scale --service postgres --storage 8192
+```
+
+
+
+## Guías por tipo
+
+- [Postgres](/addons/postgres)
+- [Redis](/addons/redis)
+- [Almacenamiento de objetos (S3)](/addons/storage)
+
+Para saber por qué un prototipo normalmente necesita los tres a la vez, consulta [el resto del stack que necesita un SaaS](https://lizard.build/blog/google-antigravity-how-to-deploy-your-app-to-production#the-rest-of-the-stack-a-saas-needs).
diff --git a/_locales/es/addons/postgres.mdx b/_locales/es/addons/postgres.mdx
new file mode 100644
index 0000000..6befa67
--- /dev/null
+++ b/_locales/es/addons/postgres.mdx
@@ -0,0 +1,107 @@
+---
+description: "Aprovisiona una base de datos PostgreSQL gestionada en Lizard, conéctala a un servicio por referencia, ejecuta migraciones al desplegar y amplía su almacenamiento."
+---
+
+# Managed Postgres
+
+Una base de datos PostgreSQL gestionada, aprovisionada con un solo comando y conectada a tus servicios por referencia.
+
+
+
+## Aprovisionar
+
+```bash
+lizard add postgres
+```
+
+El primer addon de Postgres se llama `postgres`, así que `${{postgres.DATABASE_URL}}` funciona de inmediato.
+
+
+
+## Variables de entorno
+
+El addon expone un conjunto estándar de variables de conexión:
+
+| Variable | Descripción |
+|----------|-------------|
+| `DATABASE_URL` | Cadena de conexión completa (`postgres://…`) |
+| `PGHOST` | Host |
+| `PGPORT` | Puerto |
+| `PGUSER` | Usuario |
+| `PGPASSWORD` | Contraseña |
+| `PGDATABASE` | Nombre de la base de datos |
+| `POSTGRES_USER` | Alias del usuario |
+| `POSTGRES_DB` | Alias de la base de datos |
+| `POSTGRES_PASSWORD` | Alias de la contraseña |
+
+
+
+## Conectar un servicio
+
+Haz referencia a la cadena de conexión desde el servicio consumidor y vuelve a desplegar:
+
+```bash
+lizard secrets set DATABASE_URL='${{postgres.DATABASE_URL}}' --service api
+lizard redeploy --service api
+```
+
+La referencia se resuelve en el momento del despliegue y rota automáticamente si cambian las credenciales del addon: cada consumidor obtiene el nuevo valor en su siguiente despliegue.
+
+Verifica la conectividad sin imprimir la cadena de conexión:
+
+```bash
+lizard run --service api -- sh -c 'psql "$DATABASE_URL" -c "SELECT 1"'
+```
+
+
+
+## Ejecutar migraciones al desplegar
+
+Usa un comando previo al despliegue para las migraciones. Haz que las migraciones se puedan reintentar de forma segura y que sean compatibles tanto con la versión antigua como con la nueva de la aplicación:
+
+```bash
+lizard service set api --set preDeployCommand="npm run migrate"
+lizard redeploy --service api
+```
+
+Para una app de Django, el comando es `python manage.py migrate`; [hosting de apps Python](https://lizard.build/blog/python-app-hosting#deploying-django) tiene el equivalente para Flask y FastAPI.
+
+
+
+## Explorar y consultar datos
+
+Abre el **editor de Postgres** en el panel (`lizard open`) para ejecutar SQL y explorar tablas directamente. Para trabajo local puntual, ejecuta un comando con el entorno inyectado del servicio:
+
+```bash
+lizard run --service api -- sh -c 'exec psql "$DATABASE_URL"'
+```
+
+
+
+## Ampliar almacenamiento
+
+Los volúmenes de datos solo pueden crecer:
+
+```bash
+lizard scale --service postgres --storage 8192
+```
+
+
+
+## Varias bases de datos
+
+Al añadir un segundo Postgres, recibe un nombre generado (p. ej., `postgres-autumn-bear`). Haz referencia a él explícitamente:
+
+```bash
+lizard add postgres
+lizard secrets set ANALYTICS_URL='${{postgres-autumn-bear.DATABASE_URL}}' --service api
+```
+
+
+
+## Ver también
+
+- [Managed Addons](/addons) — nomenclatura, referencias y los exploradores del panel.
+- [Referencias entre servicios](/variables/references) — sintaxis y resolución de referencias.
+
+Consulta [almacenamiento y recuperación](/platform/storage-and-recovery) para planificar copias de seguridad y restauración. El `lizard run` local requiere `psql` y un endpoint de base de datos accesible; no se ejecuta dentro del servicio desplegado.
diff --git a/_locales/es/addons/redis.mdx b/_locales/es/addons/redis.mdx
new file mode 100644
index 0000000..090e9a4
--- /dev/null
+++ b/_locales/es/addons/redis.mdx
@@ -0,0 +1,79 @@
+---
+description: "Añade una instancia de Managed Redis para caché, colas, limitación de tasa y pub/sub, y conéctala a un servicio con una sola referencia."
+---
+
+# Managed Redis
+
+Una instancia de Managed Redis para caché, colas, limitación de tasa y pub/sub.
+
+
+
+## Aprovisionar
+
+```bash
+lizard add redis
+```
+
+El primer addon de Redis se llama `redis`, así que `${{redis.REDIS_URL}}` funciona de inmediato.
+
+
+
+## Variables de entorno
+
+| Variable | Descripción |
+|----------|-------------|
+| `REDIS_URL` | Cadena de conexión completa (`redis://…`) |
+
+
+
+## Conectar un servicio
+
+```bash
+lizard secrets set REDIS_URL='${{redis.REDIS_URL}}' --service api
+lizard redeploy --service api
+```
+
+La referencia se resuelve en el momento del despliegue y rota junto con las credenciales del addon.
+
+
+
+## Usos comunes
+
+- **Caché** — almacena resultados calculados indexados por solicitud.
+- **Cola / worker** — combina Redis con un [servicio en modo worker](/deploy/workers) que consume trabajos.
+- **Limitación de tasa / sesiones** — estado compartido rápido entre [réplicas](/deploy/scaling).
+
+```bash
+# A worker that drains a Redis queue
+lizard add -r your-org/worker -n jobs
+lizard service set jobs --set containerPort=0
+lizard secrets set REDIS_URL='${{redis.REDIS_URL}}' --service jobs
+lizard redeploy --service jobs
+```
+
+
+
+## Explorar claves
+
+Abre el **navegador de Redis** en el panel (`lizard open`) para inspeccionar claves y valores. Para acceso local:
+
+```bash
+lizard run --service api -- sh -c 'exec redis-cli -u "$REDIS_URL"'
+```
+
+
+
+## Ampliar almacenamiento
+
+```bash
+lizard scale --service redis --storage 4096
+```
+
+
+
+## Ver también
+
+- [Managed Addons](/addons) — nombres, referencias y los navegadores del panel.
+- [Background Workers](/deploy/workers) — combinar Redis con un worker que consume colas.
+
+`lizard run` inicia el comando localmente con el entorno del servicio seleccionado. Instala `redis-cli` localmente y comprueba que se pueda acceder al endpoint.
diff --git a/_locales/es/addons/storage.mdx b/_locales/es/addons/storage.mdx
new file mode 100644
index 0000000..51d737a
--- /dev/null
+++ b/_locales/es/addons/storage.mdx
@@ -0,0 +1,110 @@
+---
+description: "Almacenamiento de objetos compatible con S3 para cargas, recursos y copias de seguridad. Obtén un bucket de lectura pública y variables de conexión con un solo lizard add s3."
+---
+
+
+
+# Almacenamiento de objetos (S3)
+
+Almacenamiento de objetos compatible con S3 para cargas, recursos y copias de seguridad. Al aprovisionar un addon `s3` también se crea un **bucket de lectura pública llamado `default`**, para que puedas servir archivos sin configuración adicional.
+
+
+
+## Aprovisionar
+
+```bash
+lizard add s3
+```
+
+El primer addon de S3 se llama `s3`, así que `${{s3.S3_ENDPOINT}}` y similares funcionan de inmediato.
+
+
+
+## Variables de entorno
+
+| Variable | Descripción |
+|----------|-------------|
+| `S3_ENDPOINT` | URL del endpoint compatible con S3 |
+| `S3_DEFAULT_BUCKET` | El nombre del bucket creado automáticamente (`default`) |
+| `S3_ACCESS_KEY_ID` | Clave de acceso |
+| `S3_SECRET_ACCESS_KEY` | Clave secreta |
+| `S3_REGION` | Región |
+
+
+
+## Conectar un servicio
+
+```bash
+lizard secrets set \
+ S3_ENDPOINT='${{s3.S3_ENDPOINT}}' \
+ S3_DEFAULT_BUCKET='${{s3.S3_DEFAULT_BUCKET}}' \
+ S3_ACCESS_KEY_ID='${{s3.S3_ACCESS_KEY_ID}}' \
+ S3_SECRET_ACCESS_KEY='${{s3.S3_SECRET_ACCESS_KEY}}' \
+ S3_REGION='${{s3.S3_REGION}}' \
+ --service api
+lizard redeploy --service api
+```
+
+
+
+## Usar un AWS SDK
+
+El endpoint es compatible con S3. Configura direccionamiento de **estilo path**:
+
+```ts
+import { S3Client } from "@aws-sdk/client-s3";
+
+const s3 = new S3Client({
+ endpoint: process.env.S3_ENDPOINT,
+ region: process.env.S3_REGION,
+ forcePathStyle: true, // required
+ credentials: {
+ accessKeyId: process.env.S3_ACCESS_KEY_ID!,
+ secretAccessKey: process.env.S3_SECRET_ACCESS_KEY!,
+ },
+});
+```
+
+
+
+## Archivos públicos
+
+Los objetos en cualquier bucket **público** se sirven sin autenticación de dos maneras:
+
+1. **URL del gateway** (se muestra en el panel):
+ ```
+ https://s3-.onlizard.com///
+ ```
+2. **Proxy de la plataforma** (el host del panel, con encabezados de caché inmutables de larga duración):
+ ```
+ /api/s3//public//
+ ```
+
+Todo lo que se suba al bucket `default` es público inmediatamente en:
+
+```
+/api/s3//public/default/
+```
+
+
+
+## Explorar objetos
+
+Abre el **navegador S3** en el panel (`lizard open`) para cargar, descargar y administrar objetos y buckets.
+
+> **Los cambios de ACL del bucket** (hacer un bucket público/privado) todavía no están en la CLI; gestiónalos desde el panel.
+
+
+
+## Ampliar almacenamiento
+
+```bash
+lizard scale --service s3 --storage 16384
+```
+
+
+
+## Ver también
+
+- [Addons gestionados](/addons) — nombres, referencias y los navegadores del panel.
+- [Referencias entre servicios](/variables/references) — sintaxis de referencias y resolución.
diff --git a/_locales/es/agents.mdx b/_locales/es/agents.mdx
new file mode 100644
index 0000000..e0e8fa2
--- /dev/null
+++ b/_locales/es/agents.mdx
@@ -0,0 +1,92 @@
+---
+description: "Controla Lizard desde un agente de programación con IA: lee Lizard Skill, descubre los esquemas de comandos con --json y despliega mediante Lizard CLI."
+---
+
+
+
+# Agentes de programación
+
+Lizard está diseñado para ser manejado por agentes de programación con IA tan fácilmente como por humanos. La CLI incluye una **skill integrada** que le enseña a un agente toda la plataforma, y cada comando es **autodescriptivo** mediante `--json` para que los agentes nunca tengan que adivinar.
+
+
+
+## La skill integrada
+
+La guía de uso autoritativa vive dentro de la CLI y está versionada con ella, por lo que siempre coincide con la versión instalada. Un agente la lee con:
+
+```bash
+lizard skills get core --json
+```
+
+Esto devuelve `{ name, frontmatter, content, … }` — `content` es la guía completa (pipeline de build, precedencia de env, addons, descubrimiento, códigos de salida). Subcomandos relacionados:
+
+```bash
+lizard skills list # available embedded skills
+lizard skills get core # the core guide
+lizard skills path # where skills are stored
+```
+
+Como la guía viene incluida con el binario, `lizard upgrade` también actualiza las instrucciones del agente.
+
+
+
+## Comandos autodescriptivos
+
+Los agentes descubren la forma exacta de los flags en tiempo de ejecución en lugar de depender de una sintaxis memorizada:
+
+```bash
+lizard --help --json # full command tree + exit codes
+lizard --help --json # a specific command's schema
+```
+
+Consulta [JSON y automatización](/cli/json).
+
+
+
+## Inicialización dentro de un agente
+
+Un flujo típico de un agente:
+
+1. **Cargar la guía:** `lizard skills get core --json` → leer `content`.
+2. **Verificar la autenticación de forma optimista:** ejecuta la tarea del usuario; con el código de salida `2`, ejecuta `lizard login`, entrega al usuario la URL impresa y luego reintenta.
+3. **Resolver el contexto antes de modificar:** `lizard status` (enlace cwd) y `lizard ps --json` (servicios).
+4. **Actuar** usando la guía — `add`, `up`, `secrets`, `domain`, etc., siempre con `--json`.
+
+Si el binario `lizard` no está presente, instálalo primero:
+
+```bash
+npm install -g @lizard-build/cli
+```
+
+
+
+## Convenciones que los agentes deben seguir
+
+- **Pasa siempre `--json`** en llamadas no interactivas.
+- **Confirma las acciones destructivas** (eliminar servicio, quitar addon, sobrescribir un secreto de todo el proyecto, reinicio de prod) con el usuario — los propios prompts de la CLI solo se activan en un TTY.
+- **Limita los secretos al servicio que los consume** por defecto; reserva `--global` para valores demostrablemente públicos. Consulta [Variables y secretos](/variables#scoping).
+- **No escribas Dockerfiles sin que se soliciten** — lizardpack detecta automáticamente la mayoría de los stacks. Prueba primero un despliegue. Consulta [Pipeline de build](/concepts/build-pipeline).
+- **No uses `lizard up` para cambiar un servicio respaldado por git a upload** — usa `service set` + `redeploy`.
+
+
+
+## Integraciones con editores
+
+Lizard Skill se distribuye como un bootstrap público para que los agentes en editores y asistentes puedan instalarla y cargarla bajo demanda, y luego manejar la misma CLI descrita a lo largo de esta documentación. La CLI es la única fuente de verdad — no hay una API separada de agentes que aprender.
+
+Eso también cubre los IDE con IA: escriben y prueban una app, pero no la alojan. Consulta [desplegar una app creada en Google Antigravity](https://lizard.build/blog/google-antigravity-how-to-deploy-your-app-to-production#deploy-an-antigravity-app-to-production-without-typing-a-command), donde todo el despliegue se ejecuta desde dos prompts.
+
+
+
+## Ver también
+
+- [`lizard skills`](/cli/skills) — la referencia completa de comandos.
+- [JSON y automatización](/cli/json) — salida `--json` y descubrimiento de esquemas.
+- [Variables y secretos](/variables#scoping) — convenciones de alcance de secretos que los agentes deben seguir.
+- [Despliega tu app desde Claude Code](https://lizard.build/blog/deploy-from-claude-code#deploy-from-claude-code-in-3-steps) — el mismo bootstrap escrito como guía paso a paso, con los prompts que lo impulsan.
+
+
+
+## Alojar tu propio servidor MCP
+
+Un agente que usa Lizard CLI y una aplicación que expone MCP son flujos de trabajo separados. Los comandos de CLI anteriores no proporcionan un transporte MCP. Para desplegar tu propio servidor con Streamable HTTP, sigue la [guía de MCP remoto](/guides/deploy-mcp-server).
diff --git a/_locales/es/cli/_meta.ts b/_locales/es/cli/_meta.ts
new file mode 100644
index 0000000..d787f06
--- /dev/null
+++ b/_locales/es/cli/_meta.ts
@@ -0,0 +1,46 @@
+export default {
+ index: "Resumen",
+ json: "JSON y automatización",
+ '-- auth': { type: "separator", title: "Autenticación y cuenta" },
+ login: "login",
+ logout: "logout",
+ whoami: "whoami",
+ workspace: "workspace",
+ '-- projects': { type: "separator", title: "Proyectos y vinculación" },
+ init: "init",
+ link: "link",
+ unlink: "unlink",
+ status: "status",
+ project: "project",
+ config: "config",
+ '-- create': { type: "separator", title: "Creación de servicios y addons" },
+ add: "add",
+ '-- deploy': { type: "separator", title: "Despliegue" },
+ up: "up",
+ redeploy: "redeploy",
+ restart: "restart",
+ '-- svc': { type: "separator", title: "Configuración del servicio" },
+ service: "service",
+ port: "port",
+ scale: "scale",
+ '-- secrets': { type: "separator", title: "Secrets" },
+ secrets: "secrets",
+ '-- domains': { type: "separator", title: "Dominios" },
+ domain: "domain",
+ '-- observability': { type: "separator", title: "Logs, métricas y eventos" },
+ logs: "logs",
+ metrics: "metrics",
+ events: "events",
+ ps: "ps",
+ '-- running': { type: "separator", title: "Ejecución de comandos" },
+ run: "run",
+ ssh: "ssh",
+ '-- github': { type: "separator", title: "GitHub" },
+ git: "git",
+ '-- misc': { type: "separator", title: "Varios" },
+ regions: "regions",
+ open: "open",
+ docs: "docs",
+ upgrade: "upgrade",
+ skills: "skills",
+};
diff --git a/_locales/es/cli/add.mdx b/_locales/es/cli/add.mdx
new file mode 100644
index 0000000..26431f9
--- /dev/null
+++ b/_locales/es/cli/add.mdx
@@ -0,0 +1,78 @@
+---
+description: "lizard add crea un servicio desde un repositorio de GitHub, un servicio vacío o un addon gestionado. Referencia completa de flags con ejemplos prácticos."
+---
+
+# lizard add
+
+Añade una base de datos, servicio o repositorio al proyecto.
+
+
+
+## Uso
+
+```bash
+lizard add [types...] [flags]
+```
+
+
+
+## Banderas
+
+| Bandera | Descripción |
+|------|-------------|
+| `-r, --repo ` | Crear un servicio desde un repositorio de GitHub |
+| `-s, --service ` | Crear un servicio vacío |
+| `-a, --addon ` | Añadir addons gestionados (`postgres` / `redis` / `s3`) |
+| `-n, --name ` | Nombre usado en las referencias de `${{name.KEY}}` |
+| `-v, --variables ` | Inicializar una variable de entorno (repetible) |
+| `--region ` | Región en la que aprovisionar |
+| `--no-deploy` | Adjuntar repositorio pero omitir la primera compilación |
+| `--list` | Mostrar los tipos de base de datos disponibles |
+
+
+
+## Ejemplos
+
+
+
+### Crear un servicio desde un repositorio de GitHub
+
+```bash
+lizard add -r your-org/your-app
+```
+
+Esto crea un servicio con código fuente en `github`, clona el repositorio, detecta automáticamente el stack, lo compila y devuelve una URL activa.
+
+
+
+### Aprovisionar addons
+
+```bash
+lizard add postgres # one addon
+lizard add postgres redis s3 # several at once
+lizard add --list # show available types
+```
+
+
+
+### Crear un servicio vacío
+
+```bash
+lizard add -s worker
+```
+
+
+
+### Asignar un nombre a un servicio e inicializar variables
+
+```bash
+lizard add -r your-org/monorepo -n api
+```
+
+
+
+## Véase también
+
+- [Desplegar desde GitHub](/deploy/github) — conectar repositorios, acceso privado y redespliegue automático al hacer push
+- [Addons gestionados](/addons) — aprovisionamiento, nombres y uso de postgres/redis/s3
+- [lizard up](/cli/up) — subir y desplegar el directorio actual en lugar de vincular un repositorio
diff --git a/_locales/es/cli/config.mdx b/_locales/es/cli/config.mdx
new file mode 100644
index 0000000..818b6db
--- /dev/null
+++ b/_locales/es/cli/config.mdx
@@ -0,0 +1,63 @@
+---
+description: "lizard config apply envía un archivo lizard-config.json a tu proyecto, con una opción --dry-run para previsualizar primero los cambios."
+---
+
+# lizard config
+
+Aplica un archivo `lizard-config.json` al proyecto.
+
+
+
+## Uso
+
+```bash
+lizard config apply [flags]
+```
+
+
+
+## Subcomandos
+
+### `lizard config apply`
+
+Aplica un archivo `lizard-config.json` al proyecto.
+
+| Bandera | Descripción |
+|------|-------------|
+| `-f, --file ` | Archivo de configuración (por defecto `lizard-config.json`) |
+| `--dry-run` | Muestra qué cambiaría sin aplicar |
+
+
+
+## Ejemplos
+
+
+
+### Aplicar el archivo de configuración predeterminado
+
+```bash
+lizard config apply
+```
+
+
+
+### Aplicar un archivo de configuración desde una ruta personalizada
+
+```bash
+lizard config apply -f ./configs/prod.json
+```
+
+
+
+### Previsualizar cambios sin aplicarlos
+
+```bash
+lizard config apply --dry-run
+```
+
+
+
+## Ver también
+
+- [lizard service](/cli/service) — gestionar servicios individuales
+- [Architecture](/concepts/architecture) — cómo se relacionan los workspaces, proyectos y servicios
diff --git a/_locales/es/cli/docs.mdx b/_locales/es/cli/docs.mdx
new file mode 100644
index 0000000..12c38df
--- /dev/null
+++ b/_locales/es/cli/docs.mdx
@@ -0,0 +1,33 @@
+---
+description: "lizard docs abre la documentación de Lizard en tu navegador predeterminado directamente desde la terminal. Uso y ejemplos."
+---
+
+# lizard docs
+
+Abre la documentación en el navegador.
+
+
+
+## Uso
+
+```bash
+lizard docs
+```
+
+
+
+## Ejemplos
+
+
+
+### Abrir el sitio de documentación
+
+```bash
+lizard docs
+```
+
+
+
+## Ver también
+
+- [Referencia de CLI](/cli) — instalación, indicadores globales y códigos de salida
diff --git a/_locales/es/cli/domain.mdx b/_locales/es/cli/domain.mdx
new file mode 100644
index 0000000..f1dfec8
--- /dev/null
+++ b/_locales/es/cli/domain.mdx
@@ -0,0 +1,104 @@
+---
+description: "lizard domain muestra el dominio de un servicio, genera un subdominio de onlizard.com, o adjunta y verifica un hostname personalizado con TLS automático."
+---
+
+# lizard domain
+
+Muestra el dominio actual o adjunta uno personalizado.
+
+
+
+## Uso
+
+```bash
+lizard domain [hostname] [flags]
+```
+
+El hostname es un argumento posicional: no existe el subcomando `add`. Ejecutar `lizard domain` sin argumentos muestra el dominio actual del servicio.
+
+
+
+## Banderas
+
+| Bandera | Descripción |
+|------|-------------|
+| `-s, --service ` | Servicio |
+| `--port ` | Puerto que se expondrá |
+
+
+
+## Subcomandos
+
+### `lizard domain generate`
+
+Genera un subdominio nuevo de `*.onlizard.com`.
+
+### `lizard domain verify `
+
+Comprueba el registro TXT y activa el dominio. TLS se aprovisiona automáticamente.
+
+### `lizard domain delete `
+
+Elimina un dominio (alias `rm`).
+
+| Bandera | Descripción |
+|------|-------------|
+| `-y, --yes` | Omitir confirmación |
+
+
+
+## Ejemplos
+
+
+
+### Mostrar el dominio actual
+
+```bash
+lizard domain
+```
+
+
+
+### Generar un subdominio
+
+```bash
+lizard domain generate
+```
+
+
+
+### Adjuntar un dominio personalizado
+
+```bash
+lizard domain app.example.com --service web
+```
+
+Lizard devuelve los registros DNS que debes crear (un registro `CNAME` para el hostname y un registro `TXT` para la verificación). Agrégalos en tu proveedor de DNS y luego verifica:
+
+```bash
+lizard domain verify app.example.com
+```
+
+
+
+### Adjuntar un dominio a un puerto específico
+
+```bash
+lizard domain app.example.com --service web --port 8080
+```
+
+
+
+### Eliminar un dominio
+
+```bash
+lizard domain delete app.example.com
+lizard domain rm app.example.com --yes
+```
+
+
+
+## Véase también
+
+- [Networking](/networking) — dominios generados, TLS y servicios worker
+- [Desplegar a regiones](/deploy/regions) — selección de región para servicios
diff --git a/_locales/es/cli/events.mdx b/_locales/es/cli/events.mdx
new file mode 100644
index 0000000..1da918f
--- /dev/null
+++ b/_locales/es/cli/events.mdx
@@ -0,0 +1,60 @@
+---
+description: "lizard events muestra el historial de despliegues de un servicio y el estado actual de las réplicas, con opciones para limitar las entradas o apuntar a un servicio."
+---
+
+# lizard events
+
+Muestra el historial de despliegues y el estado de las réplicas.
+
+
+
+## Uso
+
+```bash
+lizard events [flags]
+```
+
+
+
+## Banderas
+
+| Bandera | Descripción |
+|------|-------------|
+| `-n, --limit ` | Número de entradas que se mostrarán (por defecto 10) |
+| `-s, --service ` | Muestra los eventos de un servicio específico |
+
+
+
+## Ejemplos
+
+
+
+### Mostrar el historial de despliegues y el estado de las réplicas
+
+```bash
+lizard events
+```
+
+
+
+### Mostrar eventos de un servicio específico
+
+```bash
+lizard events --service api
+```
+
+
+
+### Mostrar más entradas
+
+```bash
+lizard events --limit 25
+```
+
+
+
+## Véase también
+
+- [Events & History](/observability/events) — qué cubre cada entrada y cómo se corresponde con la vista Despliegues del panel
+- [lizard ps](/cli/ps) — una vista rápida del estado y la URL de todos los servicios
+- [Despliegues](/concepts/deployments) — el ciclo de vida del despliegue
diff --git a/_locales/es/cli/git.mdx b/_locales/es/cli/git.mdx
new file mode 100644
index 0000000..0e79fde
--- /dev/null
+++ b/_locales/es/cli/git.mdx
@@ -0,0 +1,80 @@
+---
+description: "lizard git conecta la GitHub App, informa el estado del repositorio y cambia un servicio a otra rama con un redespliegue."
+---
+
+# lizard git
+
+Administra la conexión de GitHub para el proyecto vinculado y sus servicios.
+
+
+
+## Uso
+
+```bash
+lizard git connect
+lizard git status
+lizard git checkout [flags]
+```
+
+
+
+## Subcomandos
+
+### `lizard git connect`
+
+Conecta la GitHub App para acceder a repositorios privados.
+
+### `lizard git status`
+
+Muestra la conexión de GitHub y el estado del repositorio.
+
+### `lizard git checkout `
+
+Cambia un servicio a una rama diferente y vuelve a desplegarlo.
+
+| Bandera | Descripción |
+|------|-------------|
+| `--detach` | Omitir la transmisión de logs |
+
+
+
+## Ejemplos
+
+
+
+### Conectar la GitHub App
+
+```bash
+lizard git connect
+```
+
+
+
+### Comprobar la conexión y el estado del repositorio
+
+```bash
+lizard git status
+```
+
+
+
+### Cambiar un servicio a una rama diferente
+
+```bash
+lizard git checkout api staging
+```
+
+
+
+### Cambiar de rama sin transmitir logs
+
+```bash
+lizard git checkout api staging --detach
+```
+
+
+
+## Ver también
+
+- [Desplegar desde GitHub](/deploy/github) — conectar un repo, redespliegue automático al hacer push y configuración de monorepo
+- [lizard add](/cli/add) — crear un servicio desde un repo de GitHub
diff --git a/_locales/es/cli/index.mdx b/_locales/es/cli/index.mdx
new file mode 100644
index 0000000..87cd490
--- /dev/null
+++ b/_locales/es/cli/index.mdx
@@ -0,0 +1,88 @@
+---
+description: "Instala y actualiza lizard CLI, autentícate y consulta las banderas globales, los códigos de salida y el descubrimiento del esquema en tiempo de ejecución para cada comando."
+---
+
+
+
+# Referencia de CLI
+
+La CLI de `lizard` es la interfaz principal de la plataforma. Esta página cubre la instalación, las banderas globales, los códigos de salida y el descubrimiento en tiempo de ejecución. Cada comando tiene su propia página de referencia en la barra lateral: consulta [`lizard up`](/cli/up), [`lizard service`](/cli/service), [`lizard secrets`](/cli/secrets) y el resto.
+
+> Referencia generada con la CLI **v0.3.62**. Ejecuta `lizard --help --json` para obtener el esquema exacto de cualquier comando, correspondiente a tu versión.
+
+
+
+## Instalar y actualizar
+
+```bash
+npm install -g @lizard-build/cli
+lizard --version
+lizard upgrade # update to the latest version
+lizard upgrade --check # check without installing
+```
+
+Usa siempre el binario `lizard` instalado globalmente, **no** `npx`. Consulta [Quickstart](/getting-started#1-install-the-cli) para corregir errores de permisos.
+
+
+
+## Autenticación
+
+```bash
+lizard login # browser OAuth
+lizard login --token lzd_xxx # token auth
+lizard logout
+lizard whoami # current user, workspace, linked project
+```
+
+En CI, configura `LIZARD_TOKEN` en el entorno en lugar de ejecutar `login`.
+
+
+
+## Banderas globales
+
+| Bandera | Descripción |
+|------|-------------|
+| `-V, --version` | Muestra la versión de la CLI |
+| `--json` | Salida legible por máquinas. Combínala con `--help` para volcar el esquema de un comando |
+
+La mayoría de los comandos también aceptan `-p, --project`, `-s, --service` y `-w, --workspace` para apuntar a un recurso específico en lugar del enlazado.
+
+
+
+## Códigos de salida
+
+| Código | Significado | Qué hacer |
+|------|---------|------------|
+| `0` | éxito | continuar |
+| `1` | error genérico | lee el mensaje |
+| `2` | auth (401/403) | ejecuta `lizard login` |
+| `3` | no encontrado (404) | comprueba el nombre con `lizard ps` / `lizard project list` |
+| `4` | tiempo de espera agotado (408/504) | reintenta |
+| `5` | cancelado por el usuario | detente |
+
+
+
+## Descubrimiento en tiempo de ejecución
+
+La CLI se autodocumenta. Para ver el árbol completo de comandos, las banderas globales y los códigos de salida:
+
+```bash
+lizard --help --json
+```
+
+Para ver los argumentos y opciones exactos de cualquier comando o subcomando:
+
+```bash
+lizard --help --json
+lizard --help --json # e.g. lizard service set --help --json
+```
+
+Esto siempre refleja tu versión instalada; es preferible a adivinar la forma de las banderas. También es como un agente aprende la CLI sin haber sido entrenado con ella: consulta [despliegue desde Claude Code](https://lizard.build/blog/deploy-from-claude-code).
+
+
+
+## Configuración y estado
+
+- La CLI almacena la autenticación y el enlace del proyecto del directorio actual en `~/.lizard/config.json`.
+- `lizard status` muestra el enlace de workspace/proyecto/servicio del cwd (no requiere autenticación).
+- `lizard config apply` aplica un archivo `lizard-config.json` a un proyecto (usa `--dry-run` para previsualizar).
diff --git a/_locales/es/cli/init.mdx b/_locales/es/cli/init.mdx
new file mode 100644
index 0000000..6e51cab
--- /dev/null
+++ b/_locales/es/cli/init.mdx
@@ -0,0 +1,66 @@
+---
+description: "lizard init crea o selecciona un proyecto y lo vincula al directorio actual, incluida la forma explícita que necesitas en CI."
+---
+
+# lizard init
+
+Crea o selecciona un proyecto y lo vincula al directorio actual.
+
+
+
+## Uso
+
+```bash
+lizard init [flags]
+```
+
+
+
+## Banderas
+
+| Bandera | Descripción |
+|------|-------------|
+| `-n, --name ` | Nombre del proyecto (créalo si no existe) |
+| `-w, --workspace ` | ID, slug o nombre del workspace |
+| `--force` | Volver a vincular aunque ya esté vinculado |
+
+
+
+## Ejemplos
+
+
+
+### Vincular el directorio actual de forma interactiva
+
+```bash
+lizard init
+```
+
+
+
+### Vincular explícitamente en CI
+
+`lizard up` ejecutará `init` por ti en un TTY, pero en un entorno no TTY (CI) devuelve un error en lugar de crear un proyecto silenciosamente. Vincúlalo explícitamente primero:
+
+```bash
+export LIZARD_TOKEN=lzd_xxx
+lizard init --name my-project
+lizard up --ci --service api
+```
+
+
+
+### Volver a vincular un directorio que ya está vinculado
+
+```bash
+lizard init --name my-project --force
+```
+
+
+
+## Véase también
+
+- [lizard link](/cli/link) — asocia el directorio actual con un proyecto existente en lugar de crear uno
+- [lizard status](/cli/status) — muestra el workspace, proyecto y servicio vinculados para el directorio actual
+- [lizard up](/cli/up) — sube e implementa el directorio actual
+- [Core Conceptos](/concepts/architecture) — proyectos, servicios y el pipeline de compilación
diff --git a/_locales/es/cli/json.mdx b/_locales/es/cli/json.mdx
new file mode 100644
index 0000000..f10cc49
--- /dev/null
+++ b/_locales/es/cli/json.mdx
@@ -0,0 +1,92 @@
+---
+description: "Programa el lizard CLI: --json en cada comando, eventos delimitados por líneas para compilaciones en streaming, descubrimiento de esquemas y autenticación por token en CI."
+---
+
+
+
+# JSON y automatización
+
+La CLI está hecha para automatizarse con scripts. Pasa `--json` para obtener salida legible por máquinas, contrólala desde CI con un token y descubre el esquema de cualquier comando en tiempo de ejecución.
+
+El otro lector de esta salida es un agente de programación con IA: [despliegue desde Claude Code](https://lizard.build/blog/deploy-from-claude-code#how-lizard-handles-claude-code-deployment) muestra qué hace con el JSON de una compilación fallida.
+
+
+
+## `--json` en todas partes
+
+Añade `--json` a cualquier comando para obtener salida estructurada. La CLI también cambia a JSON automáticamente cuando stdout no es un TTY.
+
+```bash
+lizard ps --json
+lizard secrets list --json
+lizard metrics --json
+```
+
+
+
+### Comandos en streaming
+
+Para los comandos en streaming (`lizard up` sin `--detach`), `--json` emite **un objeto JSON por línea**:
+
+```json
+{ "event": "log", "line": "Step 1/8 : FROM node:20" }
+{ "event": "log", "line": "..." }
+{ "event": "deployed", "status": "running", "url": "https://app.onlizard.com" }
+```
+
+El stream termina con `done`, o `error` / `failed`. `lizard up` además emite un evento final `deployed` / `failed` / `deploying` con `status` y `url` (que puede ser `null`).
+
+
+
+### `logs --json` es una instantánea, no un stream
+
+`lizard logs --json` devuelve las **últimas 200 líneas** (se puede cambiar con `--tail N`, máximo 1000) y sale. No esperes más salida de él.
+
+Para un incidente específico, usa `--restart latest` o `--restart `.
+
+
+
+## Descubrimiento de esquemas
+
+Muestra los argumentos, opciones y códigos de salida exactos de cualquier comando:
+
+```bash
+lizard --help --json # whole tree + global flags + exit codes
+lizard service set --help --json # one command
+```
+
+La forma de la respuesta es `{ cli, version, command: { arguments, options, subcommands }, globalOptions, exitCodes }`. Como se genera a partir del binario instalado, siempre coincide con tu versión; úsala de preferencia en lugar de fijar flags manualmente.
+
+
+
+## Uso en CI / sin interfaz
+
+Autentícate con un token y vincula el proyecto explícitamente (`up` sin interfaz no creará un proyecto automáticamente):
+
+```bash
+# Set LIZARD_TOKEN through your CI secret store.
+lizard init --name my-project
+lizard up --ci --service api --detach
+```
+
+Comprueba los códigos de salida para decidir el flujo de tu pipeline:
+
+| Código | Significado |
+|------|---------|
+| `0` | éxito |
+| `1` | error genérico |
+| `2` | auth — token ausente/caducado |
+| `3` | no encontrado |
+| `4` | tiempo de espera agotado |
+| `5` | cancelado |
+
+```bash
+if lizard redeploy --service api --json; then
+ echo "Deploy succeeded"
+else
+ status=$?
+ echo "Deploy failed with code $status" >&2
+ lizard logs --build --json || true
+ exit "$status"
+fi
+```
diff --git a/_locales/es/cli/link.mdx b/_locales/es/cli/link.mdx
new file mode 100644
index 0000000..4fa7303
--- /dev/null
+++ b/_locales/es/cli/link.mdx
@@ -0,0 +1,62 @@
+---
+description: "lizard link asocia el directorio actual con un proyecto existente y, opcionalmente, con un servicio o espacio de trabajo específico."
+---
+
+# lizard link
+
+Asocia el directorio actual con un proyecto existente (y opcionalmente con un servicio).
+
+
+
+## Uso
+
+```bash
+lizard link [service] [flags]
+```
+
+
+
+## Indicadores
+
+| Bandera | Descripción |
+|------|-------------|
+| `-p, --project ` | Nombre del proyecto, slug o ID |
+| `-s, --service ` | Servicio para vincular |
+| `-w, --workspace ` | Espacio de trabajo |
+
+
+
+## Ejemplos
+
+
+
+### Vincular a un proyecto existente
+
+```bash
+lizard link --project my-project
+```
+
+
+
+### Vincular a un proyecto y a un servicio específico
+
+```bash
+lizard link my-service --project my-project
+```
+
+
+
+### Vincular dentro de un espacio de trabajo específico
+
+```bash
+lizard link --project my-project --workspace my-workspace
+```
+
+
+
+## Ver también
+
+- [lizard init](/cli/init) — crea o selecciona un proyecto y lo vincula en un solo paso
+- [lizard unlink](/cli/unlink) — elimina el vínculo del directorio actual
+- [lizard status](/cli/status) — muestra el espacio de trabajo, proyecto y servicio vinculados
+- [Architecture: Proyecto](/concepts/architecture) — cómo funciona el vínculo entre directorio y proyecto
diff --git a/_locales/es/cli/login.mdx b/_locales/es/cli/login.mdx
new file mode 100644
index 0000000..f751317
--- /dev/null
+++ b/_locales/es/cli/login.mdx
@@ -0,0 +1,63 @@
+---
+description: "lizard login autentica a través de tu navegador o de un token de API, además de cómo autenticar de forma no interactiva en CI con LIZARD_TOKEN."
+---
+
+# lizard login
+
+Inicia sesión en Lizard.
+
+
+
+## Uso
+
+```bash
+lizard login [flags]
+```
+
+De forma predeterminada, esto abre tu navegador para autenticarte mediante OAuth y luego vuelve a tu terminal una vez que confirmas.
+
+
+
+## Banderas
+
+| Bandera | Descripción |
+|------|-------------|
+| `--token ` | Autenticar con un token de API |
+
+
+
+## Ejemplos
+
+
+
+### Iniciar sesión mediante el navegador
+
+```bash
+lizard login
+```
+
+
+
+### Iniciar sesión con un token
+
+```bash
+lizard login --token lzd_xxx
+```
+
+
+
+### Iniciar sesión de forma no interactiva en CI
+
+En CI u otros entornos no interactivos, configura `LIZARD_TOKEN` en el entorno en lugar de ejecutar `login`:
+
+```bash
+export LIZARD_TOKEN=lzd_xxx
+```
+
+
+
+## Ver también
+
+- [lizard logout](/cli/logout) — cerrar sesión
+- [lizard whoami](/cli/whoami) — mostrar el usuario actual, el workspace activo y el proyecto vinculado
+- [CLI reference](/cli) — flags globales, códigos de salida y resumen de autenticación
diff --git a/_locales/es/cli/logout.mdx b/_locales/es/cli/logout.mdx
new file mode 100644
index 0000000..094164c
--- /dev/null
+++ b/_locales/es/cli/logout.mdx
@@ -0,0 +1,22 @@
+---
+description: "lizard logout cierra tu sesión de Lizard CLI y borra las credenciales almacenadas en esta máquina. Vuelve a iniciar sesión con lizard login."
+---
+
+# lizard logout
+
+Cerrar sesión.
+
+
+
+## Uso
+
+```bash
+lizard logout
+```
+
+
+
+## Ver también
+
+- [lizard login](/cli/login) — autenticar con Lizard
+- [lizard whoami](/cli/whoami) — mostrar el usuario actual, el workspace activo y el proyecto vinculado
diff --git a/_locales/es/cli/logs.mdx b/_locales/es/cli/logs.mdx
new file mode 100644
index 0000000..6f26aa7
--- /dev/null
+++ b/_locales/es/cli/logs.mdx
@@ -0,0 +1,93 @@
+---
+description: "lizard logs transmite los logs de ejecución de un servicio, o recupera logs de compilación, logs de reinicio e historial filtrado con --build, --tail y --level."
+---
+
+# lizard logs
+
+Transmite los logs de ejecución de un servicio, las últimas 200 líneas seguidas de una cola en vivo.
+
+
+
+## Uso
+
+```bash
+lizard logs [flags]
+```
+
+
+
+## Banderas
+
+| Bandera | Descripción |
+|------|-------------|
+| `--build` | Mostrar los logs de compilación en su lugar |
+| `--tail ` | Últimas N líneas (máx. 1000) |
+| `-l, --level ` | Filtrar por nivel |
+| `--restarts [n]` | Listar reinicios recientes |
+| `--restart ` | Logs alrededor de un reinicio específico (`latest` para el más reciente) |
+| `-s, --service ` | Servicio |
+
+Con `--json`, `lizard logs` no es un flujo: devuelve las últimas 200 líneas (anúlalo con `--tail N`, máximo 1000) y sale. Úsalo para capturas y scripts; transmite en vivo solo sin `--json`.
+
+
+
+## Ejemplos
+
+
+
+### Ver logs de ejecución en tiempo real
+
+```bash
+lizard logs
+```
+
+
+
+### Ver logs de un servicio específico en tiempo real
+
+```bash
+lizard logs --service api
+```
+
+
+
+### Obtener más historial
+
+```bash
+lizard logs --tail 1000
+```
+
+
+
+### Filtrar por nivel de log
+
+```bash
+lizard logs --level error
+```
+
+
+
+### Revisar la compilación más reciente
+
+```bash
+lizard logs --build
+```
+
+
+
+### Inspeccionar un fallo o reinicio
+
+```bash
+lizard logs --restarts
+lizard logs --restart latest
+lizard logs --restart
+```
+
+
+
+## Véase también
+
+- [Logs](/observability/logs) — comportamiento de los logs de ejecución, compilación y reinicio, además de la paginación por el historial con `lizard service logs`
+- [Incomplete Dockerfile](/deploy/troubleshooting/incomplete-dockerfile) — diagnosticar una compilación fallida desde `lizard logs --build`
+- [lizard events](/cli/events) — historial de despliegues y estado de las réplicas
+- [Desplegar desde Claude Code](https://lizard.build/blog/deploy-from-claude-code#how-lizard-handles-claude-code-deployment) — el ciclo de leer logs, corregir y volver a desplegar que ejecuta un agente en una compilación fallida
diff --git a/_locales/es/cli/metrics.mdx b/_locales/es/cli/metrics.mdx
new file mode 100644
index 0000000..da69d7b
--- /dev/null
+++ b/_locales/es/cli/metrics.mdx
@@ -0,0 +1,68 @@
+---
+description: "lizard metrics informa CPU, memoria, red y disco para un servicio, con una vista en vivo con --watch y cifras de costo opcionales."
+---
+
+# lizard metrics
+
+Muestra CPU / memoria / red / disco y costo.
+
+
+
+## Uso
+
+```bash
+lizard metrics [flags]
+```
+
+
+
+## Banderas
+
+| Bandera | Descripción |
+|------|-------------|
+| `-r, --range ` | Ventana de tiempo |
+| `-w, --watch` | Actualización en vivo |
+| `--cost` | Incluir costo |
+
+
+
+## Ejemplos
+
+
+
+### Ver métricas del servicio actual
+
+```bash
+lizard metrics
+```
+
+
+
+### Ver métricas de un servicio específico
+
+```bash
+lizard metrics --service api
+```
+
+
+
+### Ver métricas en vivo
+
+```bash
+lizard metrics --watch
+```
+
+
+
+### Incluir costo
+
+```bash
+lizard metrics --cost
+```
+
+
+
+## Ver también
+
+- [Métricas y costo](/observability/metrics) — vistas del panel y cómo actuar según el uso
+- [Escalado](/deploy/scaling) — cambiar el tamaño o añadir réplicas en respuesta a las métricas
diff --git a/_locales/es/cli/open.mdx b/_locales/es/cli/open.mdx
new file mode 100644
index 0000000..dbc9b0c
--- /dev/null
+++ b/_locales/es/cli/open.mdx
@@ -0,0 +1,34 @@
+---
+description: "lizard open abre el panel del proyecto actual en tu navegador, el complemento visual del CLI."
+---
+
+# lizard open
+
+Abre el proyecto en el navegador.
+
+
+
+## Uso
+
+```bash
+lizard open
+```
+
+
+
+## Ejemplos
+
+
+
+### Abrir el panel del proyecto actual
+
+```bash
+lizard open
+```
+
+
+
+## Ver también
+
+- [Panel](/dashboard) — el complemento visual del CLI que abre este comando
+- [Desplegar una app Antigravity a producción](https://lizard.build/blog/google-antigravity-how-to-deploy-your-app-to-production#deploy-an-antigravity-app-to-production-without-typing-a-command) — ver cómo se completa un despliegue ejecutado por un agente, sin escribir un comando tú mismo
diff --git a/_locales/es/cli/port.mdx b/_locales/es/cli/port.mdx
new file mode 100644
index 0000000..aa6aa52
--- /dev/null
+++ b/_locales/es/cli/port.mdx
@@ -0,0 +1,59 @@
+---
+description: "lizard port muestra o cambia el puerto del contenedor de un servicio. Establecerlo en 0 pone el servicio en modo worker sin enrutamiento de entrada."
+---
+
+# lizard port
+
+Muestra o cambia el puerto del contenedor de un servicio. Sin argumentos, imprime el puerto actual (`worker mode` cuando es `0`).
+
+
+
+## Uso
+
+```bash
+lizard port [value] [flags]
+```
+
+
+
+## Banderas
+
+| Bandera | Descripción |
+|------|-------------|
+| `-s, --service ` | Servicio de destino |
+
+
+
+## Ejemplos
+
+
+
+### Mostrar el puerto actual
+
+```bash
+lizard port
+```
+
+
+
+### Establecer el puerto para un servicio específico
+
+```bash
+lizard port 0 -s worker
+```
+
+
+
+### Comprobar el puerto en un servicio worker
+
+```bash
+lizard port --service worker
+```
+
+
+
+## Ver también
+
+- [Workers en segundo plano](/deploy/workers) — establece el puerto en `0` para ejecutar un servicio sin enrutamiento de entrada
+- [lizard service](/cli/service) — administra el resto de la configuración de un servicio
+- [Lo que una app de Python necesita de un host](https://lizard.build/blog/python-app-hosting#what-a-python-app-actually-needs-from-a-host) — por qué un proceso `gunicorn` o `uvicorn` tiene que enlazarse a `$PORT` en `0.0.0.0`
diff --git a/_locales/es/cli/project.mdx b/_locales/es/cli/project.mdx
new file mode 100644
index 0000000..d316c9a
--- /dev/null
+++ b/_locales/es/cli/project.mdx
@@ -0,0 +1,56 @@
+---
+description: "lizard project muestra los proyectos en tu espacio de trabajo o crea uno nuevo, con ejemplos para ambos subcomandos."
+---
+
+# lizard project
+
+Muestra o crea proyectos en un espacio de trabajo.
+
+
+
+## Uso
+
+```bash
+lizard project list
+lizard project create
+```
+
+
+
+## Subcomandos
+
+### `lizard project list`
+
+Muestra todos los proyectos en el espacio de trabajo.
+
+### `lizard project create`
+
+Crea un nuevo proyecto.
+
+
+
+## Ejemplos
+
+
+
+### Mostrar proyectos en el espacio de trabajo
+
+```bash
+lizard project list
+```
+
+
+
+### Crear un nuevo proyecto
+
+```bash
+lizard project create
+```
+
+
+
+## Véase también
+
+- [lizard init](/cli/init) — crea o selecciona un proyecto y lo vincula al directorio actual
+- [lizard link](/cli/link) — asocia el directorio actual con un proyecto existente
+- [Arquitectura](/concepts/architecture) — cómo se relacionan los proyectos con los espacios de trabajo y los servicios
diff --git a/_locales/es/cli/ps.mdx b/_locales/es/cli/ps.mdx
new file mode 100644
index 0000000..a0a94b4
--- /dev/null
+++ b/_locales/es/cli/ps.mdx
@@ -0,0 +1,34 @@
+---
+description: "lizard ps enumera cada servicio en el proyecto vinculado con su estado y URL activa, una vista rápida de lo que está en ejecución."
+---
+
+# lizard ps
+
+Enumera todos los servicios del proyecto con su estado y URL.
+
+
+
+## Uso
+
+```bash
+lizard ps
+```
+
+
+
+## Ejemplos
+
+
+
+### Enumerar servicios en el proyecto vinculado
+
+```bash
+lizard ps
+```
+
+
+
+## Véase también
+
+- [lizard status](/cli/status) — mostrar el workspace, proyecto y servicio vinculados para el directorio actual
+- [lizard events](/cli/events) — mostrar el historial de despliegues y el estado de las réplicas
diff --git a/_locales/es/cli/redeploy.mdx b/_locales/es/cli/redeploy.mdx
new file mode 100644
index 0000000..a213331
--- /dev/null
+++ b/_locales/es/cli/redeploy.mdx
@@ -0,0 +1,69 @@
+---
+description: "lizard redeploy activa una compilación nueva desde el commit más reciente o la última carga usando las variables actuales, transmitiendo los registros salvo que pases --detach."
+---
+
+# lizard redeploy
+
+Activa una compilación nueva (commit más reciente / última carga) con las variables actuales.
+
+
+
+## Uso
+
+```bash
+lizard redeploy [nameOrId] [flags]
+```
+
+
+
+## Banderas
+
+| Bandera | Descripción |
+|------|--------------|
+| `-s, --service ` | Servicio |
+| `--detach` | Volver después de que se acepte la compilación |
+| `--wait` | Esperar a la compilación y a que el despliegue esté listo; funciona con `--json` |
+| `--timeout ` | Tiempo de espera para la preparación después de la compilación; valor predeterminado `120` |
+| `--json` | Devolver JSON para scripts |
+
+
+
+## Ejemplos
+
+
+
+### Volver a compilar y redesplegar un servicio
+
+```bash
+lizard redeploy --service api
+```
+
+
+
+### Redesplegar sin transmitir registros
+
+```bash
+lizard redeploy --service api --detach
+```
+
+
+
+### Esperar en un script
+
+Requiere CLI 0.3.94 o posterior. Usa 0.3.95 o posterior para workers sin HTTP.
+
+```bash
+lizard --json redeploy --service api --wait --timeout 120
+```
+
+Sin `--wait`, el modo JSON devuelve el resultado después de que se acepta la solicitud de compilación. Con `--wait`, el CLI sigue esa compilación y luego espera a que el despliegue esté listo. El resultado JSON incluye `buildId`, `ok` y `status`. Un fallo de compilación, una comprobación de preparación fallida o un tiempo de espera agotado devuelven un código de salida distinto de cero.
+
+El tiempo de espera se aplica a la preparación después de que termine la compilación; no limita la duración de la compilación ni cancela el despliegue. Los workers con `containerPort=0` usan el estado de preparación del backend sin una comprobación HTTP. Después de un comando correcto, comprueba un endpoint de la aplicación o los datos almacenados si tu flujo de trabajo necesita verificar el comportamiento de la aplicación.
+
+
+
+## Ver también
+
+- [lizard restart](/cli/restart) — reinicio gradual de la compilación actual, sin recompilar
+- [lizard up](/cli/up) — carga el directorio actual y lo despliega
+- [Despliegues](/concepts/deployments) — cómo funcionan los despliegues, reinicios y recompilaciones
diff --git a/_locales/es/cli/regions.mdx b/_locales/es/cli/regions.mdx
new file mode 100644
index 0000000..6f803a7
--- /dev/null
+++ b/_locales/es/cli/regions.mdx
@@ -0,0 +1,64 @@
+---
+description: "lizard regions lista las regiones disponibles para tu cuenta y muestra cómo pasar --region al crear un servicio o addon."
+---
+
+# lizard regions
+
+Lista las regiones disponibles.
+
+
+
+## Uso
+
+```bash
+lizard regions [flags]
+```
+
+
+
+## Banderas
+
+| Bandera | Descripción |
+|------|-------------|
+| `--json` | Salida en JSON |
+
+
+
+## Ejemplos
+
+
+
+### Listar regiones disponibles
+
+```bash
+lizard regions
+```
+
+
+
+### Listar regiones como JSON
+
+```bash
+lizard regions --json
+```
+
+
+
+### Elegir una región al crear un servicio o addon
+
+Pasa `--region ` a `lizard add` o `lizard up`:
+
+```bash
+lizard add -r your-org/your-app --region
+lizard add postgres --region
+lizard up --region
+```
+
+Si no especificas una región, la plataforma usa la predeterminada del proyecto.
+
+
+
+## Véase también
+
+- [Regiones](/deploy/regions) — selección de región, co-ubicación y dominios generados
+- [`lizard add`](/cli/add) — añade un servicio, repositorio o addon con `--region`
diff --git a/_locales/es/cli/restart.mdx b/_locales/es/cli/restart.mdx
new file mode 100644
index 0000000..40e89be
--- /dev/null
+++ b/_locales/es/cli/restart.mdx
@@ -0,0 +1,75 @@
+---
+description: "lizard restart realiza un reinicio gradual de la compilación actual de un servicio sin reconstrucción, útil para recuperarse de un fallo."
+---
+
+# lizard restart
+
+Reinicio gradual de la compilación actual — sin reconstrucción.
+
+
+
+## Uso
+
+```bash
+lizard restart [nameOrId] [flags]
+```
+
+
+
+## Banderas
+
+| Bandera | Descripción |
+|------|--------------|
+| `-s, --service ` | Servicio |
+| `--detach` | Volver después de que se acepte el reinicio |
+| `--wait` | Esperar a que el nuevo intento de reinicio esté listo; funciona con `--json` |
+| `--timeout ` | Tiempo máximo de espera de preparación con `--wait`; valor predeterminado: `120` |
+| `--json` | Devolver JSON para scripts |
+
+
+
+## Ejemplos
+
+
+
+### Reiniciar un servicio
+
+```bash
+lizard restart --service api
+```
+
+
+
+### Reiniciar sin transmitir logs
+
+```bash
+lizard restart --service api --detach
+```
+
+
+
+### Esperar antes de ejecutar la siguiente comprobación
+
+Requiere CLI 0.3.94 o posterior. Usa 0.3.95 o posterior para workers sin HTTP.
+
+```bash
+lizard --json restart --service api --wait --timeout 120
+```
+
+Sin `--wait`, el modo JSON devuelve el resultado después de que se acepte el reinicio. Con `--wait`, el resultado incluye `ok`, `status`, `attemptId` y `waitedMs`. La CLI espera un nuevo intento de reinicio, por lo que un estado sin cambios desde antes de la solicitud no cuenta como éxito. Una espera fallida o un tiempo de espera agotado devuelve un código de salida distinto de cero.
+
+Para los servicios HTTP, la CLI también comprueba dos veces el dominio del servicio. Los workers con `containerPort=0` usan el estado de preparación del backend y no necesitan un listener HTTP, incluso cuando tienen un dominio generado.
+
+```bash
+lizard --json restart --service worker --wait --timeout 60
+```
+
+El tiempo de espera se aplica a la espera de preparación después de la solicitud de reinicio. No cancela el reinicio, y las llamadas de red pueden hacer que el comando tarde más en total. Comprueba los datos de la aplicación o un endpoint de estado después del comando cuando tu flujo de trabajo necesite más que la preparación del proceso.
+
+
+
+## Véase también
+
+- [lizard redeploy](/cli/redeploy) — activar una nueva compilación en lugar de reciclar la actual
+- [lizard logs](/cli/logs) — inspeccionar los logs en torno a un reinicio con `--restart latest` o `--restart `
+- [Despliegues](/concepts/deployments) — reinicios frente a redespliegues y recuperación tras un fallo
diff --git a/_locales/es/cli/run.mdx b/_locales/es/cli/run.mdx
new file mode 100644
index 0000000..52b5d93
--- /dev/null
+++ b/_locales/es/cli/run.mdx
@@ -0,0 +1,63 @@
+---
+description: "lizard run ejecuta un comando en tu máquina con el proyecto de un servicio y los secretos del servicio inyectados. Incluye cuándo usar ssh en su lugar."
+---
+
+# lizard run
+
+Ejecuta un comando localmente con los secretos del proyecto y del servicio inyectados.
+
+## run vs. ssh
+
+Dos comandos te permiten ejecutar comandos con el contexto de un servicio. Se ejecutan en lugares distintos — asegúrate de usar el que necesitas.
+
+| Comando | Dónde se ejecuta | Usar para |
+|---------|-----------|---------|
+| `lizard run` | Localmente, con los secretos del proyecto + servicio del servicio inyectados | Migraciones, scripts de seed, herramientas locales que necesitan configuración de prod |
+| `lizard ssh` | Dentro del contenedor del servicio en ejecución | Inspeccionar el contenedor en vivo, comandos remotos puntuales, depuración |
+
+`lizard run` muestra tu copia local inyectada del entorno, que normalmente es la misma que ve la app en ejecución — pero `lizard ssh` es la referencia autoritativa para el contenedor en vivo. Para comprobar lo que realmente ve la app en ejecución, usa `lizard ssh` en su lugar.
+
+
+
+## Uso
+
+```bash
+lizard run [flags] --
+```
+
+
+
+## Banderas
+
+| Bandera | Descripción |
+|------|-------------|
+| `-s, --service ` | Servicio cuyo env se debe inyectar |
+| `--no-service` | No inyectar el env del servicio |
+
+
+
+## Ejemplos
+
+
+
+### Ejecutar una migración con los secretos del servicio inyectados
+
+```bash
+lizard run --service api -- node scripts/migrate.js
+```
+
+
+
+### Imprimir una variable de entorno inyectada
+
+```bash
+lizard run --service api -- printenv DATABASE_URL
+```
+
+
+
+## Ver también
+
+- [lizard ssh](/cli/ssh) — ejecuta un comando dentro del contenedor del servicio en ejecución en lugar de hacerlo localmente
+- [Variables](/variables) — cómo se definen y se referencian las variables del proyecto y del servicio
+- [Alojamiento de apps en Python](https://lizard.build/blog/python-app-hosting) — ejecutar `manage.py` y otras herramientas del framework contra una base de datos desplegada
diff --git a/_locales/es/cli/scale.mdx b/_locales/es/cli/scale.mdx
new file mode 100644
index 0000000..4085017
--- /dev/null
+++ b/_locales/es/cli/scale.mdx
@@ -0,0 +1,67 @@
+---
+description: "lizard scale cambia las réplicas, CPU y memoria de un servicio, y aumenta el almacenamiento de un addon. Valores permitidos y ejemplos para cada flag."
+---
+
+# lizard scale
+
+Escala un servicio (réplicas / CPU / memoria / almacenamiento).
+
+
+
+## Uso
+
+```bash
+lizard scale [flags]
+```
+
+
+
+## Banderas
+
+| Bandera | Descripción |
+|------|-------------|
+| `--replicas ` | Réplicas `1`–`10` (apps) |
+| `--cpu ` | `1`, `2`, `3` o `4` |
+| `--memory ` | `128`–`8192` MB |
+| `--storage ` | Tamaño del volumen del addon, solo ampliable |
+
+
+
+## Ejemplos
+
+
+
+### Escalar réplicas horizontalmente
+
+```bash
+lizard scale --service api --replicas 5
+```
+
+Cada réplica es su propio pod detrás del balanceador de carga. Asegúrate de que tu app sea sin estado para que las réplicas sean intercambiables.
+
+
+
+### Escalar CPU y memoria verticalmente
+
+```bash
+lizard scale --service api --cpu 4 --memory 8192
+```
+
+
+
+### Ampliar el almacenamiento del addon
+
+```bash
+lizard scale --service postgres --storage 8192
+```
+
+Los volúmenes de datos del addon son solo ampliables: puedes aumentar el almacenamiento, pero no reducirlo.
+
+
+
+## Véase también
+
+- [Escalado](/deploy/scaling) — escalado horizontal vs. vertical y ampliación del almacenamiento del addon
+- [lizard metrics](/cli/metrics) — consulta CPU / memoria / red / disco antes y después del escalado
+- [lizard ps](/cli/ps) — comprueba el estado de las réplicas después de un cambio de escala
+- [Observabilidad → Métricas](/observability/metrics) — monitorización de recursos y costos
diff --git a/_locales/es/cli/secrets.mdx b/_locales/es/cli/secrets.mdx
new file mode 100644
index 0000000..25361cb
--- /dev/null
+++ b/_locales/es/cli/secrets.mdx
@@ -0,0 +1,100 @@
+---
+description: "lizard secrets establece, lista, elimina e importa variables de entorno en el ámbito del servicio o del proyecto, incluida la importación de dotenv desde stdin."
+---
+
+# lizard secrets
+
+Gestiona los secretos (variables de entorno) de un proyecto o servicio.
+
+
+
+## Uso
+
+```bash
+lizard secrets [args] [flags]
+```
+
+
+
+## Subcomandos
+
+### `lizard secrets set ...`
+
+Establece uno o más secretos (variádico). El ámbito predeterminado es el servicio; `--global` apunta al proyecto.
+
+| Bandera | Descripción |
+|------|-------------|
+| `--global` | Ámbito del proyecto |
+| `-s, --service ` | Ámbito del servicio |
+
+### `lizard secrets list`
+
+Lista los secretos del ámbito.
+
+| Bandera | Descripción |
+|------|-------------|
+| `--show` | Mostrar valores |
+| `--ref` | Mostrar referencias |
+
+### `lizard secrets delete ...`
+
+Elimina uno o más secretos (variádico).
+
+### `lizard secrets import`
+
+Importa un archivo dotenv desde stdin.
+
+
+
+## Ejemplos
+
+
+
+### Establecer secretos en el servicio vinculado
+
+```bash
+lizard secrets set DATABASE_URL=postgres://… LOG_LEVEL=info
+lizard secrets set API_KEY=sk_live_… --service api
+```
+
+
+
+### Establecer un secreto para todo el proyecto
+
+```bash
+lizard secrets set NODE_ENV=production --global
+```
+
+
+
+### Listar y mostrar secretos
+
+```bash
+lizard secrets list
+lizard secrets list --show
+```
+
+
+
+### Eliminar secretos
+
+```bash
+lizard secrets delete OLD_KEY ANOTHER_KEY
+```
+
+
+
+### Importar un archivo dotenv
+
+```bash
+cat .env | lizard secrets import
+```
+
+
+
+## Véase también
+
+- [Variables y secretos](/variables) — ámbito, precedencia y comportamiento en tiempo de compilación frente a tiempo de ejecución
+- [Referencias entre servicios](/variables/references) — leer los valores de un servicio desde otro
+- [Solución de problemas: un secreto o una referencia no aparece](/variables/troubleshooting/reference-not-applied)
+- [lizard run](/cli/run) — ejecutar un comando localmente con los secretos del proyecto y del servicio inyectados
diff --git a/_locales/es/cli/service.mdx b/_locales/es/cli/service.mdx
new file mode 100644
index 0000000..f7fc39d
--- /dev/null
+++ b/_locales/es/cli/service.mdx
@@ -0,0 +1,95 @@
+---
+description: "lizard service lee y edita la configuración de compilación, inicio, origen y variables de un servicio, y gestiona el cambio de nombre, la eliminación, los registros y la vinculación."
+---
+
+# lizard service
+
+Administra la configuración, el origen y el ciclo de vida de un servicio individual.
+
+
+
+## Uso
+
+```bash
+lizard service set [flags]
+lizard service show [flags]
+lizard service rename
+lizard service delete [flags]
+lizard service logs
+lizard service link
+```
+
+
+
+## Subcomandos
+
+### `lizard service set`
+
+Aplica cambios de compilación/inicio/origen/variables/cambio de nombre a un servicio.
+
+| Bandera | Descripción |
+|------|-------------|
+| `--set =` | Establece un campo (repetible) |
+| `-f, --file ` | Archivo de configuración JSON para aplicar |
+| `--force` | Sobrescribe incluso si cambió de forma remota |
+
+Los campos comunes son planos y se asignan 1:1 al esquema wire: `sourceType`, `repoUrl`, `branch`, `rootDirectory`, `dockerfilePath`, `buildCommand`, `startCommand`, `preDeployCommand`, `watchPatterns`, `containerPort`, `name`.
+
+`service set` usa concurrencia optimista mediante `configRevision`. Ante un `409`, vuelve a leer la configuración con `lizard service show`, reconcilia y reintenta, o pasa `--force`.
+
+### `lizard service show`
+
+Muestra la configuración actual del servicio como JSON. Usa `-s` para limitarlo a un servicio.
+
+### `lizard service rename`
+
+Cambia el nombre de un servicio o addon. Las referencias a este (`${{name.KEY}}`) permanecen estables.
+
+### `lizard service delete`
+
+Elimina un servicio. `-y, --yes` omite la confirmación.
+
+### `lizard service logs`
+
+Transmite los registros de un servicio (consulta también [lizard logs](/cli/logs)).
+
+### `lizard service link`
+
+Vincula un servicio al directorio actual.
+
+
+
+## Ejemplos
+
+
+
+### Actualizar los comandos de compilación e inicio de un servicio
+
+```bash
+lizard service set api --set branch=main --set buildCommand="npm run build"
+```
+
+
+
+### Inspeccionar la configuración completa de un servicio
+
+```bash
+lizard service show -s api
+```
+
+
+
+### Eliminar un servicio sin un aviso de confirmación
+
+```bash
+lizard service delete -y
+```
+
+
+
+## Véase también
+
+- [lizard port](/cli/port) — muestra o cambia el puerto del contenedor de un servicio
+- [lizard scale](/cli/scale) — escala las réplicas, CPU, memoria o almacenamiento de un servicio
+- [Architecture](/concepts/architecture) — cómo se relacionan los servicios con los proyectos y los addons
+- [Compilar pipeline](/concepts/build-pipeline) — cómo se usan `buildCommand`, `startCommand` y la configuración de origen en tiempo de compilación
diff --git a/_locales/es/cli/skills.mdx b/_locales/es/cli/skills.mdx
new file mode 100644
index 0000000..c4b3678
--- /dev/null
+++ b/_locales/es/cli/skills.mdx
@@ -0,0 +1,61 @@
+---
+description: "lizard skills lee las guías para agentes incluidas con tu versión de CLI, para que un agente de IA siempre reciba instrucciones que coincidan con el binario."
+---
+
+# lizard skills
+
+Lee las skills para agentes integradas que se incluyen con esta versión de CLI.
+
+
+
+## Uso
+
+```bash
+lizard skills list
+lizard skills get core
+lizard skills path
+```
+
+
+
+## Subcomandos
+
+### `lizard skills list`
+
+Lista las skills integradas disponibles.
+
+### `lizard skills get core`
+
+Lee la guía principal — la guía de uso autorizada para la plataforma, versionada junto con la CLI. Devuelve `{ name, frontmatter, content, … }`, donde `content` es la guía completa (pipeline de build, precedencia de env, addons, discovery, códigos de salida).
+
+### `lizard skills path`
+
+Muestra dónde se almacenan las skills en el disco.
+
+
+
+## Ejemplos
+
+
+
+### Cargar la guía principal como agente
+
+```bash
+lizard skills get core --json
+```
+
+
+
+### Listar las skills integradas disponibles
+
+```bash
+lizard skills list
+```
+
+
+
+## Véase también
+
+- [AI agents & MCP](/agents) — cómo los agentes se inicializan con la skill integrada y comandos autodescriptivos
+- [JSON & automation](/cli/json) — el formato de salida `--json` usado por `lizard skills get core --json`
+- [Desplegar desde Claude Code](https://lizard.build/blog/deploy-from-claude-code) — instalar la skill y entregar el deploy al agente, de punta a punta
diff --git a/_locales/es/cli/ssh.mdx b/_locales/es/cli/ssh.mdx
new file mode 100644
index 0000000..8cf41ac
--- /dev/null
+++ b/_locales/es/cli/ssh.mdx
@@ -0,0 +1,70 @@
+---
+description: "lizard ssh ejecuta un comando dentro del contenedor de un servicio en vivo y devuelve su código de salida. La forma autorizada de ver lo que ve el contenedor."
+---
+
+# lizard ssh
+
+Ejecuta un comando dentro del contenedor de un servicio en ejecución, transmite su salida y devuelve el código de salida remoto.
+
+## run vs. ssh
+
+`lizard run` y `lizard ssh` ejecutan un comando con el contexto de un servicio, pero se ejecutan en lugares distintos — conviene saber cuál quieres.
+
+| Comando | Dónde se ejecuta | Usar para |
+|---------|-----------|---------|
+| `lizard run` | **Localmente**, con el proyecto del servicio + los secretos del servicio inyectados | Migraciones, scripts de seed, herramientas locales que necesitan configuración de prod |
+| `lizard ssh` | **Dentro del contenedor del servicio en ejecución** | Inspeccionar el contenedor en vivo, comandos remotos puntuales, depuración |
+
+`lizard run` muestra tu copia local inyectada del entorno, que normalmente es la misma que producción — pero `lizard ssh` es la referencia autorizada de lo que realmente ve el contenedor en vivo.
+
+
+
+## Uso
+
+```bash
+lizard ssh --service --
+```
+
+
+
+## Ejemplos
+
+
+
+### Inspeccionar el entorno que ve la app en ejecución
+
+```bash
+lizard ssh --service api -- env
+```
+
+
+
+### Listar archivos en la imagen desplegada
+
+```bash
+lizard ssh --service api -- ls -la /app
+```
+
+
+
+### Comprobar el sistema operativo en el contenedor
+
+```bash
+lizard ssh --service api -- cat /etc/os-release
+```
+
+
+
+### Confirmar que un secreto llegó al contenedor en vivo
+
+```bash
+lizard ssh --service api -- env | grep DATABASE_URL
+```
+
+
+
+## Véase también
+
+- [lizard run](/cli/run) — ejecuta un comando localmente con el entorno del servicio inyectado en su lugar
+- [Variables](/variables) — cómo llegan los secretos y las referencias a un servicio
+- [Desplegar desde Claude Code](https://lizard.build/blog/deploy-from-claude-code#claude-code-deployment-compared-with-the-alternatives) — por qué un agente necesita una shell dentro del contenedor en ejecución, y qué plataformas no ofrecen una
diff --git a/_locales/es/cli/status.mdx b/_locales/es/cli/status.mdx
new file mode 100644
index 0000000..584fca2
--- /dev/null
+++ b/_locales/es/cli/status.mdx
@@ -0,0 +1,35 @@
+---
+description: "lizard status muestra a qué espacio de trabajo, proyecto y servicio está vinculado el directorio actual, antes de que despliegues en el equivocado."
+---
+
+# lizard status
+
+Muestra el espacio de trabajo, proyecto y servicio vinculados al directorio actual.
+
+
+
+## Uso
+
+```bash
+lizard status
+```
+
+
+
+## Ejemplos
+
+
+
+### Verificar el vínculo del directorio actual
+
+```bash
+lizard status
+```
+
+
+
+## Ver también
+
+- [lizard init](/cli/init) — crear o seleccionar un proyecto y vincularlo al directorio actual
+- [lizard link](/cli/link) — asociar el directorio actual con un proyecto existente
+- [lizard whoami](/cli/whoami) — mostrar el usuario actual, el espacio de trabajo activo y el proyecto vinculado
diff --git a/_locales/es/cli/unlink.mdx b/_locales/es/cli/unlink.mdx
new file mode 100644
index 0000000..b1f9501
--- /dev/null
+++ b/_locales/es/cli/unlink.mdx
@@ -0,0 +1,34 @@
+---
+description: "lizard unlink elimina el vínculo entre el directorio actual y cualquier proyecto, sin afectar al proyecto en sí."
+---
+
+# lizard unlink
+
+Desvincula el directorio actual de cualquier proyecto.
+
+
+
+## Uso
+
+```bash
+lizard unlink
+```
+
+
+
+## Ejemplos
+
+
+
+### Desvincular el directorio actual
+
+```bash
+lizard unlink
+```
+
+
+
+## Véase también
+
+- [lizard link](/cli/link) — asociar el directorio actual con un proyecto
+- [lizard status](/cli/status) — comprobar el espacio de trabajo, proyecto y servicio vinculados
diff --git a/_locales/es/cli/up.mdx b/_locales/es/cli/up.mdx
new file mode 100644
index 0000000..1907825
--- /dev/null
+++ b/_locales/es/cli/up.mdx
@@ -0,0 +1,88 @@
+---
+description: "lizard up empaqueta el directorio actual, lo compila en los nodos de compilación de Lizard y devuelve una URL activa. Banderas, comportamiento en CI y ejemplos."
+---
+
+# lizard up
+
+Sube el directorio actual y lo despliega.
+
+
+
+## Uso
+
+```bash
+lizard up [flags]
+```
+
+`up` empaqueta tu árbol de trabajo como un tarball, lo envía a los nodos de compilación y lo despliega. Fuerza `sourceType=upload` en el servicio de destino, transmite los logs de compilación por SSE e imprime la URL activa al terminar.
+
+Si el directorio actual todavía no está vinculado a un proyecto, `up` ejecuta primero `init`. En un TTY eso es interactivo; en un entorno sin TTY (CI) **no** creará un proyecto silenciosamente: devolverá un error y te pedirá que ejecutes `lizard init --name ` (o que pases `--name`), para evitar que un error tipográfico genere un proyecto vacío.
+
+
+
+## Banderas
+
+| Bandera | Descripción |
+|------|-------------|
+| `-s, --service ` | Apunta a un servicio existente |
+| `--build-command ` | Sobrescribe el comando de compilación |
+| `--start-command ` | Sobrescribe el comando de inicio |
+| `--pre-deploy-command ` | Se ejecuta una vez antes de cada despliegue |
+| `--port ` | Puerto del contenedor (`0` = modo worker) |
+| `--region ` | Región donde desplegar |
+| `-d, --detach` | Inicia el despliegue y sale sin transmitir logs |
+| `-c, --ci` | Salida compatible con CI |
+| `--no-gitignore` | Sube todo, ignorando `.gitignore` |
+
+
+
+## Subcomandos
+
+### `lizard up status`
+
+Informa el estado de un despliegue por subida en curso.
+
+
+
+## Ejemplos
+
+
+
+### Desplegar el directorio actual
+
+```bash
+lizard up
+```
+
+
+
+### Desplegar en un servicio específico con un comando de inicio y un puerto personalizados
+
+Crea primero el servicio con nombre con `lizard add --service api` si no existe.
+
+```bash
+lizard up --service api --start-command "node server.js" --port 8080
+```
+
+
+
+### Desplegar sin interacción en CI
+
+```bash
+export LIZARD_TOKEN=lzd_xxx
+lizard init --name my-project
+lizard add --service api
+lizard up --ci --service api
+```
+
+Omite `lizard add` cuando el servicio ya exista. Con Lizard CLI 0.3.92, una compilación fallida todavía puede salir con el código `0`; inspecciona el estado de la compilación y la URL desplegada antes de marcar una versión de CI como exitosa. Hay una corrección pendiente de publicación. En macOS, también configura `COPYFILE_DISABLE=1` antes de una subida para evitar archivos de metadatos adicionales de `._*` en el archivo. Consulta [framework setup](/framework-guides#prepare-the-project).
+
+
+
+## Véase también
+
+- [Desplegar desde código local](/deploy/upload) — guía completa de los despliegues basados en subida
+- [lizard redeploy](/cli/redeploy) — vuelve a compilar la última subida sin volver a subirla
+- [lizard init](/cli/init) — crea o vincula un proyecto explícitamente antes de desplegar
+- [Worker services](/deploy/workers) — qué significa `--port 0`
+- [Desplegar un contenedor sin configurar uno](https://lizard.build/blog/container-as-a-service#deploy-a-container-without-configuring-one) — dónde se ubica este comando entre las plataformas de contenedor como servicio
diff --git a/_locales/es/cli/upgrade.mdx b/_locales/es/cli/upgrade.mdx
new file mode 100644
index 0000000..a51a805
--- /dev/null
+++ b/_locales/es/cli/upgrade.mdx
@@ -0,0 +1,50 @@
+---
+description: "lizard upgrade actualiza la CLI en el lugar, o comprueba si hay una versión más reciente sin instalarla con --check."
+---
+
+# lizard upgrade
+
+Actualiza la CLI a la versión más reciente.
+
+
+
+## Uso
+
+```bash
+lizard upgrade [flags]
+```
+
+
+
+## Banderas
+
+| Bandera | Descripción |
+|------|-------------|
+| `--check` | Comprueba si hay una versión más reciente sin instalarla |
+
+
+
+## Ejemplos
+
+
+
+### Actualizar a la versión más reciente
+
+```bash
+lizard upgrade
+```
+
+
+
+### Comprobar actualizaciones sin instalar
+
+```bash
+lizard upgrade --check
+```
+
+
+
+## Véase también
+
+- [Referencia de la CLI](/cli) — instalación, flags globales, códigos de salida
+- [Primeros pasos](/getting-started) — instalar la CLI por primera vez
diff --git a/_locales/es/cli/whoami.mdx b/_locales/es/cli/whoami.mdx
new file mode 100644
index 0000000..9d1c7f3
--- /dev/null
+++ b/_locales/es/cli/whoami.mdx
@@ -0,0 +1,35 @@
+---
+description: "lizard whoami imprime la cuenta con la que has iniciado sesión, tu espacio de trabajo activo y el proyecto vinculado a este directorio."
+---
+
+# lizard whoami
+
+Muestra el usuario actual, el espacio de trabajo activo y el proyecto vinculado.
+
+
+
+## Uso
+
+```bash
+lizard whoami
+```
+
+
+
+## Ejemplos
+
+
+
+### Comprueba con qué cuenta has iniciado sesión
+
+```bash
+lizard whoami
+```
+
+
+
+## Véase también
+
+- [lizard login](/cli/login) — autentícate antes de comprobar tu identidad
+- [lizard status](/cli/status) — muestra el espacio de trabajo, proyecto y servicio vinculados para el directorio actual
+- [lizard workspace](/cli/workspace) — enumera los espacios de trabajo a los que puedes acceder
diff --git a/_locales/es/cli/workspace.mdx b/_locales/es/cli/workspace.mdx
new file mode 100644
index 0000000..f3c4c47
--- /dev/null
+++ b/_locales/es/cli/workspace.mdx
@@ -0,0 +1,34 @@
+---
+description: "lizard workspace list muestra todos los workspaces a los que tu cuenta puede acceder y cómo los workspaces se relacionan con los proyectos y los servicios."
+---
+
+# lizard workspace
+
+Lista los workspaces a los que puedes acceder.
+
+
+
+## Uso
+
+```bash
+lizard workspace list
+```
+
+
+
+## Ejemplos
+
+
+
+### Lista tus workspaces
+
+```bash
+lizard workspace list
+```
+
+
+
+## Véase también
+
+- [lizard whoami](/cli/whoami) — muestra tu workspace activo
+- [Architecture: Espacio de trabajo](/concepts/architecture) — cómo los workspaces se relacionan con los proyectos y los servicios
diff --git a/_locales/es/concepts/_meta.ts b/_locales/es/concepts/_meta.ts
new file mode 100644
index 0000000..ceec0b0
--- /dev/null
+++ b/_locales/es/concepts/_meta.ts
@@ -0,0 +1,6 @@
+export default {
+ index: "Resumen",
+ architecture: "Arquitectura",
+ 'build-pipeline': "Pipeline de compilación",
+ deployments: "Despliegues",
+};
diff --git a/_locales/es/concepts/architecture.mdx b/_locales/es/concepts/architecture.mdx
new file mode 100644
index 0000000..fc7a84e
--- /dev/null
+++ b/_locales/es/concepts/architecture.mdx
@@ -0,0 +1,126 @@
+---
+description: "Cómo Lizard organiza el trabajo en workspaces, proyectos y servicios, además de addons gestionados, referencias entre recursos y variables inyectadas."
+---
+
+
+
+# Arquitectura
+
+Lizard organiza todo lo que despliegas en una jerarquía de tres niveles, además de addons gestionados que se adjuntan a un proyecto.
+
+```
+workspace
+└── project
+ ├── service (app) ← built from GitHub or an upload
+ ├── service (worker) ← background job, no HTTP port
+ └── addons
+ ├── postgres
+ ├── redis
+ └── s3
+```
+
+
+
+## Espacio de trabajo
+
+Un **workspace** es el nivel de cuenta u organización. Perteneces al menos a uno, y la facturación, los miembros y los proyectos dependen de él. Lista los que puedes acceder:
+
+```bash
+lizard workspace list
+lizard whoami # shows your active workspace
+```
+
+Muchos comandos aceptan `-w, --workspace ` para desambiguar cuando el mismo nombre de proyecto existe en más de un workspace.
+
+
+
+## Proyecto
+
+Un **proyecto** agrupa servicios y addons relacionados dentro de un workspace. Tu directorio de trabajo queda *vinculado* a un proyecto, y ese vínculo (almacenado en `~/.lizard/config.json`) es como la CLI sabe a qué estás apuntando.
+
+```bash
+lizard init --name my-project # create or select a project, link the cwd
+lizard link --project my-project # link to an existing project
+lizard status # show the current directory's link
+lizard unlink # remove the link
+lizard project list # all projects in the workspace
+```
+
+> **Consejo:** Usa el nombre del repositorio o del directorio para el proyecto, y nombres de tipo app (`api`, `worker`, `web`) para los servicios.
+
+
+
+## Servicio
+
+Un **servicio** es una sola unidad desplegable. Su origen es uno de estos:
+
+- **`github`** — un repositorio de GitHub conectado. Los pushes a la rama seguida vuelven a desplegar automáticamente.
+- **`upload`** — un tarball subido con `lizard up`.
+
+Cada servicio en ejecución corre como su propio **pod aislado** con una política de red de denegación por defecto, un dominio `..onlizard.com` generado y TLS automático. Esa separación — tú aportas el contenedor, la plataforma lo ejecuta — es [container as a service](https://lizard.build/blog/container-as-a-service), y el blog explica de qué sigues teniendo que ocuparte. Inspecciona y gestiona servicios con:
+
+```bash
+lizard ps # list services with status + URL
+lizard service show # full config as JSON
+lizard service set --set =
+lizard service rename --service
+lizard service delete --service
+```
+
+Los campos de configuración del servicio son **planos** y se asignan 1:1 al esquema en el wire (p. ej. `repoUrl`, `branch`, `buildCommand`, `startCommand`, `containerPort`, `rootDirectory`). No existe anidamiento de `build.*` / `deploy.*`. Consulta [`lizard service`](/cli/service) para ver la lista completa.
+
+
+
+### Servicios app vs. worker
+
+Por defecto, un servicio es una **app HTTP** que escucha en un puerto (`3000` por defecto) y se sirve en su dominio. Un servicio que no escucha en un puerto — un consumidor de colas, reconciliador o bucle de sondeo — debe ejecutarse en [**modo worker**](/deploy/workers) configurando `containerPort=0`. Los workers omiten la inyección de puerto, la comprobación de salud de accesibilidad y el registro en el balanceador de carga.
+
+
+
+## Addons gestionados
+
+Los **addons** son Postgres, Redis y almacenamiento compatible con S3 gestionados que aprovisionas por proyecto:
+
+```bash
+lizard add postgres redis s3
+```
+
+Cada addon expone un conjunto fijo de variables de entorno que tus servicios consumen por **referencia** (`${{.KEY}}`). Consulta [Managed Addons](/addons).
+
+
+
+## Referencias entre recursos
+
+Cualquier valor de un servicio o addon puede referenciarse desde el entorno de otro recurso usando:
+
+```
+${{.}}
+```
+
+Las referencias se resuelven en **tiempo de despliegue** contra el entorno combinado del destino. Se almacenan por ID, así que renombrar el destino después no rompe la referencia. Una referencia a un destino o clave inexistente se resuelve como una cadena vacía (el despliegue **no** falla por eso); solo las referencias circulares lanzan errores.
+
+```bash
+# Wire a service to the project's Postgres
+lizard secrets set DATABASE_URL='${{postgres.DATABASE_URL}}' --service api
+```
+
+Verifica que el consumidor realmente recibió el valor:
+
+```bash
+lizard ssh --service api -- env | grep DATABASE_URL
+```
+
+
+
+## Variables inyectadas por la plataforma
+
+Cada servicio recibe automáticamente estas variables (no se pueden sobrescribir):
+
+| Variable | Descripción |
+|----------|-------------|
+| `PORT` | Puerto en el que tu app debe escuchar (se omite en modo worker) |
+| `LIZARD_SERVICE_NAME` | El nombre del servicio |
+| `LIZARD_PROJECT_ID` | El ID del proyecto |
+| `LIZARD_PUBLIC_DOMAIN` | El dominio público del servicio |
+
+Consulta [Variables & Secrets](/variables) para ver cómo interactúan con tus propias variables y el orden completo de precedencia.
diff --git a/_locales/es/concepts/build-pipeline.mdx b/_locales/es/concepts/build-pipeline.mdx
new file mode 100644
index 0000000..cf5baef
--- /dev/null
+++ b/_locales/es/concepts/build-pipeline.mdx
@@ -0,0 +1,89 @@
+---
+description: "Cómo Lizard convierte el código fuente en una imagen de contenedor: Dockerfile sintetizado, Dockerfile del repositorio o autodetección de lizardpack, y qué activa una reconstrucción."
+---
+
+
+
+# Canal de compilación
+
+Las compilaciones se ejecutan en los nodos de compilación de Lizard — **no necesitas Docker localmente**. Cuando despliegas, la plataforma decide cómo convertir tu código fuente en una imagen de contenedor usando un orden de decisión fijo, y luego ejecuta esa imagen en un pod aislado. No todos los [container as a service](https://lizard.build/blog/container-as-a-service) compilan la imagen por ti; el blog compara las tres formas en que se presenta esta categoría.
+
+
+
+## Orden de decisión de compilación
+
+La plataforma elige exactamente una estrategia de compilación, en este orden:
+
+1. **Dockerfile sintetizado** — si `buildCommand` y/o `startCommand` están configurados en el servicio (o se pasan mediante `lizard up --build-command` / `--start-command`), Lizard genera un Dockerfile a partir de esos comandos. lizardpack no se invoca.
+2. **Dockerfile del repositorio (literal)** — si `dockerfilePath` está configurado en el servicio, ese Dockerfile de tu repositorio se usa sin cambios.
+3. **Autodetección de lizardpack** — en caso contrario, la plataforma clona tu código fuente y ejecuta **lizardpack**, su generador de buildpacks/Dockerfile.
+
+
+
+### Autodetección de lizardpack
+
+lizardpack inspecciona tu repositorio y construye una imagen optimizada de múltiples etapas. Stacks compatibles, emparejados en este orden:
+
+**Hugo → Go → Node → Python → Rust → Ruby → PHP → Java → static**
+
+Consulta las [Guías de frameworks](/framework-guides) para ver scripts de producción, adaptadores, rutas de salida y puertos. La detección usa archivos del proyecto y dependencias; un repositorio que coincida con varios proveedores sigue este orden.
+
+En esta ruta:
+
+- Si existe un `Dockerfile` del repositorio **y** tiene un paso de compilación real (una línea `RUN `, no solo `COPY dist/`), se usa literalmente.
+- En caso contrario, lizardpack genera el Dockerfile por ti.
+- El **comando de inicio** se detecta automáticamente: una línea `Procfile` `web:` (Python/Ruby) o `package.json` `scripts.start` (Node) se recoge automáticamente. Para ver la línea exacta que quieren Django, Flask y FastAPI, consulta [hosting de aplicaciones Python](https://lizard.build/blog/python-app-hosting).
+- El **puerto** se infiere a partir de `EXPOSE`, los valores predeterminados del framework o una variable de entorno `PORT` explícita.
+
+> **Ojo:** Un Dockerfile que solo copia artefactos ya compilados (`COPY dist/`, `build/`, `out/`, `.next/`, `public/`) **sin** un paso de compilación `RUN` se considera incompleto y lizardpack lo regenera. Añade un paso de compilación real o configura `dockerfilePath` para forzar el uso literal.
+
+
+
+## Qué activa una reconstrucción
+
+| Acción | ¿Reconstruye? |
+|--------|-----------|
+| `git push` en la rama seguida | ✅ mediante webhook de GitHub |
+| `lizard redeploy` / `lizard up` | ✅ explícito |
+| Cambiar variables `VITE_*` o `NEXT_PUBLIC_*` | ✅ los valores de tiempo de compilación se integran en la imagen |
+| `service set` de campos de compilación (`repoUrl`, `branch`, `sourceType`, `buildCommand`, `dockerfilePath`, `rootDirectory`) | ✅ reconstruye automáticamente |
+| `service set` de campos solo de runtime (`startCommand`, `preDeployCommand`, `containerPort`, `watchPatterns`) | ❌ ejecuta `lizard redeploy` para aplicar |
+| Cualquier otro cambio de variable de entorno / secreto | ❌ se aplica con un reinicio rápido (sin reconstrucción) |
+
+> **No compiles dos veces.** Después de un `service set` que cambia un campo de compilación, la reconstrucción se activa automáticamente — no encadenes un `lizard redeploy` después, o pondrás en cola una segunda compilación redundante.
+
+
+
+## Ver una compilación
+
+Los registros de compilación se transmiten durante `lizard up`. Para cualquier servicio:
+
+```bash
+lizard logs --build # the most recent build's logs
+lizard events # deploy history + replica status
+```
+
+Si una compilación falla, lee `lizard logs --build`, corrige la causa (en tu repositorio o ajustando `buildCommand` / `startCommand` mediante `lizard service set`) y luego `lizard redeploy`.
+
+
+
+## Notas de runtime
+
+- **Sin Docker `HEALTHCHECK`.** El runtime no ejecuta el ciclo de healthcheck de Docker, por lo que las directivas `HEALTHCHECK` se ignoran. Lizard ejecuta en su lugar una sonda TCP contra tu puerto (omitida en [modo worker](/deploy/workers)).
+- **No escribas un Dockerfile sin necesidad.** lizardpack detecta automáticamente la mayoría de los stacks — prueba primero con un despliegue y añade un Dockerfile (o configura `dockerfilePath`) solo si la compilación automática no se ajusta a tu caso.
+
+
+
+## Referencia de configuración de compilación
+
+| Campo | Descripción |
+|-------|-------------|
+| `buildCommand` | Comando para compilar tu aplicación → fuerza la ruta de **Dockerfile sintetizado** |
+| `startCommand` | Comando para iniciar tu aplicación en runtime |
+| `preDeployCommand` | Se ejecuta una vez antes de cada despliegue (p. ej., migraciones de BD) |
+| `dockerfilePath` | Ruta a un Dockerfile del repositorio para usar **literalmente** |
+| `rootDirectory` | Subdirectorio desde el que compilar (monorepos) |
+| `watchPatterns` | Solo redesplegar cuando cambien rutas coincidentes |
+| `containerPort` | Puerto TCP en el que escucha tu aplicación (predeterminado `3000`; `0` = [worker](/deploy/workers)) |
+
+Configura cualquiera de estos con `lizard service set --set =`. Consulta [`lizard service`](/cli/service).
diff --git a/_locales/es/concepts/deployments.mdx b/_locales/es/concepts/deployments.mdx
new file mode 100644
index 0000000..73a8200
--- /dev/null
+++ b/_locales/es/concepts/deployments.mdx
@@ -0,0 +1,95 @@
+---
+description: "El ciclo de despliegue en Lizard: qué desencadena una compilación, cómo el tráfico cambia a réplicas en buen estado y en qué se diferencian los reinicios de los redespliegues."
+---
+
+
+
+# Despliegues
+
+Un **despliegue** es una compilación y publicación de un servicio. La ruta de publicación depende del entorno de ejecución del servicio. Una compilación correcta no demuestra por sí sola que la aplicación se haya iniciado o pueda atender solicitudes.
+
+
+
+## Cómo ocurre un despliegue
+
+Un despliegue se desencadena por cualquiera de estos casos:
+
+- Un **`git push`** a la rama seguida (para servicios con código fuente `github`).
+- **`lizard redeploy`** — recompila desde el commit más reciente (git) o la última carga, con las variables actuales.
+- **`lizard up`** — carga el directorio actual y lo despliega.
+- Un **`service set`** que cambia un campo que afecta a la compilación.
+
+```bash
+lizard redeploy --service api # rebuild + redeploy from current source
+lizard up # upload cwd and deploy
+```
+
+
+
+## Ciclo de vida
+
+1. **Compilación** — la plataforma ejecuta tu compilación (consulta [Proceso de compilación](/concepts/build-pipeline)).
+2. **Predeploy** — si `preDeployCommand` está configurado, se ejecuta una vez (por ejemplo, migraciones).
+3. **Inicio** — Lizard inicia la aplicación para su entorno de ejecución configurado.
+4. **Comprobación de estado** — la plataforma verifica que se pueda acceder al puerto de la app (se omite para [workers](/deploy/workers)).
+5. **Verificación** — inspecciona el estado de la publicación y llama a la URL de la aplicación. La accesibilidad del puerto no es una comprobación completa del estado de la aplicación.
+
+
+
+## Salida en streaming
+
+Cuando ejecutas un `lizard up` no desacoplado (o `redeploy`), los registros de compilación se transmiten en vivo. Con `--json`, obtienes un evento JSON por línea:
+
+```json
+{ "event": "log", "line": "..." }
+{ "event": "deployed", "status": "...", "url": "https://..." }
+```
+
+que termina en `deployed`, `failed` o `deploying`. Usa `--detach` para iniciar el despliegue y volver inmediatamente sin transmitir la salida.
+
+
+
+## Inspección del historial
+
+```bash
+lizard events # deploy history + per-replica status
+lizard events --limit 25 # show more
+lizard ps # current services, status, and URLs
+```
+
+En el [panel](/dashboard), la vista de **Despliegues** muestra la cronología completa, los registros de compilación de cada despliegue y un panel de detalles para cada publicación.
+
+
+
+## Reinicios vs. redespliegues
+
+| Comando | Qué hace |
+|---------|--------------|
+| `lizard restart --service ` | Reinicio de la compilación **actual** — sin recompilar |
+| `lizard redeploy --service ` | **Compilación** nueva desde el último commit/carga, y luego publicación |
+
+Usa `restart` para reciclar réplicas (por ejemplo, para aplicar un secreto de ejecución que no se recargó en caliente); usa `redeploy` cuando necesites una nueva compilación.
+
+
+
+## Recuperación tras un fallo
+
+Inspecciona los registros del fallo o reinicio más reciente:
+
+```bash
+lizard logs --restart latest # log tail around the latest restart
+lizard logs --restart # a specific restart
+lizard events # see replica status
+```
+
+
+
+## Cambios de configuración (sin recompilar)
+
+La mayoría de los cambios en variables de entorno y secretos se aplican sin recompilar: Lizard actualiza la configuración del servicio y lo reinicia, lo que tarda unos segundos. Los valores de tiempo de compilación (`VITE_*`, `NEXT_PUBLIC_*`) y los cambios en campos de compilación sí fuerzan una recompilación — consulta la [tabla de desencadenantes de recompilación](/concepts/build-pipeline#what-triggers-a-rebuild).
+
+
+
+## Publicaciones fallidas y recuperación
+
+Una compilación fallida y un inicio fallido de la aplicación son casos distintos. No asumas que una publicación anterior sigue atendiendo tráfico en todos los entornos de ejecución. Inspecciona el servicio activo, los registros de compilación y los registros de ejecución. `lizard redeploy` vuelve a compilar el origen seleccionado; no es un comando para restaurar una compilación anterior. Revierte el commit del código fuente cuando sea necesario, desplíegalo y comprueba el resultado. Consulta [problemas conocidos](/platform/known-issues).
diff --git a/_locales/es/concepts/index.mdx b/_locales/es/concepts/index.mdx
new file mode 100644
index 0000000..fabaf8b
--- /dev/null
+++ b/_locales/es/concepts/index.mdx
@@ -0,0 +1,19 @@
+---
+description: "El modelo central detrás de Lizard: cómo se organiza tu código, cómo se compila y cómo una versión llega a producción."
+---
+
+
+
+# Conceptos
+
+El modelo central detrás de Lizard: cómo se organiza tu código, cómo se compila y cómo una versión llega a producción. Lee esto una vez y el resto de la documentación tendrá sentido.
+
+Para ver el modelo un nivel más arriba — cómo se llama una plataforma que ejecuta tu contenedor por ti y en qué se diferencia de PaaS, FaaS e IaaS — lee [container as a service](https://lizard.build/blog/container-as-a-service) en el blog.
+
+
+
+## En esta sección
+
+- [Arquitectura](/concepts/architecture) — la jerarquía workspace → project → service, los addons gestionados y las referencias entre recursos.
+- [Pipeline de compilación](/concepts/build-pipeline) — cómo el código fuente se convierte en una imagen de contenedor (Dockerfile sintetizado, Dockerfile del repositorio o autodetección de lizardpack) y qué activa una nueva compilación.
+- [Despliegues](/concepts/deployments) — el ciclo de compilación y publicación, reinicios frente a redeploys, y cambios de configuración en vivo.
diff --git a/_locales/es/dashboard.mdx b/_locales/es/dashboard.mdx
new file mode 100644
index 0000000..059764a
--- /dev/null
+++ b/_locales/es/dashboard.mdx
@@ -0,0 +1,94 @@
+---
+description: "Qué añade el panel de Lizard al CLI: estado de servicios, cronología de despliegues, logs en streaming, métricas, exploradores de datos, equipo y facturación."
+---
+
+
+
+# Panel de la app
+
+El panel de Lizard es el complemento visual del CLI. Todo lo que haces con `lizard …` se refleja aquí, además de lo que es más fácil con una interfaz — logs en streaming, gráficos, los exploradores de datos y la gestión de equipo/facturación.
+
+Si prefieres no abrir un terminal en absoluto, deja que el agente ejecute los comandos y observa el resultado aquí — la ruta de [desplegar una app Antigravity en producción](https://lizard.build/blog/google-antigravity-how-to-deploy-your-app-to-production#deploy-an-antigravity-app-to-production-without-typing-a-command), que requiere dos prompts y nada escrito en un terminal.
+
+Ábrelo desde el CLI:
+
+```bash
+lizard open # open the current project
+lizard docs # open this documentation
+```
+
+
+
+## Qué hay en el panel
+
+
+
+### Servicios
+
+La vista principal del proyecto muestra cada servicio con su indicador de estado, dominio generado y un acceso rápido a logs, métricas, secretos y ajustes. Crea nuevos servicios (desde un repositorio de GitHub o vacío) directamente desde aquí.
+
+
+
+### Despliegues
+
+Una cronología de cada despliegue, con logs de compilación por despliegue y un panel de detalles (commit, estado, réplicas). Este es el equivalente visual de `lizard events` + `lizard logs --build`.
+
+### Logs
+
+Streaming en vivo de logs de ejecución y compilación con búsqueda y filtros por nivel — la contraparte en la interfaz de [`lizard logs`](/observability/logs).
+
+
+
+### Métricas y uso
+
+Gráficos de CPU, memoria, red y disco por servicio, además de una vista de **Uso** que desglosa el consumo y el coste en todo el proyecto. Refleja [`lizard metrics --cost`](/observability/metrics).
+
+
+
+### Variables y secretos
+
+Gestiona secretos con alcance de servicio y de proyecto, con valores ocultos y compatibilidad con referencias (`${{…}}`). Consulta [Variables y secretos](/variables).
+
+
+
+### Dominios
+
+Añade dominios personalizados, consulta registros DNS y sigue el estado de verificación y TLS. Consulta [Redes](/networking).
+
+
+
+### Exploradores de addons gestionados
+
+Cada addon incluye un explorador de datos:
+
+- **Postgres** — un editor SQL/de tablas para consultar y editar datos.
+- **Redis** — un explorador de clave/valor.
+- **S3** — un explorador de buckets y objetos con subida/descarga.
+
+
+
+### Integración con GitHub
+
+Conecta la GitHub App, elige repositorios y gestiona qué repositorios puede compilar Lizard. Consulta [Desplegar desde GitHub](/deploy/github).
+
+
+
+### Ajustes, equipo y facturación
+
+Ajustes del proyecto y del workspace, invitaciones de miembros y roles, uso de recursos, créditos de la cuenta y recarga automática opcional. Las cuentas estándar usan [pay as you go](/platform/billing) sin suscripción mensual.
+
+
+
+## CLI ↔ Panel
+
+| Tarea | CLI | Vista del panel |
+|------|-----|----------------|
+| Historial de despliegues | `lizard events` | Despliegues |
+| Streaming de logs | `lizard logs` | Logs |
+| Gráficos de recursos | `lizard metrics` | Métricas / Uso |
+| Gestionar secretos | `lizard secrets` | Variables |
+| Dominios personalizados | `lizard domain` | Dominios |
+| Explorar Postgres/Redis/S3 | `lizard run` / `lizard ssh` | Exploradores de addons |
+| Invitar a compañeros de equipo | — | Equipo / Ajustes |
+
+Usa lo que mejor se adapte al momento — operan sobre los mismos proyectos y servicios.
diff --git a/_locales/es/deploy/_meta.ts b/_locales/es/deploy/_meta.ts
new file mode 100644
index 0000000..ae8dd3b
--- /dev/null
+++ b/_locales/es/deploy/_meta.ts
@@ -0,0 +1,9 @@
+export default {
+ index: "Resumen",
+ github: "Desplegar desde GitHub",
+ upload: "Desplegar desde código local",
+ workers: "Workers en segundo plano",
+ scaling: "Escalado",
+ regions: "Regiones",
+ troubleshooting: "Solución de problemas",
+};
diff --git a/_locales/es/deploy/github.mdx b/_locales/es/deploy/github.mdx
new file mode 100644
index 0000000..f7a19b3
--- /dev/null
+++ b/_locales/es/deploy/github.mdx
@@ -0,0 +1,98 @@
+---
+description: "Conecta un repositorio de GitHub para que cada push a la rama seguida haga build y redespliegue, incluyendo repositorios privados, cambio de ramas y monorepos."
+---
+
+
+
+# Desplegar desde GitHub
+
+Conectar un repositorio de GitHub es la forma recomendada de ejecutar una app en Lizard: cada push a la rama seguida hace build y redespliega automáticamente.
+
+
+
+## Crear un servicio desde un repositorio
+
+```bash
+lizard add -r your-org/your-app
+```
+
+Esto crea un servicio con origen `github`, clona el repositorio, detecta automáticamente el stack ([lizardpack](/concepts/build-pipeline)), hace el build y devuelve una URL activa. Banderas útiles:
+
+| Bandera | Propósito |
+|------|---------|
+| `-r, --repo ` | Repositorio de origen |
+| `-n, --name ` | Nombre del servicio (se usa en las referencias `${{name.KEY}}` y en el panel) |
+| `-v, --variables ` | Inicializar una variable de entorno; repetible |
+| `--region ` | Región donde desplegar |
+| `--no-deploy` | Adjunta el repositorio pero omite el primer build |
+
+
+
+## Repositorios privados
+
+Conecta la GitHub App de Lizard una vez por cuenta para conceder acceso a repositorios privados:
+
+```bash
+lizard git connect
+lizard git status # show connection + repo status
+```
+
+También puedes conectar y gestionar el acceso a repositorios desde la página de **integración de GitHub** en el panel (`lizard open`).
+
+
+
+## Apuntar un servicio existente a un repositorio
+
+Para cambiar un servicio a un origen git (o cambiar el repositorio/rama):
+
+```bash
+lizard service set api \
+ --set sourceType=github \
+ --set repoUrl=https://github.com/your-org/your-app \
+ --set branch=main
+```
+
+Cambiar un campo de build activa automáticamente un rebuild — **no** encadenes un `redeploy` después.
+
+> **Nota:** `lizard up` siempre fuerza `sourceType=upload`. No lo uses para actualizar un servicio respaldado por git — haz push al remoto o usa `lizard redeploy` en su lugar.
+
+
+
+## Redespliegue automático en push
+
+Una vez que `repoUrl` está configurado, los push a la `branch` correspondiente redespliegan automáticamente mediante el webhook de GitHub. Para limitar qué push activan un redespliegue:
+
+- **`rootDirectory`** — solo hace build de un subdirectorio (monorepos).
+- **`watchPatterns`** — solo redespliega cuando cambian rutas coincidentes.
+
+```bash
+lizard service set api --set watchPatterns='apps/api/**,packages/**'
+```
+
+
+
+## Cambiar de rama
+
+```bash
+lizard git checkout api staging # move the `api` service to the `staging` branch and redeploy
+```
+
+## Monorepos
+
+Para un repositorio que contiene varias apps, crea un servicio por app y configura su `rootDirectory` con la subruta:
+
+```bash
+lizard add -r your-org/monorepo -n api
+lizard service set api --set rootDirectory=apps/api
+```
+
+Si tu directorio actual es una subapp dentro de un repositorio cuyo directorio padre ya está vinculado, añade el servicio en el proyecto del padre y configura `rootDirectory` con la subruta del cwd.
+
+
+
+## Ver también
+
+- [Proceso de compilación](/concepts/build-pipeline) — cómo se detecta y se hace build de tu stack.
+- [Desplegar desde código local](/deploy/upload) — cuando no tienes un remoto.
+- [`lizard git`](/cli/git) — la referencia completa de comandos para `connect`, `status` y `checkout`.
+- [Dónde desplegar una aplicación que construyó tu IDE de IA](https://lizard.build/blog/google-antigravity-how-to-deploy-your-app-to-production#where-to-deploy-an-app-your-ai-ide-built) — cómo apuntar esto a un repositorio que escribió un agente, y cuánto cuesta.
diff --git a/_locales/es/deploy/index.mdx b/_locales/es/deploy/index.mdx
new file mode 100644
index 0000000..738b966
--- /dev/null
+++ b/_locales/es/deploy/index.mdx
@@ -0,0 +1,22 @@
+---
+description: "Todo sobre poner un servicio en funcionamiento en Lizard y mantenerlo allí: despliegues desde GitHub y localmente, workers, escalado, regiones y soluciones."
+---
+
+
+
+# Despliegue
+
+Todo sobre poner un servicio en funcionamiento en Lizard y mantenerlo así — desde tu primer push hasta el escalado y la ubicación por región.
+
+¿Primero lo estás comparando con otro host? El blog pone lado a lado los precios de nueve plataformas de [container as a service](https://lizard.build/blog/container-as-a-service).
+
+
+
+## En esta sección
+
+- [Desplegar desde GitHub](/deploy/github) — conecta un repositorio para que los pushes a la rama supervisada vuelvan a desplegarse automáticamente.
+- [Desplegar desde código local](/deploy/upload) — publica el directorio actual con `lizard up`, sin necesidad de Git.
+- [Workers en segundo plano](/deploy/workers) — ejecuta consumidores de colas y bucles de sondeo con `containerPort=0`.
+- [Escalado](/deploy/scaling) — ajusta réplicas, recursos y almacenamiento.
+- [Regiones](/deploy/regions) — dónde se ejecutan tus servicios.
+- [Solución de problemas](/deploy/troubleshooting/incomplete-dockerfile) — soluciones para los problemas de compilación y despliegue más comunes.
diff --git a/_locales/es/deploy/regions.mdx b/_locales/es/deploy/regions.mdx
new file mode 100644
index 0000000..0a1bc1a
--- /dev/null
+++ b/_locales/es/deploy/regions.mdx
@@ -0,0 +1,40 @@
+---
+description: "Elige dónde se ejecutan tus servicios y addons, ubica juntos los recursos con estado para reducir la latencia y observa cómo la región afecta a los dominios generados."
+---
+
+
+
+# Regiones
+
+Los servicios y addons se aprovisionan en una región. Lista las regiones disponibles para tu cuenta y elige una al crear.
+
+
+
+## Listar regiones
+
+```bash
+lizard regions
+lizard regions --json
+```
+
+
+
+## Elegir una región
+
+Pasa `--region ` al crear un servicio o addon:
+
+```bash
+lizard add -r your-org/your-app --region
+lizard add postgres --region
+lizard up --region
+```
+
+Si no especificas una región, la plataforma usa la predeterminada del proyecto.
+
+> **Ubica juntos los recursos con estado.** Coloca un servicio y los addons con los que se comunica (Postgres, Redis, S3) en la **misma región** para mantener baja la latencia y evitar cargos por datos entre regiones.
+
+
+
+## Dominios generados
+
+Cada servicio recibe un dominio generado en `*.onlizard.com` con TLS automático, independientemente de la región. El almacenamiento de objetos servido desde un [addon de S3](/addons/storage) usa un host de gateway con alcance regional (`s3-.onlizard.com`). Para asociar tu propio nombre de host, consulta [Networking](/networking).
diff --git a/_locales/es/deploy/scaling.mdx b/_locales/es/deploy/scaling.mdx
new file mode 100644
index 0000000..2eaeb59
--- /dev/null
+++ b/_locales/es/deploy/scaling.mdx
@@ -0,0 +1,78 @@
+---
+description: "Añade réplicas o aumenta la CPU y la memoria de un servicio, y amplía el almacenamiento de los addons. Rangos permitidos, comportamiento del despliegue y cómo verificar un cambio."
+---
+
+
+
+# Escalado
+
+Escala un servicio horizontalmente (más réplicas) o verticalmente (más CPU/memoria) con `lizard scale`. El almacenamiento de addons se amplía de la misma forma.
+
+
+
+## Escalar un servicio
+
+```bash
+lizard scale --service api --replicas 3
+lizard scale --service api --cpu 2 --memory 2048
+```
+
+| Bandera | Se aplica a | Valores permitidos |
+|------|-----------|----------------|
+| `--replicas ` | apps | `1`–`10` |
+| `--cpu ` | apps | núcleos completos: `1`, `2`, `3`, `4` |
+| `--memory ` | apps | `128`–`8192` MB (pasos de 1 MB) |
+| `--storage ` | **solo addons**, solo ampliación | `512`, `1024`, `2048`, `4096`, `8192`, `16384` |
+
+Puedes combinar flags en un solo comando. Los cambios de réplicas se aplican sin reconstrucción.
+
+
+
+## Escalado horizontal
+
+Ejecuta varias réplicas de una app detrás del balanceador de carga:
+
+```bash
+lizard scale --service api --replicas 5
+```
+
+Cada réplica es su propio pod. Asegúrate de que tu app sea sin estado (guarda el estado en [Postgres](/addons/postgres), [Redis](/addons/redis) o [S3](/addons/storage)) para que las réplicas sean intercambiables.
+
+
+
+## Escalado vertical
+
+Asigna más recursos a una sola réplica:
+
+```bash
+lizard scale --service api --cpu 4 --memory 8192
+```
+
+
+
+## Ampliar el almacenamiento de addons
+
+Los volúmenes de datos de addons son **solo ampliación**: puedes aumentar el almacenamiento, pero no reducirlo:
+
+```bash
+lizard scale --service postgres --storage 8192
+```
+
+
+
+## Verificación
+
+```bash
+lizard ps # replica status + URL
+lizard events # per-replica deploy/scale history
+lizard metrics # live CPU / memory / network / disk
+lizard metrics --cost # include cost
+```
+
+
+
+## Ver también
+
+- [Observabilidad → Métricas](/observability/metrics) — supervisión de recursos y costes.
+- [`lizard scale`](/cli/scale) — la referencia completa de comandos.
+- [Qué cobran los proveedores de CaaS en 2026](https://lizard.build/blog/container-as-a-service#what-caas-providers-charge-in-2026) — tarifas por vCPU, por GB y de salida en nueve plataformas, para calcular una factura antes de escalar.
diff --git a/_locales/es/deploy/troubleshooting/_meta.ts b/_locales/es/deploy/troubleshooting/_meta.ts
new file mode 100644
index 0000000..9c02027
--- /dev/null
+++ b/_locales/es/deploy/troubleshooting/_meta.ts
@@ -0,0 +1,5 @@
+export default {
+ 'incomplete-dockerfile': "Los cambios en Dockerfile no se aplican",
+ 'double-build': "Un cambio puso dos compilaciones en cola",
+ 'service-never-healthy': "El servicio nunca llega a estar saludable",
+};
diff --git a/_locales/es/deploy/troubleshooting/double-build.mdx b/_locales/es/deploy/troubleshooting/double-build.mdx
new file mode 100644
index 0000000..2211b16
--- /dev/null
+++ b/_locales/es/deploy/troubleshooting/double-build.mdx
@@ -0,0 +1,53 @@
+---
+description: "Por qué lizard service set seguido de un redeploy pone en cola dos builds, qué campos reconstruyen por sí solos y cómo detener el redundante."
+---
+
+
+
+# Mi cambio puso en cola dos builds seguidos
+
+Ejecutaste `lizard service set` para cambiar un campo, luego `lizard redeploy`, y terminaste con dos builds en lugar de uno.
+
+
+
+## Qué significa esto
+
+La llamada `service set` ya activó una reconstrucción por sí sola. El `redeploy` posterior puso en cola una segunda reconstrucción redundante.
+
+
+
+## Por qué puede pasar esto
+
+Cambiar un campo que **afecta al build** en un servicio — `repoUrl`, `branch`, `sourceType`, `buildCommand`, `dockerfilePath` o `rootDirectory` — activa una reconstrucción automática de inmediato. Cambiar un campo **solo de runtime** — `startCommand`, `preDeployCommand`, `containerPort`, `watchPatterns` — **no** activa una reconstrucción automática; solo surte efecto en el siguiente deploy.
+
+Es fácil encadenar por reflejo un `redeploy` después de cada `service set`, pero eso solo tiene sentido para los campos solo de runtime.
+
+
+
+## Posibles soluciones
+
+
+
+### Comprueba qué tipo de campo cambiaste
+
+Consulta la [tabla de activadores de reconstrucción](/concepts/build-pipeline#what-triggers-a-rebuild). Si es un campo de build, la reconstrucción ya está en cola; no hagas nada más.
+
+```bash
+lizard events # confirm only one build is in flight
+```
+
+
+
+### Solo vuelve a desplegar después de cambios solo de runtime
+
+```bash
+lizard service set api --set startCommand="node server.js"
+lizard redeploy --service api # needed here — startCommand doesn't auto-rebuild
+```
+
+
+
+## Ver también
+
+- [Pipeline de build → qué activa una reconstrucción](/concepts/build-pipeline#what-triggers-a-rebuild)
+- [`lizard service`](/cli/service) — la referencia completa de comandos.
diff --git a/_locales/es/deploy/troubleshooting/incomplete-dockerfile.mdx b/_locales/es/deploy/troubleshooting/incomplete-dockerfile.mdx
new file mode 100644
index 0000000..58da516
--- /dev/null
+++ b/_locales/es/deploy/troubleshooting/incomplete-dockerfile.mdx
@@ -0,0 +1,57 @@
+---
+description: "Por qué Lizard reemplaza un Dockerfile del repositorio que no tiene paso de compilación, cómo funciona la regla de Dockerfile incompleto y cómo hacer que se use el tuyo literalmente."
+---
+
+
+
+# Mis cambios en el Dockerfile no parecen aplicarse
+
+Tienes un `Dockerfile` en tu repositorio, lo editaste, pero la compilación que ejecuta Lizard no coincide con lo que escribiste.
+
+
+
+## Qué significa esto
+
+La plataforma decidió que el Dockerfile de tu repositorio estaba **incompleto** y regeneró uno por ti con [lizardpack](/concepts/build-pipeline) en lugar de usar el tuyo literalmente.
+
+
+
+## Por qué puede pasar esto
+
+Lizard solo usa un Dockerfile del repositorio **literalmente** en la ruta de autodetección de lizardpack si tiene un paso de compilación real: una línea `RUN `. Un Dockerfile que solo copia artefactos precompilados (`COPY dist/`, `build/`, `out/`, `.next/`, `public/`) sin un paso `RUN` se trata como incompleto, asumiendo que esos artefactos se compilaron fuera de la imagen. En ese caso, lizardpack genera un Dockerfile de reemplazo que incluye el paso de compilación faltante.
+
+Esto solo se aplica en la ruta de autodetección de lizardpack. Si `buildCommand` o `startCommand` está configurado en el servicio, Lizard sintetiza un Dockerfile a partir de esos comandos y no mira en absoluto el Dockerfile de tu repositorio.
+
+
+
+## Posibles soluciones
+
+
+
+### Agrega un paso de compilación real
+
+Si quieres que tu Dockerfile se use tal cual, dale un paso de compilación real en lugar de copiar salida precompilada:
+
+```dockerfile
+RUN npm ci && npm run build
+```
+
+
+
+### O fuerza el uso literal
+
+Borra las anulaciones de compilación e inicio, y luego configura `dockerfilePath` en la misma actualización. Las anulaciones tienen prioridad sobre la ruta del archivo:
+
+```bash
+lizard service set api --set buildCommand=null --set startCommand=null --set dockerfilePath=Dockerfile
+```
+
+
+
+## Ver también
+
+- [Proceso de compilación](/concepts/build-pipeline) — el orden completo de decisión de compilación.
+- [Referencia de configuración de compilación](/concepts/build-pipeline#build-configuration-reference)
+- [Implementar cualquier aplicación Python en Lizard](https://lizard.build/blog/python-app-hosting#deploying-any-python-app-on-lizard) — cuándo dejar que lizardpack escriba el Dockerfile y cuándo aportar el tuyo.
+
+Cambiar estos campos de compilación puede iniciar una compilación. Revisa `lizard events` antes de enviar otro `redeploy`, para evitar iniciar una segunda compilación.
diff --git a/_locales/es/deploy/troubleshooting/service-never-healthy.mdx b/_locales/es/deploy/troubleshooting/service-never-healthy.mdx
new file mode 100644
index 0000000..f1c460b
--- /dev/null
+++ b/_locales/es/deploy/troubleshooting/service-never-healthy.mdx
@@ -0,0 +1,59 @@
+---
+description: "La compilación se completa, pero el despliegue sigue sin estar healthy. Vinculación de puertos, modo worker accidental y otras causas de una verificación de estado fallida."
+---
+
+
+
+# Mi servicio se despliega pero nunca pasa a healthy
+
+La compilación se completa, las réplicas se inician, pero el despliegue sigue pendiente, se marca como unhealthy o nunca recibe tráfico.
+
+
+
+## Qué significa esto
+
+La verificación de estado de la plataforma —que comprueba que se puede acceder al puerto de tu app— nunca se completa correctamente, así que el tráfico nunca se redirige a las nuevas réplicas.
+
+
+
+## Por qué puede pasar esto
+
+- **Tu app no está escuchando en el puerto esperado.** Lizard inyecta una variable de entorno `PORT` (puerto de contenedor predeterminado `3000`) y comprueba que se pueda acceder a tu app ahí. Si tu app tiene otro puerto fijado en el código, o nunca se enlaza a ninguno, la verificación de estado falla indefinidamente. Una app de Python es el caso más habitual: `gunicorn` y `uvicorn` se enlazan a `127.0.0.1` a menos que les indiques otra cosa, y la sonda viene desde fuera del proceso. [Hosting de apps Python](https://lizard.build/blog/python-app-hosting#what-a-python-app-actually-needs-from-a-host) tiene la línea `--bind 0.0.0.0:$PORT` que necesita cada framework.
+- **El servicio está accidentalmente en modo worker.** Configurar `containerPort=0` pone un servicio en [modo worker](/deploy/workers), lo que **omite por completo la verificación de estado y el registro en el balanceador de carga**. Un servicio que debería servir HTTP pero se cambió a `containerPort=0` se desplegará "correctamente" y simplemente nunca servirá nada: el modo worker oculta el problema subyacente de arranque en lugar de mostrarlo.
+
+
+
+## Posibles soluciones
+
+
+
+### Comprueba el puerto actual
+
+```bash
+lizard port --service api
+```
+
+Si esto muestra `worker mode`, el servicio tiene `containerPort=0`. Vuelve a configurarlo con un puerto real si este servicio debe servir HTTP:
+
+```bash
+lizard port 3000 --service api
+lizard redeploy --service api
+```
+
+
+
+### Confirma que tu app está escuchando donde Lizard espera
+
+Revisa los logs de ejecución para detectar errores de arranque y verifica el puerto al que la app realmente se enlazó frente al que Lizard inyectó:
+
+```bash
+lizard logs --service api
+lizard ssh --service api -- env | grep PORT
+```
+
+
+
+## Ver también
+
+- [Background Workers](/deploy/workers) — cuándo `containerPort=0` es (y no es) la opción correcta.
+- [Despliegues → lifecycle](/concepts/deployments#lifecycle) — dónde se sitúa la verificación de estado dentro de un despliegue.
diff --git a/_locales/es/deploy/upload.mdx b/_locales/es/deploy/upload.mdx
new file mode 100644
index 0000000..f65e6ba
--- /dev/null
+++ b/_locales/es/deploy/upload.mdx
@@ -0,0 +1,84 @@
+---
+description: "Publica el directorio actual con lizard up, sin necesidad de Git. Cubre el manejo de gitignore, las anulaciones de compilación y arranque, y el uso sin interfaz en CI."
+---
+
+
+
+# Desplegar desde código local
+
+Cuando tu código no está en GitHub — o simplemente quieres iterar rápido — sube el directorio actual directamente con `lizard up`. Empaqueta tu árbol de trabajo como un tarball, lo envía a los nodos de compilación y lo despliega.
+
+
+
+## Desplegar el directorio actual
+
+```bash
+lizard up
+```
+
+- Sube el directorio actual como un tarball, respetando `.gitignore` (desactívalo con `--no-gitignore`).
+- Fuerza `sourceType=upload`.
+- Transmite los logs de compilación por SSE y muestra la URL en vivo al finalizar.
+
+Si el directorio todavía no está vinculado a un proyecto, `up` ejecuta primero `init`. En un TTY eso es interactivo; en un entorno no TTY (CI) **no** creará un proyecto silenciosamente: devuelve un error y te pide que ejecutes `lizard init --name ` (o que pases `--name`). Esto evita que un error tipográfico genere un proyecto vacío.
+
+
+
+## Banderas comunes
+
+| Bandera | Propósito |
+|------|---------|
+| `-s, --service ` | Apuntar a un servicio específico o crearlo |
+| `--build-command ` | Anular el comando de compilación |
+| `--start-command ` | Anular el comando de arranque |
+| `--pre-deploy-command ` | Ejecutar una vez antes de cada despliegue (p. ej., migraciones) |
+| `--port ` | Puerto del contenedor (`0` = [modo worker](/deploy/workers)) |
+| `--region ` | Región donde desplegar |
+| `-d, --detach` | Iniciar el despliegue y salir sin transmitir logs |
+| `-c, --ci` | Salida amigable para CI |
+| `--no-gitignore` | Subir todo, ignorando `.gitignore` |
+
+```bash
+lizard up --service api --start-command "node server.js" --port 8080
+```
+
+