Skip to content

Configuração de Variáveis de Ambiente

O Que Você Vai Aprender

  • ✅ Configurar corretamente o Plannotator em ambientes remotos como SSH, Devcontainer e WSL
  • ✅ Usar porta fixa para evitar conflitos de porta e configurações frequentes de encaminhamento de porta
  • ✅ Especificar navegador personalizado para abrir a interface de revisão de planos
  • ✅ Habilitar ou desabilitar a função de compartilhamento de URL
  • ✅ Entender os valores padrão e o comportamento de cada variável de ambiente

Seu Problema Atual

Problema 1: Ao usar o Plannotator em SSH ou Devcontainer, o navegador não abre automaticamente ou você não consegue acessar o servidor local.

Problema 2: Cada reinicialização do Plannotator usa uma porta aleatória, exigindo atualizações constantes na configuração de encaminhamento de porta.

Problema 3: O navegador padrão do sistema não corresponde aos seus hábitos de uso e você deseja visualizar planos em um navegador específico.

Problema 4: Por motivos de segurança, você deseja desabilitar a função de compartilhamento de URL para evitar compartilhamento acidental de planos.

O Plannotator pode ajudá-lo:

  • Detectar automaticamente ambientes remotos através de variáveis de ambiente e desabilitar a abertura automática do navegador
  • Fixar a porta para facilitar a configuração de encaminhamento de porta
  • Suportar navegador personalizado
  • Fornecer variáveis de ambiente para controlar o interruptor de compartilhamento de URL

Quando Usar Esta Solução

Cenários de uso:

  • Usar Claude Code ou OpenCode em servidor remoto SSH
  • Desenvolver em contêineres Devcontainer
  • Trabalhar em ambiente WSL (Windows Subsystem for Linux)
  • Precisar de porta fixa para simplificar a configuração de encaminhamento de porta
  • Desejar usar navegador específico (como Chrome, Firefox)
  • Política de segurança empresarial exigir desabilitar a função de compartilhamento de URL

Cenários não aplicáveis:

  • Desenvolvimento local com uso do navegador padrão (sem necessidade de variáveis de ambiente)
  • Sem necessidade de encaminhamento de porta (como desenvolvimento totalmente local)

Ideia Principal

O Que São Variáveis de Ambiente

Variáveis de ambiente são um mecanismo de configuração de pares chave-valor fornecido pelo sistema operacional. O Plannotator se adapta a diferentes ambientes de execução (local ou remoto) lendo variáveis de ambiente.

Por que são necessárias variáveis de ambiente?

O Plannotator assume por padrão que você está usando em ambiente de desenvolvimento local:

  • Modo local: porta aleatória (evitar conflitos de porta)
  • Modo local: abrir automaticamente o navegador padrão do sistema
  • Modo local: habilitar função de compartilhamento de URL

Mas em ambientes remotos (SSH, Devcontainer, WSL), esses comportamentos padrão precisam ser ajustados:

  • Modo remoto: usar porta fixa (facilitar encaminhamento de porta)
  • Modo remoto: não abrir navegador automaticamente (precisa abrir no host)
  • Modo remoto: talvez precisar desabilitar compartilhamento de URL (considerações de segurança)

As variáveis de ambiente permitem que você ajuste o comportamento do Plannotator em diferentes ambientes sem modificar o código.

Prioridade de Variáveis de Ambiente

Prioridade de leitura de variáveis de ambiente pelo Plannotator:

Variável de ambiente explícita > Comportamento padrão

Por exemplo:
PLANNOTATOR_PORT=3000 > porta padrão do modo remoto 19432 > porta aleatória do modo local

Isso significa:

  • Se PLANNOTATOR_PORT for definido, a porta especificada será usada, independentemente de ser modo remoto
  • Se PLANNOTATOR_PORT não for definido, o modo remoto usa 19432, o modo local usa porta aleatória

🎒 Preparação

Antes de configurar variáveis de ambiente, confirme:

  • [ ] Instalação do Plannotator concluída (Instalação Claude Code ou Instalação OpenCode)
  • [ ] Entenda seu ambiente de execução atual (local, SSH, Devcontainer, WSL)
  • [ ] (Ambiente remoto) Encaminhamento de porta configurado (como parâmetro -L do SSH ou forwardPorts do Devcontainer)

Siga comigo

Etapa 1: Configurar Modo Remoto (SSH, Devcontainer, WSL)

Por quê O modo remoto usa automaticamente porta fixa e desabilita a abertura automática do navegador, adequado para ambientes como SSH, Devcontainer e WSL.

Como fazer

bash
export PLANNOTATOR_REMOTE=1
powershell
$env:PLANNOTATOR_REMOTE="1"
cmd
set PLANNOTATOR_REMOTE=1

O que você deve ver: Sem feedback visual, a variável de ambiente foi definida.

Tornar permanente (recomendado):

bash
echo 'export PLANNOTATOR_REMOTE=1' >> ~/.bashrc
source ~/.bashrc
powershell
[Environment]::SetEnvironmentVariable('PLANNOTATOR_REMOTE', '1', 'User')
cmd
# Adicionar através da interface "Propriedades do Sistema > Variáveis de Ambiente"

Etapa 2: Configurar Porta Fixa (Necessário para ambiente remoto)

Por quê Ambientes remotos precisam de porta fixa para configurar encaminhamento de porta. Ambientes locais também podem configurar porta fixa se necessário.

Regras de porta padrão:

  • Modo local (sem PLANNOTATOR_REMOTE definido): porta aleatória (0)
  • Modo remoto (PLANNOTATOR_REMOTE=1): padrão 19432
  • Definição explícita de PLANNOTATOR_PORT: usar a porta especificada

Como fazer

bash
# Definir como 19432 (padrão do modo remoto)
export PLANNOTATOR_PORT=19432

# Ou porta personalizada
export PLANNOTATOR_PORT=3000
powershell
$env:PLANNOTATOR_PORT="19432"
cmd
set PLANNOTATOR_PORT=19432

O que você deve ver: Sem feedback visual, a variável de ambiente foi definida.

Ponto de verificação ✅: Verifique se a porta está funcionando

Após reiniciar o Claude Code ou OpenCode, acione a revisão de planos e veja a URL exibida no terminal:

bash
# Saída do modo local (porta aleatória)
http://localhost:54321

# Saída do modo remoto (porta fixa 19432)
http://localhost:19432

Exemplos de configuração de encaminhamento de porta:

Desenvolvimento remoto SSH:

bash
ssh -L 19432:localhost:19432 user@remote-server

Devcontainer (.devcontainer/devcontainer.json):

json
{
  "forwardPorts": [19432]
}

Etapa 3: Configurar Navegador Personalizado

Por quê O navegador padrão do sistema pode não ser o desejado (por exemplo, você trabalha no Chrome, mas o padrão é o Safari).

Como fazer

bash
# Usar nome do aplicativo (macOS suporta)
export PLANNOTATOR_BROWSER="Google Chrome"

# Ou usar caminho completo
export PLANNOTATOR_BROWSER="/Applications/Google Chrome.app"
bash
# Usar caminho do executável
export PLANNOTATOR_BROWSER="/usr/bin/firefox"

# Ou usar caminho relativo (se estiver no PATH)
export PLANNOTATOR_BROWSER="firefox"
powershell
# Usar caminho do executável
$env:PLANNOTATOR_BROWSER="C:\Program Files\Google\Chrome\Application\chrome.exe"
cmd
set PLANNOTATOR_BROWSER=C:\Program Files\Google\Chrome\Application\chrome.exe

O que você deve ver: Na próxima vez que acionar a revisão de planos, o Plannotator abrirá no navegador especificado.

Ponto de verificação ✅: Verifique se o navegador está funcionando

Após reiniciar, acione a revisão de planos e observe:

  • macOS: O aplicativo especificado será aberto
  • Windows: O processo do navegador especificado será iniciado
  • Linux: O comando do navegador especificado será executado

Caminhos comuns de navegadores:

Sistema operacionalNavegadorCaminho/Comando
macOSChromeGoogle Chrome ou /Applications/Google Chrome.app
macOSFirefoxFirefox ou /Applications/Firefox.app
macOSSafariSafari
LinuxChromegoogle-chrome ou /usr/bin/google-chrome
LinuxFirefoxfirefox ou /usr/bin/firefox
WindowsChromeC:\Program Files\Google\Chrome\Application\chrome.exe
WindowsFirefoxC:\Program Files\Mozilla Firefox\firefox.exe

Etapa 4: Configurar Interruptor de Compartilhamento de URL

Por quê A função de compartilhamento de URL é habilitada por padrão, mas por motivos de segurança (como ambiente empresarial), você pode precisar desabilitar esta função.

Comportamento padrão:

  • Sem PLANNOTATOR_SHARE definido: habilitar compartilhamento de URL
  • Definir como disabled: desabilitar compartilhamento de URL

Como fazer

bash
# Desabilitar compartilhamento de URL
export PLANNOTATOR_SHARE="disabled"
powershell
$env:PLANNOTATOR_SHARE="disabled"
cmd
set PLANNOTATOR_SHARE=disabled

O que você deve ver: Após clicar no botão Export, a opção "Share as URL" desaparece ou fica indisponível.

Ponto de verificação ✅: Verifique se o compartilhamento de URL está desabilitado

  1. Reinicie o Claude Code ou OpenCode
  2. Abra qualquer revisão de planos
  3. Clique no botão "Export" no canto superior direito
  4. Observe a lista de opções

Estado habilitado (padrão):

  • ✅ Exibe duas abas "Share" e "Raw Diff"
  • ✅ A aba "Share" exibe URL compartilhável e botão de copiar

Estado desabilitado (PLANNOTATOR_SHARE="disabled"):

  • ✅ Exibe diretamente o conteúdo "Raw Diff"
  • ✅ Exibe botões "Copy" e "Download .diff"
  • ❌ Sem aba "Share" e função de compartilhamento de URL

Etapa 5: Verificar Todas as Variáveis de Ambiente

Por quê Garantir que todas as variáveis de ambiente estejam configuradas corretamente e funcionem conforme esperado.

Método de verificação

bash
# macOS/Linux/WSL
echo "PLANNOTATOR_REMOTE=$PLANNOTATOR_REMOTE"
echo "PLANNOTATOR_PORT=$PLANNOTATOR_PORT"
echo "PLANNOTATOR_BROWSER=$PLANNOTATOR_BROWSER"
echo "PLANNOTATOR_SHARE=$PLANNOTATOR_SHARE"
powershell
# Windows PowerShell
Write-Host "PLANNOTATOR_REMOTE=$env:PLANNOTATOR_REMOTE"
Write-Host "PLANNOTATOR_PORT=$env:PLANNOTATOR_PORT"
Write-Host "PLANNOTATOR_BROWSER=$env:PLANNOTATOR_BROWSER"
Write-Host "PLANNOTATOR_SHARE=$env:PLANNOTATOR_SHARE"

O que você deve ver: Todas as variáveis de ambiente definidas e seus valores.

Exemplo de saída esperado (configuração de ambiente remoto):

bash
PLANNOTATOR_REMOTE=1
PLANNOTATOR_PORT=19432
PLANNOTATOR_BROWSER=
PLANNOTATOR_SHARE=

Exemplo de saída esperado (configuração de ambiente local):

bash
PLANNOTATOR_REMOTE=
PLANNOTATOR_PORT=
PLANNOTATOR_BROWSER=Google Chrome
PLANNOTATOR_SHARE=disabled

Armadilhas Comuns

Armadilha 1: Variável de ambiente não entrou em vigor

Sintoma: Após definir variáveis de ambiente, o comportamento do Plannotator não mudou.

Causa: Variáveis de ambiente só entram em vigor em novas sessões de terminal ou requerem reinicialização do aplicativo.

Solução:

  • Confirme que as variáveis de ambiente foram gravadas permanentemente no arquivo de configuração (como ~/.bashrc)
  • Reinicie o terminal ou execute source ~/.bashrc
  • Reinicie o Claude Code ou OpenCode

Armadilha 2: Porta ocupada

Sintoma: Após definir PLANNOTATOR_PORT, a inicialização falha.

Causa: A porta especificada já está ocupada por outro processo.

Solução:

bash
# Verificar ocupação de porta (macOS/Linux)
lsof -i :19432

# Mudar porta
export PLANNOTATOR_PORT=19433

Armadilha 3: Caminho do navegador incorreto

Sintoma: Após definir PLANNOTATOR_BROWSER, o navegador não abre.

Causa: Caminho incorreto ou arquivo inexistente.

Solução:

  • macOS: Usar nome do aplicativo em vez de caminho completo (como Google Chrome)
  • Linux/Windows: Usar comando which ou where para confirmar caminho do executável
    bash
    which firefox  # Linux
    where chrome   # Windows

Armadilha 4: Navegador abre inesperadamente no modo remoto

Sintoma: Após definir PLANNOTATOR_REMOTE=1, o navegador ainda abre no servidor remoto.

Causa: O valor de PLANNOTATOR_REMOTE não é "1" ou "true".

Solução:

bash
# Valores corretos
export PLANNOTATOR_REMOTE=1
export PLANNOTATOR_REMOTE=true

# Valores incorretos (não entram em vigor)
export PLANNOTATOR_REMOTE=yes
export PLANNOTATOR_REMOTE=enabled

Armadilha 5: Opção de compartilhamento de URL ainda exibida após desabilitar

Sintoma: Após definir PLANNOTATOR_SHARE=disabled, "Share as URL" ainda está visível.

Causa: É necessário reiniciar o aplicativo para entrar em vigor.

Solução: Reinicie o Claude Code ou OpenCode.

Resumo da Lição

Nesta lição, aprendemos as 4 variáveis de ambiente principais do Plannotator:

Variável de ambienteUsoValor padrãoCenário aplicável
PLANNOTATOR_REMOTEInterruptor de modo remotoNão definido (modo local)SSH, Devcontainer, WSL
PLANNOTATOR_PORTPorta fixa19432 no modo remoto, aleatória no modo localPrecisa de encaminhamento de porta ou evitar conflitos de porta
PLANNOTATOR_BROWSERNavegador personalizadoNavegador padrão do sistemaDeseja usar navegador específico
PLANNOTATOR_SHAREInterruptor de compartilhamento de URLNão definido (habilitado)Precisa desabilitar função de compartilhamento

Pontos principais:

  • O modo remoto usa automaticamente porta fixa e desabilita a abertura automática do navegador
  • Variáveis de ambiente definidas explicitamente têm prioridade maior que o comportamento padrão
  • É necessário reiniciar o aplicativo para que as modificações de variáveis de ambiente entrem em vigor
  • Ambientes empresariais podem precisar desabilitar a função de compartilhamento de URL

Próxima Lição

Na próxima lição, aprenderemos Solução de Problemas Comuns.

Você vai aprender:

  • Como resolver problemas de porta ocupada
  • Lidar com situações onde o navegador não abre
  • Corrigir erros de planos não exibidos
  • Técnicas de depuração e métodos de visualização de logs

Apêndice: Referência do Código Fonte

Clique para expandir para ver locais do código fonte

Atualizado em: 2026-01-24

FuncionalidadeCaminho do arquivoNúmero da linha
Detecção de modo remotopackages/server/remote.ts16-29
Lógica de obtenção de portapackages/server/remote.ts34-49
Lógica de abertura de navegadorpackages/server/browser.ts45-74
Interruptor de compartilhamento de URL (Hook)apps/hook/server/index.ts44
Interruptor de compartilhamento de URL (OpenCode)apps/opencode-plugin/index.ts37-51

Constantes principais:

  • DEFAULT_REMOTE_PORT = 19432: Porta padrão do modo remoto

Funções principais:

  • isRemoteSession(): Detecta se está rodando em ambiente remoto (SSH, Devcontainer, WSL)
  • getServerPort(): Obtém porta do servidor (prioriza variável de ambiente, depois padrão do modo remoto, por fim aleatória)
  • openBrowser(url): Abre URL no navegador especificado ou no navegador padrão do sistema