Pular para o conteúdo

Variáveis de Ambiente

Toda configuração do Valter é orientada por variáveis de ambiente com prefixo VALTER_. As variáveis são carregadas nesta ordem de precedência: ambiente do shell, arquivo .env, valores padrão internos. A classe Settings em src/valter/config.py usa pydantic-settings com env_prefix="VALTER_".

VariávelPropósitoPadrãoObrigatória?
VALTER_ENVNome do ambiente. Defina como production ou prod para ativar as proteções de produção.developmentNão
VALTER_RUNTIMEModo de execução que determina qual processo é iniciado. Veja Modos de Runtime.apiNão
VariávelPropósitoPadrãoObrigatória?
VALTER_DATABASE_URLString de conexão PostgreSQL usando o driver asyncpg.postgresql+asyncpg://valter:valter_dev@localhost:5432/valterNão
VALTER_QDRANT_URLURL do banco de dados vetorial Qdrant.http://localhost:6333Não
VALTER_QDRANT_COLLECTIONNome da collection do Qdrant para chunks de documentos jurídicos.legal_chunks_v1Não
VALTER_NEO4J_URIURI de conexão do Neo4j. Use bolt:// para local, neo4j+s:// para Aura.bolt://localhost:7687Não
VALTER_NEO4J_USERNAMEUsuário de autenticação do Neo4j.neo4jNão
VALTER_NEO4J_PASSWORDSenha de autenticação do Neo4j.neo4j_devNão
VALTER_REDIS_URLURL de conexão do Redis com número do banco.redis://localhost:6379/0Não
VALTER_ARQ_REDIS_DBNúmero do banco Redis para o background worker ARQ. Mantido separado do Redis principal para evitar colisão de chaves.1Não
VariávelPropósitoPadrãoObrigatória?
VALTER_EMBEDDING_MODELIdentificador do modelo HuggingFace para embeddings semânticos. Baixado via make download-model.rufimelo/Legal-BERTimbau-sts-baseNão
VALTER_EMBEDDING_DIMENSIONDimensão do vetor produzido pelo modelo de embedding. Deve corresponder à saída do modelo.768Não
VALTER_EMBEDDING_SERVICE_URLURL de um serviço remoto de embedding (hospedado no Railway). Quando definida, o modelo local é ignorado.NoneNão
VALTER_RERANKER_SERVICE_URLURL de um serviço remoto de reranking (hospedado no Railway). Quando definida, o cross-encoder local é ignorado.NoneNão
VALTER_GROQ_API_KEYAPI key para o Groq LLM. Habilita recursos de extração factual e expansão de queries.NoneNão
VALTER_GROQ_MODELIdentificador do modelo usado com a API do Groq.qwen/qwen3-32bNão
VALTER_GROQ_ENABLEDFeature flag para habilitar recursos do Groq. Requer que VALTER_GROQ_API_KEY esteja definida.falseNão
VariávelPropósitoPadrãoObrigatória?
VALTER_API_HOSTEndereço de host onde o servidor da API faz bind.0.0.0.0Não
VALTER_API_PORTPorta em que o servidor da API escuta.8000Não
VALTER_AUTH_ENABLEDHabilita autenticação por API key nos endpoints REST.falseSim (prod)
VALTER_RATE_LIMIT_READMáximo de requisições de leitura por API key por minuto.100Não
VALTER_RATE_LIMIT_WRITEMáximo de requisições de escrita por API key por minuto.10Não
VALTER_CORS_ORIGINSArray JSON de origens CORS permitidas.["*"]Não
VALTER_LOG_LEVELNível de log da aplicação (DEBUG, INFO, WARNING, ERROR).INFONão
VALTER_METRICS_IP_ALLOWLISTLista de endereços IP separados por vírgula com permissão para acessar /metrics.VazioSim (prod)
VariávelPropósitoPadrãoObrigatória?
VALTER_UPLOAD_STORAGE_PATHCaminho no sistema de arquivos local onde uploads são armazenados antes do processamento.data/datasets/uploads/rawNão
VALTER_MAX_UPLOAD_MBTamanho máximo de upload em megabytes. Convertido para bytes internamente via a propriedade max_upload_bytes.100Não
VALTER_INGEST_JOB_TIMEOUT_SECONDSDuração máxima (segundos) que um job de ingestão ARQ pode rodar antes de ser encerrado.1800Não
VALTER_INGEST_WORKER_CONCURRENCYNúmero de jobs concorrentes que o worker ARQ processa.2Não
VariávelPropósitoPadrãoObrigatória?
VALTER_R2_ACCOUNT_IDID da conta Cloudflare. Usado para construir a URL do endpoint quando VALTER_R2_ENDPOINT_URL não está definida.NoneNão
VALTER_R2_ACCESS_KEY_IDAccess key compatível com S3 para o R2.NoneNão
VALTER_R2_SECRET_ACCESS_KEYSecret key compatível com S3 para o R2.NoneNão
VALTER_R2_BUCKET_NAMENome do bucket R2 para armazenar artefatos de workflows.valter-artifactsNão
VALTER_R2_ENDPOINT_URLSobrescreve a URL do endpoint R2 construída automaticamente.NoneNão
VALTER_R2_PRESIGN_TTL_SECONDSTempo de vida (segundos) para URLs pré-assinadas de download.600Não
VALTER_R2_CANARY_PERCENTPorcentagem (0-100) de uploads de artefatos roteados para o R2 em vez de armazenamento local. Use para rollout gradual.0Não
VariávelPropósitoPadrãoObrigatória?
VALTER_WORKFLOW_TIMEOUT_SECONDSTimeout global para a execução completa de um workflow.2400Não
VALTER_WORKFLOW_MAX_RETRIESNúmero máximo de tentativas por etapa do workflow antes de marcá-la como falha.3Não
VALTER_WORKFLOW_POLL_RECOMMENDED_SECONDSIntervalo recomendado (segundos) para clientes consultarem o status de workflows. Retornado nas respostas da API.3Não
VALTER_WORKFLOW_STRICT_INFRA_REQUIREDQuando true, workflows falham imediatamente se a infraestrutura necessária (Qdrant, Redis) estiver indisponível. Quando false, degradam graciosamente.trueNão
VariávelPropósitoPadrãoObrigatória?
VALTER_MCP_SERVER_TRANSPORTProtocolo de transporte para o servidor MCP (streamable-http ou stdio).Derivado de VALTER_RUNTIMENão
VALTER_MCP_SERVER_HOSTEndereço de host onde o servidor MCP remoto faz bind.0.0.0.0Não
VALTER_MCP_SERVER_PORTPorta em que o servidor MCP remoto escuta. Usa $PORT como fallback se definido (compatibilidade com Railway).8001Não
VALTER_MCP_SERVER_PATHCaminho da URL para o endpoint HTTP do MCP./mcpNão
VALTER_MCP_SERVER_AUTH_MODEModo de autenticação para requisições MCP recebidas.api_keyNão
VALTER_MCP_SERVER_API_KEYSLista de API keys válidas para autenticação MCP, separadas por vírgula.NoneNão
VALTER_MCP_API_BASE_URLURL base da API REST para a qual o servidor MCP delega internamente.http://localhost:8000Não
VALTER_MCP_API_KEYAPI key que o servidor MCP usa ao chamar a API REST.NoneNão
VALTER_MCP_RATE_LIMIT_PER_MINUTEMáximo de requisições MCP por minuto por cliente.60Não
VariávelPropósitoPadrãoObrigatória?
VALTER_PHASE_RULES_VERSIONVersão das regras de classificação de fases usadas na análise processual.phase-rules-v1.1Não
VALTER_PHASE_MIN_PRECEDENT_SCOREScore mínimo de similaridade (0-100) para que um precedente seja considerado relevante no matching de fases.55.0Não
VALTER_PHASE_MAX_MATCHES_PER_PHASENúmero máximo de matches de precedentes retornados por fase processual.5Não
VariávelPropósitoPadrãoObrigatória?
VALTER_KG_BOOST_BATCH_ENABLEDHabilita o boost em lote do knowledge graph no retriever híbrido. Enriquece resultados de busca com contexto do grafo em paralelo.trueNão
VALTER_KG_BOOST_MAX_CONCURRENCYNúmero máximo de queries Neo4j concorrentes durante o KG boost. Ajuste conforme a capacidade do Neo4j.12Não
VALTER_QUERY_EXPANSION_MAX_VARIANTSNúmero máximo de variantes de query geradas durante a expansão de busca (requer Groq).3Não

A classe Settings aplica as seguintes restrições quando VALTER_ENV é definido como production ou prod. Essas validações são executadas na inicialização da aplicação e causam uma falha imediata com um ValueError descritivo se violadas.

Proteções do runtime API (ignoradas para runtimes somente MCP, que possuem autenticação própria):

  • VALTER_AUTH_ENABLED deve ser true
  • VALTER_CORS_ORIGINS não pode conter "*"
  • VALTER_METRICS_IP_ALLOWLIST deve ser não vazio

Proteções de infraestrutura (sempre aplicadas em produção):

  • VALTER_NEO4J_URI deve apontar para um host remoto (não localhost ou 127.0.0.1)
  • VALTER_NEO4J_PASSWORD não pode ser um valor fraco (neo4j_dev, password, changeme, etc.)
  • VALTER_DATABASE_URL não pode conter valter_dev
  • VALTER_REDIS_URL não pode apontar para localhost ou 127.0.0.1