ForgeOps e uma plataforma de governanca de automacoes de engenharia. O projeto centraliza visibilidade operacional sobre GitHub Actions, pull requests, reviews automatizados com Codex e sinais basicos de qualidade por repositorio.
Hoje o repositório já entrega a base para:
- registro de repositórios monitorados
- catalogo de workflows
- visibilidade de workflow runs e jobs
- sincronizacao de pull requests
- automacao advisory de review com Codex no GitHub Actions
Equipes de engenharia costumam ter automacoes importantes espalhadas entre repositorios, workflows, checks e comentarios de review. Isso dificulta responder perguntas como:
- quais repositorios estao fora do padrao
- quais automacoes estao falhando com frequencia
- quais PRs carregam risco operacional relevante
- onde falta review automatizado, teste ou cobertura minima de qualidade
ForgeOps existe para transformar esses sinais em um sistema governavel e navegavel.
O projeto esta em evolucao incremental orientada por milestone. A base atual do MVP ja cobre:
Repository RegistryWorkflow CatalogWorkflow Runs Visibility- baseline inicial de
Pull Request Insights
Funcionalidades como Review Intelligence, Automation Health e Policy Engine ainda estao em progresso.
ForgeOps segue uma arquitetura de monorepo com fronteiras explicitas:
frontend/interface web em Next.js 15 + React 19backend/API Fastify com TypeScript strict, Prisma e integracoes com GitHubpackages/configuracoes compartilhadas de lint e TypeScriptdocs/arquitetura, ADRs, planos e guias operacionais.github/workflows, prompts versionados e automacoes do proprio repositorio
Fluxo de alto nivel:
GitHub -> backend (sync e persistencia) -> PostgreSQL
-> frontend (API protegida) -> operador
-> GitHub Actions (codex-review) -> comentarios advisory no PR
Documentacao arquitetural complementar:
O repositório possui um workflow advisory de review automatizado em .github/workflows/codex-review.yml.
Resumo do comportamento atual:
- Um pull request para
maindispara o workflow. - O workflow ignora PRs de fork e PRs draft.
- O fluxo automatico tenta gerar um review complementar via OpenRouter.
- Se o caminho principal nao produzir um review utilizavel, entra o fallback via Gemini 2.5 Flash.
- Cada provider automatico tem um retry unico antes de o workflow passar para o proximo fallback.
- Se nenhum provider produzir conteudo publicavel, o workflow publica um comentario advisory explicando o motivo observado.
- O comentario final do fluxo automatico sai sempre via
GITHUB_TOKEN, preservando o bot como autor. - O Codex fica reservado para o fluxo manual premium via
label codex-review, com comentario publicado como usuario real quandoCODEX_REVIEW_PATestiver valido.
Documentacao detalhada:
- Node.js 22+
- pnpm 9
- Docker e Docker Compose
pnpm installUse .env.example como base:
cp .env.example .envVariaveis locais principais:
FORGEOPS_PROXY_PORTTRAEFIK_DOCKER_PROVIDER_ENABLEDTRAEFIK_DOCKER_PROVIDER_ENDPOINTPORTDATABASE_URLREDIS_URLNEXT_PUBLIC_API_BASE_URLGITHUB_APP_IDGITHUB_APP_INSTALLATION_IDGITHUB_APP_PRIVATE_KEYGITHUB_APP_WEBHOOK_SECRET
No modo Docker, docker-compose.yml sobrescreve DATABASE_URL e REDIS_URL para usar service discovery. O frontend containerizado deriva NEXT_PUBLIC_API_BASE_URL a partir de FORGEOPS_PROXY_PORT, mantendo http://api.forgeops.local quando a porta publicada e 80 e adicionando :<porta> quando o proxy local usa outra porta. O .env continua servindo como modo legado para execucao direta fora de containers.
Configuracao do proxy local:
TRAEFIK_DOCKER_PROVIDER_ENABLED=falsemantem o modo estavel usando apenasfile providerTRAEFIK_DOCKER_PROVIDER_ENABLED=trueliga odocker providerem modo experimental, sem remover o fallback atualTRAEFIK_DOCKER_PROVIDER_ENDPOINTendpoint do Docker usado no preflight do provider experimental
Adicione estas entradas no arquivo de hosts do sistema operacional:
127.0.0.1 forgeops.local
127.0.0.1 api.forgeops.local
No Windows, o arquivo fica em:
C:\Windows\System32\drivers\etc\hosts
Fluxo recomendado:
docker compose up --buildServicos esperados:
- frontend:
http://forgeops.localquandoFORGEOPS_PROXY_PORT=80, ouhttp://forgeops.local:<porta>quando a porta publicada for diferente - backend:
http://api.forgeops.localquandoFORGEOPS_PROXY_PORT=80, ouhttp://api.forgeops.local:<porta>quando a porta publicada for diferente - proxy reverso: porta
80apenas
PostgreSQL e Redis permanecem acessiveis apenas na rede Docker durante o uso normal da aplicacao.
Se a porta 80 ja estiver ocupada por outra stack local, ajuste apenas FORGEOPS_PROXY_PORT no .env. O roteamento continua o mesmo, muda apenas a porta publicada pelo proxy, e o frontend containerizado passa a embutir a base URL correta da API no bundle local.
Modo padrao:
file providerativodocker providerdesligado- roteamento principal estavel em
forgeops.localeapi.forgeops.local
Modo experimental:
- manter
file providerativo - definir
TRAEFIK_DOCKER_PROVIDER_ENABLED=true - o proxy tenta habilitar o
docker providersem afetar as rotas principais - se houver falha de socket, API ou descoberta, o sistema continua funcional com
file provider
Hosts experimentais do docker provider:
docker-frontend.forgeops.localdocker-api.forgeops.local
Esses hosts nao sao necessarios para o fluxo normal. Eles existem para validar a descoberta do provider experimental sem competir com as rotas estaveis.
docker compose up -d postgres redis
pnpm devNesse modo legado, os servicos esperados continuam:
- frontend:
http://localhost:3000 - backend:
http://localhost:3333
pnpm --filter @forgeops/backend prisma:generateO codex-review usa configuracao de GitHub Actions, nao o .env local da aplicacao. As variaveis e segredos mais importantes sao:
CODEX_REVIEW_PATsecret opcional para publicar a solicitacao manual de@codex reviewcomo usuario realOPENROUTER_API_KEYsecret para o provider automatico primarioOPENROUTER_MODELrepository variable preferencial para o modelo da OpenRouterGEMINI_API_KEYsecret preferencial para o fallback automatico via Gemini 2.5 FlashGOOGLE_API_KEYalias aceito para o fallback automatico via Gemini 2.5 FlashGEMINI_MODELrepository variable opcional; sem definicao explicita o workflow usagemini-2.5-flash
Observacoes:
- o fluxo automatico nao chama mais
@codex review - por compatibilidade operacional, o workflow ainda aceita
CODEX_REVIEW_OPENROUTER_MODELcomo alias legado - sem
CODEX_REVIEW_PAT, o fluxo automatico continua funcionando e comentando como bot; apenas o gatilho manual do Codex fica indisponivel
Validacoes do workspace:
pnpm lint
pnpm typecheck
pnpm testValidacoes uteis do backend:
pnpm --filter @forgeops/backend prisma:validate
pnpm --filter @forgeops/backend prisma:generateDocumentacao do ambiente local e do fallback do proxy:
Este projeto esta licenciado sob a MIT License.