Skip to main content

mb envs

Gerencia variáveis de ambiente globais injetadas em plugins e no comando mb run.

Para entender ordem de precedência, vaults de projeto e quando usar cada abordagem, veja Variáveis de ambiente.

Subcomandos

mb envs list

Lista variáveis de um vault.

Modos de exibição:

  • Interativo (terminal): Interface fzf com colunas simplificadas (VAR | VAULT) e preview automático no lado direito
  • Pipe/redirecionamento: Tabela completa com colunas (VAR | VAULT | ARMAZENAMENTO)
  • JSON: Todos os dados em formato estruturado com --json / -J
  • Texto: Formato key=value com --text / -T
# Modo interativo (padrão)
mb envs list
mb envs ls
mb envs l

# Filtrar por vault
mb envs list --vault staging
mb envs list --vault project # só a raiz de envs no mbcli.yaml
mb envs list --vault project/staging # só o sub-mapa envs.staging

# Mostrar valores reais
mb envs list --show-secrets

# Saída em formato JSON
mb envs list --json
mb envs list --json | jq '.API_BASE'
mb envs list --json | jq 'keys[]'

# Saída em formato texto (key=value)
mb envs list --text
mb envs list --text | grep API

# Pipe com tabela completa
mb envs list | cat
mb envs list | grep API
mb envs list | wc -l
mb envs list | grep keyring

Preview automático:

No modo interativo, ao navegar com ↑↓ um preview aparece automaticamente no lado direito mostrando detalhes da variável selecionada:

  • Valor (ou *** para secrets)
  • Vault
  • Tipo de armazenamento (local, keyring, 1password, projeto)

O preview é renderizado com gum format para melhor legibilidade e atualiza em tempo real conforme você navega.

Colunas no modo interativo:

ColunaDescrição
VARNome da variável
VAULTVault onde está armazenada

Preview automático (modo interativo):

Ao navegar com ↑↓, o preview mostra informações adicionais:

CampoDescrição
ValorValor da variável (ou *** para secrets)
VaultNome do vault
ArmazenamentoTipo: local, keyring, 1password, projeto
ArquivoCaminho completo do arquivo onde está armazenado

Colunas no modo pipe/redirecionamento:

ColunaDescrição
VARKEY=VALUE (valor truncado se muito longo)
VAULTVault onde está armazenada
ARMAZENAMENTOlocal, keyring, 1password, projeto
FlagDescrição
--vault <nome>Vault em disco .env.<nome> no diretório de configuração (ex.: ~/.config/mb/.env.staging no Linux) com overlay do mbcli.yaml. Use project para a raiz de envs no YAML, ou project/<nome> para apenas o sub-mapa (sem misturar a raiz)
--show-secretsMostra valores reais em vez de ***
--json / -JEmite {"CHAVE":"valor", ...}
--text / -TEmite CHAVE=valor por linha (sem coluna de vault)

--json e --text são mutuamente exclusivos.

Variáveis do mbcli.yaml: o mb envs list também mostra as variáveis definidas no mbcli.yaml da raiz do projeto. Elas aparecem com vault project (escalares na raiz de envs) e project/<nome> (sub-mapas), e armazenamento projeto. Essas variáveis são versionadas no repositório e mescladas automaticamente — não é possível editá-las com mb envs set --vault project. Para detalhes, veja Vaults de projeto.

Exemplos de uso com JSON:

# Listar valor de uma variável específica de um vault
mb envs list --json | jq '.[] | select(.vault == "default" and .key == "API_BASE") | .value'

# Listar todas as variáveis de um vault
mb envs list --json | jq '.[] | select(.vault == "staging")'

# Filtrar variáveis que são secrets
mb envs list --json | jq '.[] | select(.isSecret == true)'

# Listar apenas vaults disponíveis
mb envs list --json | jq '[.[].vault] | unique'

# Filtrar por tipo de armazenamento
mb envs list --json | jq '.[] | select(.storage == "keyring")'

# Contar variáveis por vault
mb envs list --json | jq 'group_by(.vault) | map({vault: .[0].vault, count: length})'

# Mostrar caminho do arquivo de uma variável
mb envs list --json | jq '.[] | select(.vault == "default" and .key == "API_KEY") | .path'

Formato JSON:

[
{
"vault": "default",
"key": "API_KEY",
"value": "***",
"isSecret": true,
"storage": "keyring",
"path": "~/.config/mb/.env.default.secrets"
},
{
"vault": "staging",
"key": "API_KEY",
"value": "***",
"isSecret": true,
"storage": "keyring",
"path": "~/.config/mb/.env.staging.secrets"
},
{
"vault": "default",
"key": "VERSION",
"value": "1.0.0",
"isSecret": false,
"storage": "local",
"path": "~/.config/mb/env.defaults"
}
]

Exemplos de uso com pipe:

# Buscar por nome de variável
mb envs list | grep API

# Contar variáveis
mb envs list | wc -l

# Filtrar por tipo de armazenamento
mb envs list | grep keyring

mb envs set

Define ou atualiza variáveis.

mb envs set API_KEY=xyz
mb envs set A=1 B=2 C=3 --vault staging
mb envs set DB_PASS=segredo --secret
mb envs set TOKEN=abc --secret-op
mb envs set A=1 B=2 C=3 --secret # múltiplas chaves de uma vez

Com --secret ou --secret-op, pode omitir o valor na linha de comandos: indique só a chave (sem =) e o MB pede o valor com gum input --password (um prompt por chave, em sequência), para o segredo não ir para o histórico da shell. Se gum não existir no PATH, usa-se leitura mascarada em /dev/tty. Em modo não interactivo (sem TTY), use sempre KEY=VALOR na linha de comandos.

Se usar KEY=VALOR com --secret / --secret-op, o MB emite um aviso (o valor na linha de comandos pode ficar no histórico da shell e em registos de processos); o fluxo recomendado continua a ser só a chave + prompt mascarado.

mb envs set API_KEY --secret # um prompt (gum --password)
mb envs set A B C --secret # três prompts em sequência
mb envs set TOKEN=abc --secret-op # sem prompt (valor já veio na linha)
FlagDescrição
--vault <nome>Grava em .env.<nome> em vez do padrão. Não aceita project nem prefixo project/ (reservados)
--secretGuarda no keyring do sistema (lista .secrets); chave sem = pede valor com gum input --password
--secret-opGuarda no 1Password (referência em *.opsecrets, requer op); chave sem = pede valor com gum input --password
--yesConfirma sem prompt para --secret-op (CI)

--secret e --secret-op são mutuamente exclusivos. Sem flags de store, a variável MB_ENVS_SECRET_STORE (plain / keyring / op) no ambiente define o destino.

mb envs unset

Remove uma ou mais chaves.

mb envs unset API_KEY
mb envs unset A B C --vault staging

Se a chave não existir, exit code 0. Se não restar conteúdo num vault explícito, os ficheiros .env.<vault>, .secrets e .opsecrets são apagados. env.defaults nunca é removido.

mb envs vaults

Lista vaults disponíveis, caminho e número de variáveis.

mb envs vaults
mb envs vaults --json

Output: tabela VAULT / ARQUIVO / ENVS. Inclui default, vaults em disco .env.<nome> no diretório de configuração (ex.: ~/.config/mb/.env.staging no Linux), e linhas project / project/<nome> quando mbcli.yaml tem envs. O ficheiro .env.project é ignorado (nome reservado).

JSON: [{"vault","path","env_count"},...]

Integração com 1Password (--secret-op)

O MB guarda valores no 1Password via 1Password CLI (op no PATH). O valor fica no cofre; a referência op:// é gravada em *.opsecretsnão no keyring.

Requisitos

  • op instalado e sessão ativa (op signin)
  • --secret e --secret-op são mutuamente exclusivos

Comportamento

O MB cria ou reutiliza um item do tipo senha com título mb-cli env / default ou mb-cli env / <vault> por vault lógico. A referência op:// fica em env.defaults.opsecrets ou .env.<vault>.opsecrets.

Na listagem com --show-secrets, referências op:// são resolvidas com op read. Se a sessão 1Password não estiver ativa, o comando falha com mensagem clara.

mb envs unset (com o mesmo --vault) remove a chave dos ficheiros, .secrets, *.opsecrets, keyring e item 1Password.

Ver também