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.txtPara 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:
| backend | garante |
|---|---|
| local | cercas: cwd, env sanitizado, timeout, teto de saída, rlimits opcionais (não confina FS/rede) |
| docker | isolamento real: só o workspace montado, --network none, não-root, --cap-drop ALL, rootfs read-only |
| auto | docker se houver; senão cai no local |
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 8765Gateway 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 systemdChecklist de GA
okami policy check --strictpassa (postura de produção; exposto sem Docker REPROVA).OKAMI_API_TOKENdefinido; ingress porallow_chats(nuncaallow_all).sandbox.require_isolation: true(ouprofile: hardened-strict).- Segredos só em
~/.okami/.env(0600); nada literal no YAML versionado. okami doctor --lintsem falhas;okami clean --deepagendado no cron.
okami policy check --strict # gate de prontidão p/ GA
okami doctor --lint # lint de postura (pass/warn/fail)
