// guias · 03

Self-hosting e produção

Em dev, a postura é amigável (não quebra sua máquina). Antes de expor o agente (Telegram, API, Paperclip), você liga o isolamento real e roda a conformance em modo…

Docker

docker build -f deploy/Dockerfile -t okami-agent .
docker compose -f deploy/docker-compose.yml run --rm okami doctor
docker compose -f deploy/docker-compose.yml run --rm okami \
  task "crie hello.txt" -e file_exists:hello.txt

Para um LMStudio na máquina host, aponte api_base para http://host.docker.internal:PORT/v1 (no okami.local.yaml, não versionado).

Sandbox: dev → hardened

O run_shell e os processos em background rodam sob uma política de sandbox. Há dois backends, porque a garantia é diferente de verdade:

backendgarante
localcercas: cwd, env sanitizado, timeout, teto de saída, rlimits opcionais (não confina FS/rede)
dockerisolamento real: só o workspace montado, --network none, não-root, --cap-drop ALL, rootfs read-only
autodocker se houver; senão cai no local
okami.yaml
sandbox:
  profile: hardened          # dev | hardened | hardened-strict
  backend: docker            # local | docker | auto
  mode: workspace-write      # read-only | workspace-write | yolo
  network: false
  timeout: 60
  egress_allow: [api.github.com]   # allowlist de saída (via proxy filtrante)
  require_isolation: true    # exposto SEM docker → run_shell DESABILITADO (não degrada)

API HTTP

okami serve exige OKAMI_API_TOKEN (fail-closed) e faz bind em 127.0.0.1 por padrão. --host 0.0.0.0 expõe à rede — só com token e, idealmente, atrás de um proxy TLS.

okami config set OKAMI_API_TOKEN <token>
okami serve --host 0.0.0.0 --port 8765

Gateway como serviço

Por padrão o okami gateway roda em background, grava o PID/log em .okami/ e devolve o terminal. Para um serviço de verdade, rode --foreground sob systemd/supervisor.

okami gateway              # background; --status / --stop
okami gateway --foreground # primeiro plano (logs ao vivo) — use sob systemd

Checklist de GA

  1. okami policy check --strict passa (postura de produção; exposto sem Docker REPROVA).
  2. OKAMI_API_TOKEN definido; ingress por allow_chats (nunca allow_all).
  3. sandbox.require_isolation: true (ou profile: hardened-strict).
  4. Segredos só em ~/.okami/.env (0600); nada literal no YAML versionado.
  5. okami doctor --lint sem falhas; okami clean --deep agendado no cron.
okami policy check --strict   # gate de prontidão p/ GA
okami doctor --lint           # lint de postura (pass/warn/fail)

Abrir esta página nos docs interativos