Início

Conceitos

Conceitos

O Crabbox fornece computadores a agentes e pessoas. Você edita localmente; uma locação reserva a máquina e uma execução sincroniza e roda um comando. Máquinas separadas permitem testes paralelos sem disputar CPU, memória e portas.

Há destinos Linux, macOS, Windows nativo e WSL2. Locações preparadas preservam a configuração; Desktop, Browser, Code e portal oferecem interação e evidências. Veja o guia de acesso.

O glossário é comum à CLI, ao coordenador e à documentação. Sinônimos preferidos estão em negrito.

#Vocabulário de computação

Lease (locação): reserva temporária de executor criado/resolvido, com cbx_..., slug, inatividade, TTL e estado active, released, expired, failed. Unidade de custo e limpeza.

Runner (executor): máquina preparada pelo provedor para uma ou várias execuções, seja Hetzner, AWS EC2 ou SSH estático.

Box / testbox: sinônimo informal. Prefira runner em novos documentos, exceto linguagem de produto como máquina preparada.

Pool: executores ativos visíveis para usuário, organização ou frota; crabbox list e GET /v1/pool administrativo.

Pond: grupo espontâneo com rótulo pond=<name>, sem objeto central, existente enquanto houver membro ativo. crabbox pond peers, crabbox pond connect/disconnect, crabbox pond release. Veja Pond.

Lease ID: cbx_ e 12 caracteres hexadecimais minúsculos, 16 no total, como cbx_abcdef123456; usado em rótulos, logs, claims e APIs. Identificadores.

Slug: nome amigável com par de palavras e oito dígitos de fingerprint, como swift-crab-1f3a9c2b, mais quatro em colisões. --slug swift-crab personaliza; --slug normaliza em [a-z0-9-], máximo 41 caracteres. --id aceita nome ou ID.

Run: chamada crabbox run com ID run_, locação, comando e código. Histórico durável com coordenador; IDs locais em tempos, provas e falhas no modo direto. Histórico e logs.

Workspace: cópia e estado: arquivos, dependências, diretório do provedor, saída e desktop/navegador opcional. Use quando o produto for além da máquina bruta.

#Papéis

CLI: binário Go local crabbox; configuração, sincronização, execução, saída e chaves SSH. Arquitetura.

Broker / coordinator: plano autenticado compartilhado, credenciais, estado, expiração, limpeza, histórico, uso e limites. Cloudflare Workers/Fleet Durable Object ou Node.js/PostgreSQL/pg-boss. Coordinator enfatiza serviço; broker, limite de confiança.

Provider: adaptador para adquirir, resolver, listar e liberar. Nuvens AWS, Azure, Google Cloud, Hetzner; Proxmox, Parallels, Local Container, SSH; sandboxes SSH Daytona, KubeVirt, External, Namespace Devbox, Semaphore, Sprites, exe.dev, RunPod, Railway; delegados Blacksmith Testbox, E2B, Modal, Islo, Tensorlake, Upstash Box, Cloudflare, Azure Dynamic Sessions, W&B. Referência.

Backend: interface Go SSHLeaseBackend para destino SSH real ou DelegatedRunBackend para execução do provedor. Backends.

Operator: pessoa com acesso administrativo, executa crabbox admin e preparação/promoção de imagens.

Agent: processo LLM chamando a CLI. Crabbox fornece execução/evidências; agente ou harness controla prompts, decisões e orquestração. Configuração e trabalho devem ser confiáveis.

#Modos

Brokered mode / coordinator mode: coordenador cria, mantém estado e limpa; CLI usa SSH/rsync diretamente. Segredos ficam centrais. AWS, Azure, Daytona, Google Cloud, Hetzner com CRABBOX_COORDINATOR ou config set-broker.

Direct mode / direct-provider mode: API direta sem histórico central ou limites. Único modo fora desses cinco e alternativa deles sem URL.

Static mode: provider: ssh, host do operador, sem criar/excluir, sempre direto.

Delegated mode: Blacksmith, E2B, Modal, Islo e outros executam e retornam saída. Rejeita --sync-only e --checksum; tempo sync=delegated.

#Comandos

warmup: aloca e prepara, --keep verdadeiro por padrão; ainda sem executar comando.

run: aloca/reutiliza, sincroniza, executa, retorna saída/código. Novas locações são liberadas, reutilizadas mantidas; controlado por --keep e --stop-after.

stop / release: termina pelo contrato, geralmente excluindo recursos descartáveis; hosts estáticos e recursos retidos são exceções.

cleanup: limpa resíduos diretos elegíveis após verificar propriedade exata. Rótulo, nome ou ID sozinho nunca basta.

reuse: --id/slug escolhe locação existente para run. warmup cria; --lease-id é criação idempotente, não reutilização genérica.

reclaim: move claim entre cópias (--reclaim) para reutilizar em outro repositório, pois há vínculo por padrão.

hydrate: prepara dependências com Actions do repositório. Executa passos compatíveis; --github-runner registra executor próprio e dispara job real para semântica completa. Preparação Actions.

#Estado

Idle timeout: prazo sem heartbeat, 1800 s/30 min por padrão, reiniciado por heartbeat ou touch.

TTL: duração absoluta, 5400 s/90 min, máximo 86400 s/24 h; heartbeat não estende. expiresAt = min(createdAt + ttl, lastTouchedAt + idleTimeout).

Heartbeat: POST /v1/leases/{id}/heartbeat atualiza lastTouchedAt, pode enviar telemetria e alterar inatividade explicitamente. Rejeitado ao atingir expiresAt; limpeza passa a controlar.

Touch: atualização de estado/inatividade. Touch do provedor é direto, heartbeat é o equivalente intermediado.

Reserved cost: pior custo hourlyRate × ttl, reservado contra teto mensal até liberação.

Estimated cost: preço por tempo active, estimativa de crabbox usage. Custo e uso.

#Sincronização

Manifest: caminhos separados por NUL de git ls-files --cached e git ls-files --others --exclude-standard; exclusões separadas.

Fingerprint: hash do commit, metadados alterados e manifesto. Igualdade evita rsync.

Git seeding: preparação inicial opcional de Git remoto a partir de origin/base, habilitando diffs remotos.

Base ref: referência usada na preparação/hidratação, configurada em sync.baseRef.

Sanity check: após rsync detecta exclusões em massa, entradas ausentes e resultados suspeitos. Sincronizar.

#Capacidades

Desktop: --desktop adiciona TigerVNC/XFCE redimensionável no Linux gerenciado e novos contêineres, ou Wayland/GNOME. Necessário para crabbox vnc, crabbox webvnc e maioria dos testes visuais --browser.

Browser: --browser instala/descobre navegador e exporta caminho. Pode ser headless; --desktop dá exibição. Motor depende da imagem/provedor, sem perfil autenticado.

Code: --code instala code-server em loopback 8080 para crabbox code e /code/, só Linux gerenciado.

Tailscale: acesso opcional ao Linux pelo tailnet sem IP público; diferente de escolher plano via --network tailscale. Capacidades.

#Runtime do coordenador

FleetCoordinator: lógica TypeScript comum: rotas, autenticação, adaptadores, registros, custos, limpeza, portal, pontes.

Durable Object: estado Cloudflare e decisões serializadas; um Fleet com idFromName("default").

PostgreSQL runtime: Node portátil, esquema crabbox de chave/valor, crabbox_jobs do pg-boss para manutenção exata e periódica.

Alarm: prazo futuro de limpeza, Durable Object ou pg-boss para inatividade, TTL, repetição e manutenção.

Portal: UI autenticada renderizada no servidor em /portal/..., locações, logs, eventos e VNC/Code. Portal.

Bridge: ligação ao relay CLI local. WebVNC/Code mantêm túneis SSH para VNC loopback 5900/code-server 8080 e precisam ficar ativos. Egress usa relay separado com tickets. Coordenador autentica, sem abrir SSH.

#Identidade

Owner: dono da locação, GitHub fixa github:<numeric-id>. Automação usa proprietário configurado ou email Git com roteamento verificado. Segurança operacional.

Org: organização do token ou CRABBOX_ORG, para escopo de uso e limites multitenant.

Allowed org: associação exigida antes do token assinado, configurada por Worker.

Admin token: escopo separado para GET /v1/pool, rotas admin e lista global, mais protegido que token compartilhado.

Cloudflare Access: proteção opcional, confia em cf-access-jwt-assertion verificado, não cabeçalhos brutos.

#Armazenamento

State directory: claims, histórico, checkpoints. XDG_STATE_HOME seleciona $XDG_STATE_HOME/crabbox também para chaves/confiança. Caso ausente, <os-user-config-dir>/crabbox/state, chaves em <os-user-config-dir>/crabbox/testboxes. Mudar não migra nem busca estado antigo. Chaves SSH.

Claim: JSON vinculando locação e cópia, necessário em crabbox run --id para slugs e bloqueio entre repositórios sem --reclaim.

Workdir / work root: destino de sync, /work/crabbox Linux, C:\crabbox Windows normal, demais específicos do provedor/destino.

#Evidências e artefatos

Run history: histórico (crabbox history, logs, events, results), diferente do estado vivo. Histórico.

Test results: JUnit de crabbox results <run-id>, suítes, testes, falhas, erros, ignorados. Resultados.

Telemetry: amostras Linux de carga, memória, disco e uptime por execução; não análise de produto. Telemetria.

Artifacts: pacotes de crabbox artifacts, capturas, vídeo, GIF, logs, estado e metadados publicáveis em PR. Artefatos.

Egress: crabbox egress encaminha rede de saída via máquina do operador por WebSocket. Egress.

Checkpoint: estado restaurável/forkável de VM ou workspace, ID chk_..., arquivos, receitas, snapshots/imagens nativos. Checkpoints.

Cache volume: armazenamento persistente por repositório/runtime/plataforma em caminho absoluto, só para acelerar. Não é cenário forkável; árvore continua fonte de verdade. Cache.

Capsule: falha portátil capturada por crabbox capsule from-actions e repetida por crabbox capsule replay. Cápsulas.

#Documentação

Source map: liga comportamento à implementação. Mapa.

Feature page: docs/features/<name>.md, narrativa conceitual ligada por comandos/provedores.

Command page: docs/commands/<name>.md, flags, comportamento e códigos coerentes com --help.

Provider page: docs/providers/<name>.md, destinos, configuração, variáveis, sync e falhas.

Documentos relacionados: