DIGI Kurz für Digital

Zero Config. Einfach deployen.

Produktion in ~60 Sekunden.

curl -fsSL https://scaliir.digital/cli/install.sh | bash
start deploy status domain ssh cost down
~/my-project
digi start
◇ Provider Hetzner
◇ Region Nuremberg (eu-central)
◇ Type cx22 · 2 vCPU · 4GB
✓ Server provisioned 34s
✓ Daemon installed
✓ mTLS configured
digi deploy
◇ Packed 1.4MB
✓ Deployed 1.2s
● SSR running on :4321
digi domain --set myapp.dev
✓ DNS verified
✓ TLS issued (Let's Encrypt)
Live at https://myapp.dev
<60s
Kaltstart
~1s
Deploy
0
Downtime
1
Binary

Wie es funktioniert

Eine CLI. Ein Daemon.
Klare Trennung.

digi richtet deinen Server ein und konfiguriert die Runtime. scaled läuft auf dem Server als Reverse Proxy, Deploy-API, TLS-Manager und Prozess-Supervisor.

1

Provisionieren

digi start erstellt einen VPS, generiert mTLS-Zertifikate, installiert den Daemon via cloud-init und speichert Credentials im OS-Schlüsselbund.

Server: cx22 · 2 vCPU · 4GB · Nürnberg
Auth: mTLS (ECDSA P-256) + Bearer-Fallback
Store: macOS Keychain / libsecret
2

Deployen

digi deploy packt dein dist/, lädt es via mTLS hoch, entpackt es auf dem Server und startet den SSR-Prozess. Blue/Green-Swap — Zero Downtime.

Pack: tar.gz von dist/ → mTLS-Upload
Swap: atomarer POSIX-Symlink
Ports: :4321 ↔ :4322 (blue/green)
3

Ausliefern

Der Daemon übernimmt alles: statische Assets, SSR-Proxy, TLS-Terminierung, HTTP→HTTPS-Redirect. Ein Prozess, kein Nginx, kein Caddy.

TLS: ACME DNS-01 (Cloudflare / Hetzner DNS)
Proxy: static → SSR → SPA-Fallback
Process: verwalteter Subprocess via --exec

Befehle

Sieben Befehle. Das war's.

digi start Server provisionieren, Daemon installieren, mTLS konfigurieren
digi deploy dist/ packen, hochladen, entpacken, Blue/Green-Swap
digi status Server-Health, Deployment-Info, Prozessstatus
digi domain Custom Domain setzen, TLS via ACME DNS-01 ausstellen
digi ssh SSH-Session zum Server öffnen
digi cost Monatliche Kostenschätzung für die Infrastruktur anzeigen
digi down Server zerstören, Secrets bereinigen, SSH-Keys entfernen

Unter der Haube

Der scaled Daemon

Kompilierte Bun-Binary

Einzelne Executable. Bun-Runtime + Daemon-Code. Keine Installation, keine Deps.

Reverse Proxy

Statische Assets, SSR-Proxy, SPA-Fallback. Kein Nginx erforderlich.

Blue/Green-Deploys

Alternativer Port, Health-Check, atomarer Swap. Zero Downtime.

ACME DNS-01 TLS

Let's Encrypt via Cloudflare oder Hetzner DNS. Automatische Erneuerung.

mTLS Execution API

Deploy, Rollback, Domain — Mutual TLS auf :8443. Gepinnte CA.

Prozess-Supervisor

SSR-Subprocess-Lifecycle. Spawn, Kill, Restart, Health-Check.

Gebaut mit

Minimale Abhängigkeiten.Starke Primitives.

Vier externe TypeScript-Abhängigkeiten. Alles andere ist Bun, OS-Primitives und Infrastruktur-APIs.

Externe Abhängigkeiten
cac picocolors acme-client @clack/prompts
Plattform & Infrastruktur
Bun TypeScript Hetzner Cloud API Hetzner DNS Let's Encrypt cloud-init systemd mTLS (ECDSA) POSIX symlinks tar/gzip

Frameworks

Funktioniert mit Astro + Bun.

Wird mit @scale.digital/astro-bun ausgeliefert — ISR, ETag/304, statisches Manifest. Weitere Frameworks geplant.

Astro
Qwik
Nuxt
SvelteKit

ausgegraut = geplant

Hör auf zu konfigurieren.
Fang an zu shippen.

Ein Befehl zum Provisionieren. Ein Befehl zum Deployen. Das ist der gesamte Workflow.

$ bunx @scale.digital/cli start && bunx @scale.digital/cli deploy
WhatsApp Telegram Mail