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ável Propósito Padrão Obrigató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
Cuidado
Definir VALTER_ENV=production ativa validação rigorosa: autenticação deve estar habilitada, wildcard no CORS é bloqueado, Neo4j deve ser remoto e credenciais de banco de dados não podem ser valores padrão. Veja Proteções de Produção abaixo.
Variável Propósito Padrão Obrigató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
Dica
Em produção, VALTER_DATABASE_URL não pode conter valter_dev, VALTER_NEO4J_URI deve apontar para um host remoto (não localhost) e VALTER_NEO4J_PASSWORD não pode ser um valor fraco como neo4j_dev ou password. A aplicação se recusa a iniciar caso contrário.
Variável Propósito Padrão Obrigató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. None Não VALTER_RERANKER_SERVICE_URLURL de um serviço remoto de reranking (hospedado no Railway). Quando definida, o cross-encoder local é ignorado. None Não VALTER_GROQ_API_KEYAPI key para o Groq LLM. Habilita recursos de extração factual e expansão de queries. None Nã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
Nota
Sem VALTER_GROQ_API_KEY e VALTER_GROQ_ENABLED=true, o sistema funciona normalmente, mas endpoints de extração factual e expansão de queries na busca híbrida ficam desabilitados. Definir VALTER_EMBEDDING_SERVICE_URL evita a necessidade de baixar o modelo de embedding de ~500 MB localmente.
Variável Propósito Padrão Obrigató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. Vazio Sim (prod)
Perigo
Em produção, VALTER_AUTH_ENABLED deve ser true, VALTER_CORS_ORIGINS não pode conter "*" e VALTER_METRICS_IP_ALLOWLIST deve estar definida. A aplicação levanta um ValueError na inicialização se qualquer uma dessas restrições for violada.
Variável Propósito Padrão Obrigató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ável Propósito Padrão Obrigatória? VALTER_R2_ACCOUNT_IDID da conta Cloudflare. Usado para construir a URL do endpoint quando VALTER_R2_ENDPOINT_URL não está definida. None Não VALTER_R2_ACCESS_KEY_IDAccess key compatível com S3 para o R2. None Não VALTER_R2_SECRET_ACCESS_KEYSecret key compatível com S3 para o R2. None Nã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. None Nã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
Nota
As três credenciais (VALTER_R2_ACCOUNT_ID, VALTER_R2_ACCESS_KEY_ID, VALTER_R2_SECRET_ACCESS_KEY) devem ser definidas juntas para o R2 funcionar. Quando VALTER_R2_CANARY_PERCENT é 0 (padrão), todos os artefatos são armazenados localmente. Aumente gradualmente durante a migração para o R2.
Variável Propósito Padrão Obrigató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ável Propósito Padrão Obrigatória? VALTER_MCP_SERVER_TRANSPORTProtocolo de transporte para o servidor MCP (streamable-http ou stdio). Derivado de VALTER_RUNTIME Nã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. None Nã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. None Não VALTER_MCP_RATE_LIMIT_PER_MINUTEMáximo de requisições MCP por minuto por cliente. 60Não
Dica
O servidor MCP funciona como uma ponte: recebe chamadas de ferramentas de clientes LLM (ChatGPT, Claude) e as traduz em chamadas à API REST em VALTER_MCP_API_BASE_URL. Se a API REST tiver autenticação habilitada, defina VALTER_MCP_API_KEY de acordo.
Variável Propósito Padrão Obrigató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ável Propósito Padrão Obrigató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