Safe On Orbit · Setor espacial · 2025–2026
COSMOS
Uma plataforma que avisa quando um satélite corre risco de colisão e ajuda a planejar o desvio.
- Status
- No ar
- Contexto
- Produto da Safe On Orbit
- Meu papel
- Desenvolvedor único da plataforma atual: frontend em Next.js, backend em Django e infraestrutura no Google Cloud, com CI/CD.
- Tecnologias
- Next.js
- TypeScript
- Django
- PostgreSQL
- Google Cloud Run
- Cloud Run Jobs
- Cloud SQL
- Three.js
- Orekit
- SGP4
- Redis
- Docker
- Terraform
- GitHub Actions

Visão geral
O COSMOS (Collision Safety Management Orbital System) é o principal produto da Safe On Orbit, empresa do setor espacial, e foi feito para donos e operadores de satélites. Todos os dias, ele cruza os dados orbitais da frota do operador com o catálogo público de objetos em órbita, separa as aproximações relevantes e calcula a distância mínima e a probabilidade de colisão de cada uma.
Fui o desenvolvedor único da plataforma atual. Troquei a interface antiga, feita com templates do Django, por um frontend em Next.js, desenvolvi a maior parte do backend e coloquei tudo em produção no Google Cloud. Os métodos de cálculo orbital foram definidos pela empresa; o código que os executa na plataforma é meu.
Problema
Quem opera satélites precisa saber, com dias de antecedência, quando outro objeto — um satélite, um corpo de foguete ou um detrito — vai passar perto demais de um satélite da frota, para decidir se faz ou não uma manobra de desvio.
O catálogo público tem dezenas de milhares de objetos. Comparar todos com todos de forma precisa custa caro, e os dados orbitais mudam o tempo todo, então os eventos já encontrados precisam ser recalculados.
Abordagem
O cálculo funciona como um funil: um filtro rápido descarta a maioria dos pares e só os candidatos passam pela análise precisa. Cada par de objetos tem um único evento, que ganha uma nova avaliação a cada recálculo — assim dá para ver como o risco evolui e perceber quando um satélite manobrou.
O processamento pesado roda em jobs agendados, fora da API; a API e a interface só leem os resultados. A interface foi pensada para a operação: risco por cores, linha do tempo da frota e o encontro em 3D.
Como funciona
Dados orbitais
O backend baixa os elementos orbitais (TLE) do catálogo público Space-Track e aceita efemérides enviadas pelo próprio operador, que são mais precisas.
Triagem
Um pré-filtro com SGP4, o modelo padrão de propagação de órbitas, seleciona os pares de objetos que podem se aproximar. Ele roda em paralelo, em vários processos.
Análise refinada
Para cada candidato, o sistema encontra o instante de maior aproximação (TCA) e calcula a distância mínima e a probabilidade de colisão, com propagação de alta fidelidade via Orekit.
Recálculo
Eventos ativos são recalculados com os dados mais recentes, até 14 dias à frente. O evento passa a “resolvido” quando o risco some e a “concluído” quando o TCA passa.
Operação e manobra
O operador acompanha os eventos no dashboard e na simulação 3D, recebe alertas em tempo real e pode simular uma manobra de desvio ou pedir ao sistema a manobra ótima.
Google Cloud
Backend e frontend rodam no Cloud Run; o processamento em lote roda em Cloud Run Jobs, disparados pelo Cloud Scheduler. O deploy sai do GitHub Actions, que acessa o Google Cloud sem chave fixa (Workload Identity Federation).
- Dados
- Código
- Pessoa
- Resultado
- Catálogo e efemérides (Dados)TLEs públicos e arquivos do operador
- Job diário (Código)Agendado, fora da API
- Triagem com SGP4 (Código)Filtro rápido, em paralelo
- Análise com Orekit (Código)TCA, distância e probabilidade
- Otimização de manobra (Código)Algoritmo genético
- Decisão do operador (Pessoa)Dashboard e simulação 3D
- Evento encerrado (Resultado)Resolvido ou concluído, com histórico
O cálculo pesado roda em jobs em lote; a API e a interface só leem os resultados.
Decisões principais
Jobs agendados no lugar de workers
O projeto começou com Celery e passou o processamento agendado para Cloud Run Jobs. Ficou mais eficiente: o cálculo pesado só roda quando é disparado e escala separado da API.
Um evento por par de objetos
Cada recálculo adiciona uma avaliação ao mesmo evento, em vez de criar outro registro. Isso evita duplicação, guarda o histórico completo e permite perceber quando um satélite manobrou.
Filtro barato antes do cálculo preciso
A propagação de alta fidelidade é cara demais para o catálogo inteiro. Por isso o SGP4 faz a triagem, e o Orekit só entra nos candidatos.
Resultado
O COSMOS está no ar, em produção no Google Cloud, com deploy automatizado e pipelines de CI que rodam lint, testes, varredura de segurança e build das imagens.
Além do pipeline de conjunções, entreguei o módulo de manobras com otimização por algoritmo genético distribuído, uma API pública versionada com chave de acesso e documentação OpenAPI, a simulação orbital 3D no navegador e testes automatizados no backend e no frontend.
O que eu levei disso
Comece pelo mais simples, principalmente na nuvem. E faça o que o cliente pede, não o que você acha que agrega.
Capturas





Links
O COSMOS exige login e não tem demonstração pública. O código é privado.