Step 20 · Hands-on lab · Hands-on lab · Lab: Deploy o servidor harness e cockpit ENPT
Alembic Complete Visual Course

Lab: Deploy o servidor harness e cockpit

Execute o Alembic como serviço: API harness, eventos SSE e cockpit web atrás do Caddy.

Read the plain version, or open the technical layer on any section.
1

Alembic como serviço


Este lab conecta @alembic/harness, @alembic/web e @alembic/infra. Você irá:

  1. Executar alembic serve --data-dir ~/.alembic em um droplet ou máquina local.
  2. Executar alembic cockpit --data-dir ~/.alembic no mesmo host ou em outro.
  3. POSTar uma run para o harness: curl -X POST http://host:port/api/runs ...
  4. Abrir o cockpit e assistir o progresso da run em tempo real.
  5. (Opcional) Colocar Caddy na frente com TLS e reverse-proxy ambos os serviços.

Pense assim… transformar um eletrodoméstico de cozinha em um restaurante: o motor permanece o mesmo, mas agora várias pessoas podem pedir e ver sua refeição sendo preparada.

Under the hood

createHarnessServer expõe POST /api/runs, GET /api/runs, GET /api/runs/:id e GET /api/runs/:id/events (SSE). createCockpitServer serve assets estáticos e proxy SSE para o harness. O pacote infra fornece um template Caddyfile e um exemplo Docker Compose. Nunca exponha o plano host diretamente; apenas o plano droplet deve ser público.

2

In one picture


CaddyTLS / reverse proxy HarnessHTTP + SSE Cockpitweb UI CLI / curlclient
Caddy público na frente do harness e cockpit; clientes podem POSTar runs e assisti-las.
3

In the code


# iniciar serviços
alembic serve --data-dir ~/.alembic &
alembic cockpit --data-dir ~/.alembic &

# criar uma run
curl -X POST http://localhost:8787/api/runs   -H 'Content-Type: application/json'   -d '{"goal":"Add a /health endpoint","plan":"./alembic.plan.ts","offline":true}'

# stream de eventos
curl -N http://localhost:8787/api/runs/<id>/events

Implementation notes

O servidor harness armazena o estado da run nos mesmos arquivos JSONL append-only da CLI, então cockpit e TUI podem lê-los sem banco de dados. O template Caddy em packages/infra/caddy roteia /api e /events para o harness e todo o resto para o cockpit, mais HTTPS automático.

4

Try it


Inicie alembic serve e alembic cockpit localmente, crie uma run com curl e assista os eventos no navegador e com curl -N.

Segurança: Por que apenas o plano droplet deve ser público?
5

Quick check


Qual endpoint transmite eventos de run como SSE?