Referência da CLI

Interface de linha de comando para o runtime do Wippy.

Flags Globais

Disponíveis em todos os comandos:

Flag Curta Descrição
--config Arquivo de configuração, repetível; arquivos posteriores sobrescrevem os anteriores (padrão: .wippy.yaml). wippy publish define uma opção local diferente.
--verbose -v Ativar logs de depuração
--very-verbose Depuração com stack traces
--console -c Logs coloridos no console
--silent -s Desativar logs no console
--event-streams -e Transmitir logs para o barramento de eventos
--profiler -p Ativar pprof em localhost:6060
--memory-limit -m Limite de memória (ex: 1G, 512M)

Prioridade do limite de memória: flag --memory-limit > variável de ambiente GOMEMLIMIT > padrão de 1GB.

--config pode ser passado múltiplas vezes para compor arquivos de configuração. Os arquivos são mesclados da esquerda para a direita: arquivos posteriores sobrescrevem valores correspondentes e mantêm todo o resto. Todo arquivo nomeado explicitamente deve existir; sem --config, o .wippy.yaml padrão é opcional. O primeiro arquivo ancora o diretório usado para resolver caminhos relativos. A configuração é aplicada em ordem: composição de arquivos, seleções de --profile e sobrescritas de --set. Consulte Configuração.

wippy publish oculta a opção global com uma opção local --config <dir>. Nesse comando, o valor é o diretório que contém wippy.yaml, não um arquivo repetível de configuração do runtime.

wippy init

Criar um novo arquivo de lock.

wippy init
wippy init --src-dir ./src --modules-dir .wippy
Flag Curta Padrão Descrição
--src-dir -d ./src Diretório de fontes
--modules-dir .wippy Diretório de módulos
--lock-file -l wippy.lock Caminho do arquivo de lock

wippy run

Iniciar o runtime ou executar um comando.

wippy run                                   # Start runtime
wippy run list                              # List available commands
wippy run migrate                           # Run a named custom command
wippy run snapshot.wapp                     # Run from pack file
wippy run acme/http                         # Run module from hub
wippy run acme/http@1.2.3                   # Run specific version
wippy run --exec app:worker                 # Start runtime and execute a single process
Flag Curta Descrição
--override -o Sobrescrever valores de entrada (namespace:entry:field=value); field pode ser kind para alterar o tipo da entrada
--set Sobrescrever um valor de configuração (section.path=value, repetível, tem precedência sobre o arquivo de configuração)
--exec -x Executar processo e encerrar (namespace:entry)
--host ID do host de terminal para --exec (detectado automaticamente se existir apenas um terminal.host)
--registry URL do registry para módulos do hub
--profile Aplicar um profile de runtime do .wippy.yaml ou dos metadados de runtime empacotados (repetível, aplicado em ordem)

Executar um módulo do hub (wippy run org/module) o resolve uma vez, registra-o no wippy.lock e vendoriza localmente os packs verificados. Execuções subsequentes da mesma referência partem do lock — sem necessidade de rede. Um seletor de versão que não corresponde mais ao lock é rejeitado com uma dica para executar wippy update.

Para uma aplicação local, wippy run repara um lock desatualizado antes de qualquer serviço do runtime iniciar. Ele carrega as declarações de dependência das fontes e, quando o lock já as satisfaz, re-resolve o grafo apenas a partir de evidências locais e instaladas (acesso verificado offline, sem rede). Se essa resolução offline corresponde ao lock, o boot continua inalterado. Se ela tem sucesso mas difere, ela se torna o grafo candidato; o hub só é chamado para resolver quando a passagem offline falha ou o lock já não satisfaz as declarações das fontes. Os packs que faltam ao grafo candidato são baixados e verificados, e só então o wippy.lock é reescrito. Um lock que seleciona uma raiz de deployment é autoritativo e nunca é re-resolvido.

--exec bloqueia até o processo lançado produzir seu resultado, e então propaga o código de saída do processo como código de saída da CLI. Ctrl-C durante --exec cancela o processo em execução e o runtime ainda encerra graciosamente; um segundo sinal força a saída.

--set escreve qualquer valor de configuração do runtime pela linha de comando, mesclado sobre .wippy.yaml por folha:

wippy run --set cluster.enabled=true \
          --set cluster.membership.join_addrs=node-2:7946,node-3:7946 \
          --set cluster.raft.bootstrap_expect=3

Os valores são convertidos pelo formato: true/false para bool, inteiros e floats para números, o restante permanece string (durações como 5s são analisadas onde a opção espera uma).

wippy test

Executar o entrypoint de teste: a entrada de processo que declara o use case test. O runtime inicia, executa essa entrada e encerra. wippy run não executa automaticamente entrypoints de teste; testes sempre passam por wippy test.

wippy test                     # Run tests from the local project
wippy test snapshot.wapp       # Run tests from a pack file
wippy test acme/module@1.2.3   # Run tests from a hub module
Flag Curta Descrição
--override -o Sobrescrever valores de entrada (namespace:entry:field=value)
--host ID do host de terminal (detectado automaticamente se existir apenas um terminal.host)
--registry URL do registry para módulos do hub
--set Sobrescrever um valor de configuração (section.path=value, repetível)
--profile Aplicar um profile de runtime (repetível, aplicado em ordem)

wippy lint

Verificar erros de tipo e avisos no código Lua.

wippy lint
wippy lint --level warning
wippy lint --json
wippy lint --rules

Valida todas as entradas Lua: function.lua, library.lua, process.lua, workflow.lua (incluindo suas variantes .bc).

Flag Curta Padrão Descrição
--lock-file -l wippy.lock Caminho do arquivo de lock
--level warning Severidade mínima: error, warning, hint
--ns Filtrar por padrões de namespace (ex: app, lib.*)
--code Filtrar por códigos de erro (ex: E0001,E0004)
--rules false Habilitar regras de estilo/qualidade do lint
--summary false Agrupar saída por código de erro
--limit 0 Máximo de diagnósticos exibidos (0 = ilimitado)
--json false Saída em JSON
--no-color false Desabilitar saída colorida
--cache-reset false Limpar cache Lua antes do lint
--profile Aplicar um profile de workspace da configuração de runtime mesclada (repetível)
--set Sobrescrever um valor da configuração de runtime mesclada (section.path=value, repetível)

wippy add

Adicionar uma dependência de módulo.

wippy add acme/http
wippy add acme/http@1.2.3
wippy add acme/http@latest
Flag Curta Padrão Descrição
--lock-file -l wippy.lock Caminho do arquivo de lock
--registry URL do registry

wippy install

Instalar dependências a partir do arquivo de lock.

wippy install                            # Install all
wippy install acme/http                  # Install specific module
wippy install --refresh acme/http        # Re-fetch a specific module
Flag Curta Padrão Descrição
--lock-file -l wippy.lock Caminho do arquivo de lock
--refresh false Re-baixar cada módulo, ignorando o cache
--force false Alias de --refresh
--repair false Alias de --refresh
--registry URL do registry
--profile Aplicar um profile de workspace da configuração de runtime mesclada (repetível)
--set Sobrescrever um valor da configuração de runtime mesclada (section.path=value, repetível)

wippy update

Atualizar dependências e regenerar o arquivo de lock.

wippy update                      # Update all
wippy update acme/http            # Update specific module
wippy update acme/http demo/sql   # Update multiple
Flag Curta Padrão Descrição
--lock-file -l wippy.lock Caminho do arquivo de lock
--src-dir -d ./src Diretório de fontes
--modules-dir .wippy Diretório de módulos
--registry URL do registry
--profile Aplicar um profile de workspace da configuração de runtime mesclada (repetível)
--set Sobrescrever um valor da configuração de runtime mesclada (section.path=value, repetível)

wippy artifacts

Trabalhar com artefatos de sistema de arquivos gerados em tempo de build.

wippy artifacts materialize

Validar e materializar um sistema de arquivos de artefato a partir de um pack existente.

wippy artifacts materialize snapshot.wapp app:package_fs
wippy artifacts materialize snapshot.wapp app:package_fs --root build
Flag Padrão Descrição
--root .wippy Raiz de materialização

O recurso é endereçado por seu namespace:name completo, deve declarar meta.artifact.format, e esse formato deve estar registrado na CLI. O comando não resolve dependências de módulos, não altera o wippy.lock, não invoca gerenciadores de pacotes e não participa da composição do runtime. Veja Artefatos de build.

wippy pack

Criar um pack de snapshot (arquivo .wapp).

wippy pack snapshot.wapp
wippy pack release.wapp --description "Release 1.0"
wippy pack app.wapp --embed app:assets --bytecode "**"
Flag Curta Descrição
--lock-file -l Caminho do arquivo de lock
--description -d Descrição do pack
--tags -t Tags do pack (separadas por vírgula)
--meta Metadados personalizados (chave=valor)
--embed Incorporar entradas fs.directory (padrões)
--embed-all Incorporar todas as entradas fs.directory (não pode combinar com --embed)
--list Listar entradas fs.directory (simulação)
--exclude-ns Excluir namespaces (padrões)
--exclude Excluir entradas (padrões)
--bytecode Compilar Lua para bytecode (** para todos)
--profile Aplicar um profile de runtime do .wippy.yaml antes de empacotar (repetível, aplicado em ordem)

Sem --embed nem --embed-all, os padrões de incorporação recorrem à seção embed: do manifesto de módulo wippy.yaml. Empacotar uma aplicação também carrega os recursos incorporados dos packs de suas dependências, e apenas os comandos do módulo principal são expostos pelo pack resultante.

O arquivo de saída é escrito atomicamente: o pack é construído em um arquivo temporário no diretório de destino, sincronizado, verificado, e só então renomeado sobre o alvo, herdando as permissões do arquivo existente quando há um. Um pack que falha deixa o arquivo anterior intocado. Nomear uma saída que também é uma das entradas do pack — o mesmo caminho, ou um hard link ou symlink que resolve para o mesmo arquivo — é recusado em vez de truncar a entrada durante a leitura.

--meta não pode escrever metadados reservados. A chave registry, e qualquer coisa sob os prefixos wippy. ou system., pertence ao formato do pack e é rejeitada.

Recursos que declaram meta.artifact.format são validados durante o empacotamento, então um artefato malformado falha aqui em vez de falhar em um consumidor. Veja Artefatos de build.

wippy publish

Publicar módulo no hub.

wippy publish
wippy publish --version 1.0.0
wippy publish --dry-run

Lê a partir do wippy.yaml no diretório atual.

Flag Descrição
--version Versão a publicar
--dry-run Validar sem publicar
--label Publicar como label mutável em vez de versão
--release-notes Notas de lançamento
--protected Marcar versão como protegida
--embed Incorporar entradas fs.directory por id ou nome
--config Caminho para o diretório contendo wippy.yaml (padrão: .)
--registry URL do registry
--create Criar o módulo no registry se ainda não existir
--module-visibility Visibilidade para módulos recém-criados (--create apenas): public ou private (padrão: private)
--module-type Tipo do módulo: library, application, agent ou plugin (sobrescreve type: no wippy.yaml)
--module-display-name Nome de exibição para módulos recém-criados (--create apenas)

O tipo do módulo normalmente é declarado como type: no wippy.yaml (veja Publicação); --module-type o sobrescreve para uma única publicação. Quando nenhum dos dois está definido, módulos recém-criados assumem application com um aviso de obsolescência.

Buscar módulos no hub.

A busca usa, quando disponível, o token de autenticação armazenado para o registry selecionado. Autentique-se com wippy auth login para buscar com sua identidade no registry; --registry seleciona as credenciais do registry usadas.

wippy search http
wippy search "sql driver" --limit 20
wippy search auth --json
Flag Padrão Descrição
--json false Saída em JSON
--limit 20 Máximo de resultados
--registry URL do registry

wippy auth

Gerenciar autenticação no registry.

wippy auth login

wippy auth login
wippy auth login --token YOUR_TOKEN
Flag Descrição
--token Token de API
--registry URL do registry
--local Armazenar credenciais localmente

wippy auth logout

wippy auth logout
Flag Descrição
--registry URL do registry
--local Remover credenciais locais

wippy auth status

wippy auth status
wippy auth status --json
Flag Descrição
--json Saída em JSON

wippy readme

Obter o README de um módulo a partir do hub.

wippy readme wippy/terminal
wippy readme wippy/terminal@1.2.3
wippy readme --json wippy/terminal@latest
Flag Descrição
--json Saída em JSON
--registry URL do registry (padrão: das credenciais)

wippy registry

Consultar e inspecionar entradas do registry. Ambos os subcomandos aceitam --profile e --set para moldar a configuração de runtime mesclada sob a qual as entradas são carregadas.

wippy registry list

wippy registry list
wippy registry list --kind "function.lua.*"
wippy registry list --ns "app.*" --json
wippy registry list --meta "type=api" --meta "enabled=true"
Flag Curta Descrição
--kind -k Filtrar por tipo (padrão glob)
--ns -n Filtrar por namespace (padrão glob)
--name Filtrar por nome (padrão glob)
--meta Filtrar por metadados (repetível)
--json Saída em JSON
--yaml Saída em YAML
--registry-meta Incluir metadados de propriedade do registry (owner, root) na saída JSON ou YAML; requer --json ou --yaml
--lock-file -l Caminho do arquivo de lock

Operadores de metadados para --meta:

Operador Significado
field=value Correspondência exata
field~regex Correspondência por regex
field*substr Contém substring
field^prefix Começa com prefixo
field$suffix Termina com sufixo

wippy registry show

wippy registry show app:http:handler
wippy registry show app:config --yaml
Flag Curta Descrição
--field -f Mostrar campo específico
--json Saída em JSON
--yaml Saída em YAML
--raw Saída bruta
--lock-file -l Caminho do arquivo de lock

wippy version

Imprimir informações de versão.

wippy version
wippy version --short

Comandos Personalizados

Qualquer entrada process.lua ou process.wasm pode ser registrada como um comando nomeado adicionando metadados de command:

entries:
  - name: migrate_runner
    kind: process.lua
    meta:
      command:
        name: migrate
        short: Run database migrations
        security:
          actor:
            id: app:migrations
          policies:
            - app.security:migrations
          groups:
            - app.security:operators
    source: file://runner.lua
    method: main
    modules:
      - io
      - registry
      - funcs

Execute com:

wippy run migrate

Liste todos os comandos disponíveis:

wippy run list

wippy run list aceita --profile e --set para que a listagem reflita a mesma configuração de runtime mesclada que wippy run usaria.

Campos de Metadados do Comando

Campo Obrigatório Descrição
name Sim Nome do comando usado com wippy run <name>
short Não Descrição curta exibida em wippy run list
main Não Marca esta entrada como entrypoint padrão. Quando um pack ou módulo do hub é executado sem nome de comando, a única entrada main daquele caso de uso é executada; um entrypoint solitário é selecionado mesmo sem main, e vários entrypoints sem main é um erro
use_case Não Categoria de entrypoint, padrão run. A entrada que declara use_case: test é a que wippy test executa
security Não Contexto de segurança sob o qual o comando executa quando lançado pela CLI

Qualquer tipo de entrada de processo funciona (process.lua, process.wasm). Nomes de comando não são verificados quanto à unicidade; quando várias entradas carregadas declaram o mesmo nome, a primeira correspondência na ordem do registry executa. Argumentos após o nome do comando são passados para o processo como payloads de string.

Segurança de comandos

Uma entrada de comando declara o ator e o escopo de políticas sob os quais seu lançamento pela CLI executa:

entries:
  - name: migrate_runner
    kind: process.lua
    meta:
      command:
        name: migrate
        short: Executar migrações de banco de dados
        security:
          actor:
            id: system.migrations
            meta:
              role: operator
          policies:
            - app.security:migrations_policy
          groups:
            - app.security:operators
    source: file://runner.lua
    method: main
Campo Descrição
actor.id Identidade do ator para o processo lançado
actor.meta Atributos do ator avaliados pelas políticas
policies Registry IDs (namespace:name) de políticas individuais adicionadas ao escopo
groups Registry IDs de grupos de políticas cujas políticas são adicionadas ao escopo

O bloco fica dentro de meta.command porque se aplica apenas ao caminho de lançamento pela CLI — o operador iniciou o comando em seu próprio deployment, que é a âncora de confiança. Ele não tem efeito sobre spawns comuns da mesma entrada de processo; esses seguem o bloco security: da própria entrada.

A declaração é fail-closed e validada antes de o processo iniciar:

  • Campos desconhecidos dentro de security são rejeitados.
  • Um bloco security vazio (sem ator, sem políticas, sem grupos) é rejeitado.
  • security sem um name é rejeitado — um comando precisa ser nomeável para ser lançado.
  • Uma política ou grupo que não pode ser resolvido recusa o lançamento; a resolução é atômica, então um escopo parcial nunca é instalado.

Quando o bloco omite actor, o ator do chamador é herdado. Quando omite tanto policies quanto groups, o escopo do chamador é herdado.

Exemplos

Fluxo de Desenvolvimento

# Initialize dependency lock metadata
wippy init
wippy add wippy/test
wippy add wippy/llm
wippy install

# Check for errors
wippy lint

# Run with debug output
wippy run -c -v

# Override config for local dev
wippy run -o app:db:host=localhost -o app:db:port=5432

Deploy em Produção

# Create release pack with bytecode
wippy pack release.wapp --bytecode "**" --exclude-ns "test.**"

# Run from pack with memory limit
wippy run release.wapp -m 2G

Depuração

# Execute single process
wippy run --exec app:worker

# With profiler enabled
wippy run -p -v
# Then: go tool pprof http://localhost:6060/debug/pprof/heap

Gerenciamento de Dependências

# Add new dependency
wippy add acme/http@latest

# Force re-download
wippy install --force

# Update specific module
wippy update acme/http

Publicação

# Login to hub
wippy auth login

# Validate module
wippy publish --dry-run

# Publish
wippy publish --version 1.0.0 --release-notes "Initial release"

Variáveis de Ambiente

Variável Efeito
WIPPY_TOKEN Token de autenticação do registry; sobrescreve credenciais armazenadas (um token enviado via hub.auth.authenticate tem precedência ainda maior)
WIPPY_REGISTRY URL padrão do registry (sobrescrita por --registry)
WIPPY_CACHE_DIR Diretório de cache para módulos do hub executados via wippy run org/module (padrão: ~/.wippy/cache)
GOMEMLIMIT Fallback do limite de memória quando --memory-limit não está definido

Valores no .wippy.yaml podem referenciar variáveis de ambiente do SO com ${env:NAME}, resolvidas no carregamento do arquivo; uma variável ausente falha o carregamento da configuração. Referências ${name} simples resolvem a partir da seção vars: da configuração.

Arquivo de Configuração

Crie .wippy.yaml para configurações persistentes:

logger:
  encoding: console

logmanager:
  stream_to_events: true

profiler:
  enabled: true
  address: localhost:6060

override:
  app:gateway:addr: ":9090"
  app:db:host: "localhost"

Veja Também