Plataforma de gerenciamento remoto de endpoints (RMM) open-source
construída com .NET 10, NATS e PostgreSQL.
Important
Este projeto usa IA generativa e práticas de vibe coding como parte do processo de desenvolvimento, revisão e documentação. Se você não concorda com esse tipo de processo assistido por IA, não utilize este projeto.
- Sobre o Projeto
- Agent Windows
- Funcionalidades
- Arquitetura
- Stack
- Instalação Rápida
- Configuração
- Contribuição
- Licença
Discovery RMM é um servidor de gerenciamento remoto de endpoints (RMM) open-source desenvolvido para equipes de TI que precisam de visibilidade, controle e automação sobre sua infraestrutura de dispositivos Windows e Linux.
O servidor expõe uma API REST + WebSocket que se comunica com agents leves instalados nos endpoints, oferecendo inventário de hardware, execução remota de scripts, geração automática de chamados e muito mais.
┌─────────────────────────────────────────────────────────┐
│ Discovery RMM Server │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌───────┐ │
│ │ REST API │ │ SignalR │ │ NATS │ │ AI │ │
│ │ (Scalar) │ │(Realtime)│ │ (Broker) │ │ Chat │ │
│ └──────────┘ └──────────┘ └──────────┘ └───────┘ │
│ ↑ ↑ ↑ │
│ └──────────────┴────────────┘ │
│ Agent (Windows) │
└─────────────────────────────────────────────────────────┘
O Discovery Agent é o componente instalado nos endpoints e se comunica com este servidor.
O agent é distribuído como executável .exe para Windows e realiza:
- Autenticação mútua com o servidor via JWT + API Key
- Coleta de inventário de hardware (CPU, RAM, disco, rede)
- Execução remota de scripts PowerShell/CMD
- Comunicação em tempo real via NATS (com fallback para SignalR)
- Auto-atualização automática
📦 Download do Agent: Releases do Agent
Os módulos abaixo estão em fase testável / pré-estável: disponíveis para validação, mas ainda sujeitos a ajustes antes de uma classificação estável.
| Módulo | Descrição | Status |
|---|---|---|
| 🔐 Autenticação | JWT + API Keys + MFA (TOTP/FIDO2) | 🧪 Pré-estável |
| 📦 Inventário | Hardware, software, rede por endpoint | 🧪 Pré-estável |
| 💬 Chat com IA | OpenAI/Ollama para análise de tickets | 🧪 Pré-estável |
| 🎫 Auto-Tickets | Motor automático de geração de chamados | 🧪 Pré-estável |
| 🔧 Campos Custom | Campos configuráveis por entidade | 🧪 Pré-estável |
| 🖥️ Acesso Remoto | MeshCentral embed + debug remoto | 🧪 Pré-estável |
| 📊 Relatórios | Templates personalizáveis com exportação | 🧪 Pré-estável |
| 🗄️ Object Storage | Local, MinIO e S3-compatible | 🧪 Pré-estável |
| 🚀 App Store | Catálogo de apps com deploy automatizado | 🧪 Pré-estável |
| 📡 NATS Messaging | Broker com auth callout e credenciais | 🧪 Pré-estável |
| 🔭 OpenTelemetry | Rastreamento distribuído e métricas | 🧪 Pré-estável |
| 🔄 Auto-Update | Self-update do servidor via script | 🧪 Pré-estável |
discovery-rmm-server/
├── src/
│ ├── Discovery.Api/ # ASP.NET Core - Controllers, Hubs, Middleware
│ ├── Discovery.Core/ # Entidades, Interfaces, DTOs, ValueObjects
│ ├── Discovery.Infrastructure/ # Repositórios, Services, NATS, Storage
│ └── Discovery.Migrations/ # FluentMigrator - schema do banco
├── .github/
│ └── workflows/
│ ├── ci.yml # Build + Testes
│ ├── release.yml # Channel Delivery (beta/lts/release)
│ └── security-hotfix.yml # Fast-track para CVEs críticos
└── docs/ # Documentação por capacidade
| Branch | Canal | Propósito |
|---|---|---|
release |
🟢 Estável | Branch padrão — produção |
beta |
🟡 Beta | Pré-release com novas features |
lts |
🔵 LTS | Long-Term Support |
dev |
⚪ Dev | Desenvolvimento ativo |
| Camada | Tecnologia |
|---|---|
| Runtime | .NET 10 (ASP.NET Core) |
| Banco de dados | PostgreSQL 15+ com pgvector |
| Mensageria | NATS 2.x com JetStream |
| Cache | Redis (StackExchange.Redis) |
| ORM | Entity Framework Core 10 + Npgsql |
| Migrations | FluentMigrator |
| Realtime | SignalR (WebSocket) |
| IA | OpenAI / Ollama (pgvector embeddings) |
| Observabilidade | OpenTelemetry (traces + metrics) |
| Acesso Remoto | MeshCentral |
| Autenticação | JWT Bearer + API Keys + Argon2 |
| Validação | FluentValidation |
| API Docs | Scalar (OpenAPI) |
| Storage | Local / MinIO / AWS S3 |
| Testes | NUnit + Mocks |
- .NET 10 SDK
- PostgreSQL 15+ com extensão
pgvector - NATS Server 2.x
- Redis (opcional, para cache)
git clone https://github.com/pedrostefanogv/DiscoveryRMM_API.git
cd DiscoveryRMM_API
dotnet restore Discovery.slnxcp src/Discovery.Api/appsettings.Development.json.example src/Discovery.Api/appsettings.Development.json
# Editar com suas credenciais de banco e NATSdotnet run --project src/Discovery.Api -- --migratedotnet run --project src/Discovery.Api
# API disponível em: https://localhost:7001
# Docs Scalar: https://localhost:7001/scalarbash -c "$(curl -fsSL https://raw.githubusercontent.com/pedrostefanogv/DiscoveryRMM_API/release/scripts/linux/bootstrap_install_discovery.sh)"O bootstrap clona o repositório localmente e executa todo o processo de instalação.
Exemplos de canal/branch:
# Interativo: pergunta lts/release/beta/dev
bash -c "$(curl -fsSL https://raw.githubusercontent.com/pedrostefanogv/DiscoveryRMM_API/release/scripts/linux/bootstrap_install_discovery.sh)"
# Direto em um canal
DISCOVERY_RELEASE_CHANNEL=dev bash -c "$(curl -fsSL https://raw.githubusercontent.com/pedrostefanogv/DiscoveryRMM_API/release/scripts/linux/bootstrap_install_discovery.sh)"
# Com argumento explicito de branch
bash -c "$(curl -fsSL https://raw.githubusercontent.com/pedrostefanogv/DiscoveryRMM_API/release/scripts/linux/bootstrap_install_discovery.sh)" -- --branch betaConsulte DEPLOYMENT_OFFLINE_INSTALL.md para instalação offline.
As principais configurações ficam em appsettings.json / variáveis de ambiente:
{
"ConnectionStrings": {
"DefaultConnection": "Host=localhost;Database=discovery;Username=...;Password=..."
},
"Nats": {
"Url": "nats://localhost:4222",
"CredentialsFile": "/etc/discovery/nats.creds"
},
"Jwt": {
"Issuer": "discovery-rmm",
"Audience": "discovery-agents",
"SecretKey": "<sua-chave-secreta>"
},
"Redis": {
"ConnectionString": "localhost:6379"
}
}Consulte CONFIGURATION.md para referência completa.
- Autenticação JWT + API Keys com Argon2 para hashing
- NATS com autenticação callout
- Rate limiting em endpoints críticos
- Scan automático de CVEs via Dependabot
- Workflow de security hotfix fast-track para vulnerabilidades críticas
- Nenhum secret deve ser commitado — use variáveis de ambiente
Reporte vulnerabilidades via GitHub Security Advisories.
Contribuições são bem-vindas! Leia o CONTRIBUTING.md antes de enviar PRs.
# Fluxo básico
git checkout dev
git checkout -b feature/sua-feature
# ... develop ...
git push origin feature/sua-feature
# Abrir PR para devdotnet test src/Discovery.Tests/Discovery.Tests.csprojDistribuído sob a licença MIT. Veja LICENSE para mais informações.
- 📦 Agent Windows — Componente instalado nos endpoints
- 📖 Documentação Completa
- 🔄 Changelog
- 🔒 Security Advisories
- 📋 Guia de Deployment
Open-source Remote Monitoring & Management (RMM) platform
built with .NET 10, NATS and PostgreSQL.
Important
This project uses generative AI and vibe coding practices as part of its development, review and documentation process. If you do not agree with this AI-assisted process, do not use this project.
Discovery RMM is an open-source Remote Monitoring & Management server designed for IT teams that need visibility, control and automation over their Windows and Linux device infrastructure.
The server exposes a REST API + WebSocket that communicates with lightweight agents installed on endpoints, providing hardware inventory, remote script execution, automated ticket creation and much more.
The Discovery Agent is installed on endpoints and communicates with this server.
The agent is distributed as a Windows .exe and handles:
- Mutual authentication with the server via JWT + API Key
- Hardware inventory collection (CPU, RAM, disk, network)
- Remote PowerShell/CMD script execution
- Real-time communication via NATS (with SignalR fallback)
- Automatic self-update
📦 Download Agent: Agent Releases
The modules below are testable / pre-stable: available for validation, but still subject to changes before a stable classification.
| Module | Description | Status |
|---|---|---|
| 🔐 Authentication | JWT + API Keys + MFA (TOTP/FIDO2) | 🧪 Pre-stable |
| 📦 Inventory | Hardware, software, network per endpoint | 🧪 Pre-stable |
| 💬 AI Chat | OpenAI/Ollama for ticket analysis | 🧪 Pre-stable |
| 🎫 Auto-Tickets | Automatic ticket generation engine | 🧪 Pre-stable |
| 🔧 Custom Fields | Configurable fields per entity | 🧪 Pre-stable |
| 🖥️ Remote Access | MeshCentral embed + remote debug | 🧪 Pre-stable |
| 📊 Reports | Customizable templates with export | 🧪 Pre-stable |
| 🗄️ Object Storage | Local, MinIO and S3-compatible | 🧪 Pre-stable |
| 🚀 App Store | App catalog with automated deployment | 🧪 Pre-stable |
| 📡 NATS Messaging | Broker with auth callout and credentials | 🧪 Pre-stable |
| 🔭 OpenTelemetry | Distributed tracing and metrics | 🧪 Pre-stable |
git clone https://github.com/pedrostefanogv/DiscoveryRMM_API.git
cd DiscoveryRMM_API
dotnet restore Discovery.slnx
dotnet run --project src/Discovery.Api
# API available at: https://localhost:7001
# Scalar docs: https://localhost:7001/scalarbash -c "$(curl -fsSL https://raw.githubusercontent.com/pedrostefanogv/DiscoveryRMM_API/release/scripts/linux/bootstrap_install_discovery.sh)"The bootstrap clones the repository locally and executes the full install process.
Branch/channel examples:
# Interactive: asks for lts/release/beta/dev
bash -c "$(curl -fsSL https://raw.githubusercontent.com/pedrostefanogv/DiscoveryRMM_API/release/scripts/linux/bootstrap_install_discovery.sh)"
# Direct channel selection
DISCOVERY_RELEASE_CHANNEL=dev bash -c "$(curl -fsSL https://raw.githubusercontent.com/pedrostefanogv/DiscoveryRMM_API/release/scripts/linux/bootstrap_install_discovery.sh)"
# Explicit branch argument
bash -c "$(curl -fsSL https://raw.githubusercontent.com/pedrostefanogv/DiscoveryRMM_API/release/scripts/linux/bootstrap_install_discovery.sh)" -- --branch betaContributions are welcome! Read CONTRIBUTING.md before sending PRs.
git checkout dev
git checkout -b feature/your-feature
git push origin feature/your-feature
# Open PR targeting devdotnet test src/Discovery.Tests/Discovery.Tests.csprojDistributed under the MIT License. See LICENSE for more information.
- 📦 Windows Agent — Component installed on endpoints
- 📖 Full Documentation
- 🔄 Changelog
- 🔒 Security Advisories
- 📋 Deployment Guide