Skip to content

Latest commit

 

History

43 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Argus

Centro de operações para monitoramento geoespacial e inteligência de fontes abertas. O Argus reúne dezenas de fontes públicas — tráfego aéreo e marítimo, satélites, sensores ambientais, infraestrutura, SIGINT e notícias — sobre um único mapa interativo, executado inteiramente na infraestrutura do operador.

Mantido por Olwtelet.


Visão geral

O Argus é um sistema auto-hospedado. Não há serviço central: o backend coleta os dados diretamente das fontes públicas, o frontend consome apenas o backend local, e nada é enviado a terceiros além das requisições necessárias a cada fonte configurada.

O sistema é composto por quatro partes:

Componente Tecnologia Função
backend/ Python 3.10+, FastAPI, Uvicorn Coleta, normalização e exposição dos dados
frontend/ Next.js 16, React 19, MapLibre GL Painel operacional e mapa
desktop-shell/ Tauri 2 (Rust) Empacotamento desktop e ponte nativa
backend/services/mesh/ Python Rede Infonet, gates e mensageria privada

Principais capacidades

  • Mapa operacional com camadas independentes: aeronaves (comercial, privada, militar), embarcações, satélites, imagens orbitais, terremotos, incêndios, vulcões, qualidade do ar, alertas meteorológicos, CFTV, datacenters, usinas, bases militares, cabos submarinos e quedas de internet.
  • SIGINT: KiwiSDR, PSK Reporter, SatNOGS, TinyGS, escutas, Meshtastic e APRS.
  • OSINT: agregação de notícias por região via GDELT, canais públicos do Telegram e dossiês regionais.
  • Risco estratégico (experimental, desativado por padrão): pontuação derivada por região a partir dos sinais coletados, com backtest histórico.
  • SAR: detecção de mudanças no solo a partir de imagens de radar.
  • Infonet: rede par-a-par para sincronização de eventos, gates com criptografia fim-a-fim e mensagens diretas, transportada por onion/RNS.
  • Terminal integrado para operação da malha e consultas.

Requisitos

Item Versão Observação
Docker 24+ Caminho recomendado. Inclui Docker Compose v2.
Python 3.10 – 3.12 Somente para execução a partir do código-fonte.
Node.js 20+ Somente para execução a partir do código-fonte.
Rust estável Somente para compilar o aplicativo desktop.

O uv é usado para gerenciar o ambiente Python do backend. Instale-o em https://docs.astral.sh/uv/ ou use pip/venv diretamente.


Instalação

Docker (recomendado)

git clone https://github.com/Olwtelet/Argus.git
cd Argus && cp .env.example .env

Edite o .env com suas chaves de API (todas opcionais — veja Configuração) e suba os serviços:

docker compose up -d

O painel fica disponível em http://127.0.0.1:3000 e a API em http://127.0.0.1:8000.

As imagens são publicadas em ghcr.io/olwtelet/argus-backend e ghcr.io/olwtelet/argus-frontend.

A partir do código-fonte

uv sync --all-packages --group dev
cd frontend && npm ci

Para subir backend e frontend juntos em modo de desenvolvimento:

cd frontend && npm run dev

Os scripts start.sh (macOS/Linux) e start.bat (Windows) na raiz executam a mesma preparação de forma guiada, criando o ambiente virtual e instalando as dependências quando necessário.


Configuração

Toda a configuração é feita por variáveis de ambiente, lidas de um arquivo .env na raiz do repositório. O arquivo .env.example documenta cada opção.

Nenhuma chave é obrigatória para iniciar o sistema: as camadas sem credencial simplesmente permanecem vazias.

Variáveis relevantes

Variável Efeito
OPENSKY_CLIENT_ID / OPENSKY_CLIENT_SECRET Telemetria de aeronaves. Sem elas, a camada de voos usa apenas ADS-B, com lacunas significativas.
AIS_API_KEY Posições de embarcações.
GFW_API_TOKEN Eventos de atividade pesqueira.
WINDY_API_KEY Câmeras públicas (CFTV).
ADMIN_KEY Protege endpoints sensíveis (configurações, atualizações). Sem valor, apenas requisições de loopback são aceitas.
CORS_ORIGINS Origens permitidas. Detecta IPs da rede local quando vazio.
BIND Interface de escuta. 127.0.0.1 por padrão.

As variáveis próprias do produto usam o prefixo ARGUS_:

Variável Efeito
ARGUS_BACKEND_URL Endereço do backend usado pelo frontend e pelo shell desktop.
ARGUS_TRUSTED_FRONTEND_HOSTS Hostnames tratados como operador local na ponte do Docker. Por padrão frontend,argus-frontend.
ARGUS_TRUST_DOCKER_BRIDGE_LOCAL_OPERATOR Trata a bridge do Docker como acesso local do operador.
ARGUS_ADMIN_KEY Chave administrativa para ferramentas e scripts.
ARGUS_HMAC_SECRET Segredo HMAC para integrações autenticadas.
ARGUS_STRICT_CSP Aplica a política de conteúdo restrita no frontend.
ARGUS_MESH_NODE_RUNTIME Executa o backend em modo nó de malha, sem as coletas globais.

Coletas de terceiros sensíveis vêm desativadas por padrão (PREDICTION_MARKETS_ENABLED, FINANCIAL_ENABLED, CROWDTHREAT_ENABLED, FIMI_ENABLED, NUFORC_ENABLED, GT_ANALYTICS_ENABLED). Cada uma expõe o IP do nó ao respectivo serviço quando habilitada.


Execução

Docker

docker compose up -d

Atalhos disponíveis no Makefile:

make up-local
make up-lan
make logs
make down

O script compose.sh é um invólucro que detecta o motor de contêiner disponível (Docker ou Podman) e valida o arquivo de composição antes de subir.

Arquivos de composição adicionais cobrem cenários específicos:

Arquivo Uso
docker-compose.override.yml Ajustes locais de desenvolvimento
docker-compose.build.yml Compila as imagens a partir do código-fonte
docker-compose.participant.yml Nó participante da Infonet
docker-compose.relay.yml Nó de retransmissão
docker-compose.e2e.yml Ambiente de testes ponta a ponta

Nó de malha headless

Para participar da Infonet sem painel, mapa ou coletas globais:

./meshnode.sh

No Windows, use meshnode.bat.

Desktop

O shell desktop é construído com Tauri. A partir de desktop-shell/tauri-skeleton/:

./build.sh

No Windows, use build.ps1. O aplicativo é publicado como Argus, com identificador com.olwtelet.argus, e verifica atualizações assinadas contra as releases do repositório.


Segurança

  • Os endpoints administrativos exigem ADMIN_KEY fora de loopback.
  • A confiança na bridge do Docker é vinculada a hostnames específicos (ARGUS_TRUSTED_FRONTEND_HOSTS) e resolve para o modo fail-closed quando o DNS interno não responde.
  • O armazenamento local sensível é selado com AES-GCM, com chave derivada por domínio.
  • As atualizações do desktop são verificadas por assinatura; o instalador é conferido contra SHA256SUMS.txt da release e contra a lista de digests embarcada em backend/data/release_digests.json.
  • O tráfego da Infonet usa transportes onion/RNS por padrão. A sincronização por clearnet é opt-in (MESH_INFONET_ALLOW_CLEARNET_SYNC).
  • As requisições de saída são identificadas por um handle de operador gerado localmente, não pelo nome do produto.

Nunca versione arquivos .env, chaves privadas de atualização ou segredos de CI.


Desenvolvimento

cd frontend && npm run dev

Estrutura relevante:

backend/
  routers/          endpoints HTTP
  services/         coletores, normalização e integrações
  services/mesh/    protocolo Infonet, gates e mensageria
  tests/            suíte pytest
frontend/
  src/app/          rotas e layout do Next.js
  src/components/   painéis, mapa e terminal
  src/i18n/         catálogo de textos da interface
desktop-shell/      empacotamento Tauri e ponte nativa
docs/               documentação técnica

Todo texto exibido ao operador passa pelo catálogo em frontend/src/i18n/. Componentes não devem conter texto solto.


Testes

Frontend:

cd frontend && npm run lint
cd frontend && npm run format:check
cd frontend && npm run test:ci
cd frontend && npm run build

Backend:

cd backend && pytest

Composição Docker:

docker compose config

Shell desktop (a partir de desktop-shell/tauri-skeleton/src-tauri/):

cargo fmt --check
cargo test

Atribuição de dados

O Argus consome dados de terceiros sob licenças que exigem atribuição, entre elas a Open Database License. As atribuições exigidas são exibidas no controle de atribuição do mapa e detalhadas em DATA-ATTRIBUTION.md. Esses avisos não devem ser removidos nem ocultados.


Aviso

O Argus opera exclusivamente sobre dados públicos e de fontes abertas. Não utiliza informação classificada ou de acesso restrito. Posições estimadas — em especial as de embarcações militares — são inferências a partir de relatos públicos e não devem ser tratadas como confirmadas.


Licença

O código do Argus é licenciado sob a GNU Affero General Public License v3.0 — veja LICENSE. Em resumo, a AGPL exige que quem disponibiliza o sistema a terceiros pela rede também disponibilize o código correspondente.

As licenças dos dados de terceiros são independentes da licença do código e estão em DATA-ATTRIBUTION.md.

About

Argus is an open-source intelligence and situational awareness platform built for real-time geospatial monitoring. It brings together aviation, maritime, environmental, satellite, weather, and public data into a unified interface for exploring, analyzing, and understanding events around the world.

Topics

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Contributors

Languages