O veloz.json é o arquivo de configuração do seu projeto na Veloz. Ele é gerado automaticamente no primeiro veloz deploy e fica na raiz do repositório.
Exemplo básico
Para um projeto simples (um único app):
{
"version": "1.0",
"project": {
"id": "proj_abc123",
"name": "meu-app"
},
"services": {
".": {
"id": "svc_xyz789",
"name": "meu-app",
"type": "web",
"root": ".",
"branch": "main",
"build": {
"command": "next build"
},
"runtime": {
"command": "next start",
"port": 3000
}
}
}
}Exemplo monorepo
Para projetos com múltiplos apps:
{
"version": "1.0",
"project": {
"id": "proj_abc123",
"name": "meu-projeto"
},
"defaults": {
"build": {
"nodeVersion": "22",
"packageManager": "pnpm"
},
"resources": {
"cpu": "500m",
"memory": "512Mi"
}
},
"services": {
"apps/web": {
"id": "svc_web123",
"name": "web",
"type": "web",
"root": "apps/web",
"build": {
"command": "next build"
},
"runtime": {
"command": "next start",
"port": 3000
}
},
"apps/api": {
"id": "svc_api456",
"name": "api",
"type": "web",
"root": "apps/api",
"build": {
"command": "tsc"
},
"runtime": {
"command": "node dist/index.js",
"port": 8080
}
}
}
}Referência de campos
version
Versão do schema. Sempre "1.0".
"version": "1.0"project
Informações do projeto na Veloz.
| Campo | Tipo | Descrição |
|---|---|---|
id |
string | ID do projeto (gerado pela Veloz) |
name |
string | Nome do projeto |
slug |
string | Slug para URLs (apenas a-z, 0-9, -) |
services
Mapa de serviços. A chave é o caminho relativo do serviço (. para raiz, apps/web para monorepo).
defaults
Configurações padrão aplicadas a todos os serviços. Valores definidos no serviço individual sobrescrevem os defaults.
"defaults": {
"type": "web",
"branch": "main",
"build": { ... },
"runtime": { ... },
"resources": { ... }
}Configuração de serviço
Cada serviço aceita os seguintes campos:
Campos básicos
| Campo | Tipo | Padrão | Descrição |
|---|---|---|---|
id |
string | — | ID do serviço (gerado pela Veloz) |
name |
string | — | Nome do serviço |
type |
"web" | "static" | "worker" |
"web" |
Tipo do serviço (ver abaixo) |
root |
string | "." |
Diretório raiz do serviço |
branch |
string | "main" |
Branch para deploy |
Tipos de Serviço
| Tipo | Descrição | Porta HTTP | Domínio |
|---|---|---|---|
web |
Servidor HTTP (APIs, Next.js, etc.) | ✅ Obrigatória | ✅ Automático |
static |
Site estático (HTML/CSS/JS) | ❌ | ✅ Automático |
worker |
Processo em background (filas, crons) | ❌ | ❌ |
Workers são ideais para:
- Filas de jobs (BullMQ, Agenda)
- Cron jobs (node-cron)
- Consumidores de mensagens (Kafka, RabbitMQ)
- Pipelines de dados
{
"services": {
"workers/email": {
"name": "email-worker",
"type": "worker",
"runtime": {
"command": "npx tsx worker.ts"
}
}
}
}build
Configuração de build.
| Campo | Tipo | Padrão | Descrição |
|---|---|---|---|
command |
string | null | auto | Comando de build (null = auto-detectar) |
nodeVersion |
string | "22" |
Versão do Node.js ("18", "20", "22") |
packageManager |
string | "auto" |
"npm", "yarn", "pnpm", "bun", "auto" |
installCommand |
string | null | auto | Comando de install customizado |
outputDir |
string | "dist" |
Diretório de output (sites estáticos) |
aptPackages |
string[] | [] |
Pacotes do sistema para instalar (ex: ffmpeg, imagemagick) |
"build": {
"command": "npm run build",
"nodeVersion": "22",
"packageManager": "pnpm",
"outputDir": ".next",
"aptPackages": ["ffmpeg", "libvips-dev"]
}Pacotes do sistema (aptPackages)
Use aptPackages para instalar pacotes do sistema operacional que seu app precisa durante o build ou em runtime. Os nomes seguem a convenção de pacotes Ubuntu/Debian.
"build": {
"aptPackages": ["ffmpeg", "libvips-dev"]
}Regras de nomenclatura:
- Apenas letras minúsculas, números,
.,+e- - Mínimo 2 caracteres
- Deve começar com letra ou número
- Exemplos válidos:
ffmpeg,libvips-dev,g++,python3.11 - Exemplos inválidos:
FFmpeg,my package,pkg=1.0
Para a lista completa de pacotes e exemplos por caso de uso, veja o guia Pacotes do Sistema.
runtime
Configuração de execução.
| Campo | Tipo | Padrão | Descrição |
|---|---|---|---|
command |
string | null | auto | Comando de start |
port |
number | 3000 |
Porta do serviço (1-65535) |
healthCheck.path |
string | "/" |
Endpoint de health check |
healthCheck.interval |
number | 30 |
Intervalo entre checks (segundos) |
healthCheck.timeout |
number | 10 |
Timeout do check (segundos) |
"runtime": {
"command": "node server.js",
"port": 8080,
"healthCheck": {
"path": "/health",
"interval": 15,
"timeout": 5
}
}env
Declaração de variáveis de ambiente. Apenas as chaves e metadados ficam no veloz.json — os valores são definidos via CLI ou dashboard e nunca aparecem no arquivo.
"env": {
"DATABASE_URL": {
"description": "URL de conexão com o banco PostgreSQL",
"required": true,
"example": "postgres://user:pass@host:5432/db"
},
"REDIS_URL": {
"description": "URL do Redis para cache",
"required": false
}
}Isso serve como documentação viva das variáveis que o app precisa.
resources
Limites de CPU, memória e scaling.
| Campo | Tipo | Padrão | Descrição |
|---|---|---|---|
instances |
number | 1 |
Número de instâncias (1-10) |
cpu |
string | "500m" |
Limite de CPU ("250m", "500m", "1", "2") |
memory |
string | "512Mi" |
Limite de memória ("256Mi", "512Mi", "1Gi", "2Gi") |
"resources": {
"instances": 2,
"cpu": "1",
"memory": "1Gi",
"autoscale": {
"enabled": true,
"minInstances": 1,
"maxInstances": 5,
"targetCPU": 70
}
}Autoscale
| Campo | Tipo | Padrão | Descrição |
|---|---|---|---|
autoscale.enabled |
boolean | false |
Ativar autoscaling |
autoscale.minInstances |
number | 1 |
Mínimo de instâncias |
autoscale.maxInstances |
number | 3 |
Máximo de instâncias (até 20) |
autoscale.targetCPU |
number | 70 |
CPU alvo para escalar (10-90%) |
Validação
O veloz.json é validado automaticamente em cada deploy. Para validar manualmente, use o JSON Schema:
{
"$schema": "https://onveloz.com/schemas/veloz-config.schema.json"
}Adicione o campo $schema no topo do arquivo para ter autocomplete e validação no VS Code e Cursor.
Dicas
- Não edite
ids manualmente — eles são gerados pela Veloz e vinculam seu projeto/serviço ao servidor - Commite o
veloz.json— ele deve ser versionado no Git para que toda a equipe use a mesma config - Use
defaultsem monorepos para evitar repetição entre serviços null= auto-detectar — usenullembuild.commandouruntime.commandpara deixar a Veloz detectar automaticamente
Próximos passos
- Pacotes do Sistema — Instalar ffmpeg, Puppeteer, sharp, etc.
- Monorepo — Deploy de múltiplos apps
- Configuração — Editar config via CLI
- Variáveis de Ambiente — Gerenciar secrets