Zero-trust Opensource Network Management and Observability Platform http://docs.serviceradar.cloud/
  • JavaScript 49.6%
  • Elixir 30.4%
  • Go 9.3%
  • Rust 6%
  • Shell 1.4%
  • Other 3%
Find a file
Michael Freeman 7ba670f19d
Some checks failed
Source Code SBOM / generate-sbom (release) Has been cancelled
chore: release v1.2.5
2026-03-27 17:05:49 -05:00
.agent/workflows 2277 feat sysmon rewrite in golang (#2279) 2026-01-14 00:47:53 -06:00
.bazelbsp adding missing files 2025-09-18 15:21:05 -05:00
.buildbuddy 2999 chore fix bazel container builds (#3000) 2026-03-07 11:01:16 -06:00
.githooks chore: app.js refactoring/cleanup (#2892) 2026-02-22 21:35:57 -06:00
.github Update/wasm updates plugins (#3086) 2026-03-27 11:36:08 -05:00
build chore: bump (#3077) 2026-03-25 13:39:21 -05:00
database 2851 chore repo hygeine (#2868) 2026-02-20 18:30:16 -06:00
docker chore: bump (#3077) 2026-03-25 13:39:21 -05:00
docs chore(deps): bump path-to-regexp from 0.1.12 to 0.1.13 in /docs (#3093) 2026-03-27 16:42:00 -05:00
elixir feat: juniper classification (#3095) 2026-03-27 17:04:15 -05:00
go chore(deps): bump golang.org/x/net in /go/cmd/wasm-plugins/unifi-protect (#3094) 2026-03-27 16:51:01 -05:00
google/protobuf adding missing files 2025-09-18 12:44:26 -05:00
helm/serviceradar chore: release v1.2.5 2026-03-27 17:05:49 -05:00
k8s Fix demo LB route regression with declarative Calico /32 config (refs #2991) (#2992) 2026-03-27 16:42:37 -05:00
openspec 2916 feat add support for IP cameras (#3069) 2026-03-25 12:48:06 -05:00
proto 2916 feat add support for IP cameras (#3069) 2026-03-25 12:48:06 -05:00
rust fix: error storm (#3091) 2026-03-27 14:55:09 -05:00
scripts chore: bump (#3077) 2026-03-25 13:39:21 -05:00
swift chore: fixing bazel issues, linter cleanups (#2890) 2026-02-22 12:50:54 -06:00
third_party Feature/netflow collection (#2571) 2026-01-31 22:18:30 -06:00
tools/bazel 2999 chore fix bazel container builds (#3000) 2026-03-07 11:01:16 -06:00
.bazelignore Chore/netflow parser 090 (#2702) 2026-02-04 22:20:03 -06:00
.bazelrc Chore/bazel cleanup (#3027) 2026-03-12 15:30:23 -05:00
.bazelversion Chore/bazel cleanup (#3027) 2026-03-12 15:30:23 -05:00
.clang-tidy fixing bazel build, adding clang-tidy 2025-10-10 15:51:57 -05:00
.clangd bazel work and cleanup of legacy web and srql remnants (#2175) 2025-12-17 19:53:27 -06:00
.dockerignore 2771 featweb ng add flows tab to device details page (#2938) 2026-02-27 17:20:00 -06:00
.env-sample pg security updates (#2536) 2026-01-27 03:13:25 -06:00
.env.example 2817 bugdire farm01 and tonka01 keep switching places (#2818) 2026-02-13 11:00:41 -06:00
.gitignore Codex/propose fix for cert permissions vulnerability (#3032) 2026-03-12 16:26:19 -05:00
.gitmodules fix(release): restore arancini submodule and update alpine postgresql16 apk pins 2026-02-20 02:11:03 -06:00
.golangci.yml fixing linter settings file 2025-08-28 15:24:20 -05:00
.swiftlint.yml 2878 swift UI app (#2880) 2026-02-21 22:09:18 -06:00
.tool-versions Web/elixir phoenix poc (#2139) 2025-12-15 23:11:48 -06:00
AGENTS.md fix: quarantined payloads (#3080) 2026-03-25 18:58:18 -05:00
Bazel.md 2999 chore fix bazel container builds (#3000) 2026-03-07 11:01:16 -06:00
BUILD.bazel chore: ex_dna cleanup (#3040) 2026-03-15 01:51:15 -05:00
BUILD.md 2999 chore fix bazel container builds (#3000) 2026-03-07 11:01:16 -06:00
buildbuddy.yaml 2999 chore fix bazel container builds (#3000) 2026-03-07 11:01:16 -06:00
buildbuddy_setup_docker_auth.sh fixing missing schema, broken helm (#2415) 2026-01-20 20:12:34 -06:00
Cargo.lock fix: error storm (#3091) 2026-03-27 14:55:09 -05:00
Cargo.toml #2908 refactor: merge Flowgger and OTEL into unified log-collector (#2920) 2026-02-26 14:51:32 -06:00
CHANGELOG chore: release v1.2.5 2026-03-27 17:05:49 -05:00
CLAUDE.md 2069 bug icmp metrics missing in k8s (#2070) 2025-12-07 20:41:39 -06:00
CODE_OF_CONDUCT.md Added COC, CONTRIBUTING.md and SUPPORT.md files. 2025-10-09 15:32:08 +08:00
CODEOWNERS Added CODEOWNERS and RELEASE.md 2025-10-09 15:43:34 +08:00
CONTRIBUTING.md Added COC, CONTRIBUTING.md and SUPPORT.md files. 2025-10-09 15:32:08 +08:00
docker-compose.dev.yml chore: bump (#3077) 2026-03-25 13:39:21 -05:00
docker-compose.override.yml.example 2851 chore repo hygeine (#2868) 2026-02-20 18:30:16 -06:00
docker-compose.yml chore: bump (#3077) 2026-03-25 13:39:21 -05:00
DOCKER_QUICKSTART.md 3002 bug docker builds failing (#3003) 2026-03-07 14:03:54 -06:00
go.mod chore(deps): bump k8s.io/client-go from 0.35.2 to 0.35.3 (#3063) 2026-03-25 19:35:37 -05:00
go.sum chore(deps): bump k8s.io/client-go from 0.35.2 to 0.35.3 (#3063) 2026-03-25 19:35:37 -05:00
GOVERNANCE.md Update GOVERNANCE.md 2025-10-16 18:56:39 +08:00
INSTALL.md chore: doc cleanup (#2719) 2026-02-06 14:33:12 -06:00
LICENSE added copyright statements 2025-03-02 21:17:35 -06:00
MAINTAINERS.md Added empty ROADMAP.md and renamed CONTRIBUTORS.md to MAINTAINERS.md 2025-10-16 18:01:04 +08:00
Makefile 2916 feat add support for IP cameras (#3069) 2026-03-25 12:48:06 -05:00
Makefile.docker removing proton references/cleanup 2025-11-22 00:42:50 -06:00
MODULE.bazel chore: bump (#3077) 2026-03-25 13:39:21 -05:00
MODULE.bazel.lock fix: error storm (#3091) 2026-03-27 14:55:09 -05:00
README-Docker.md Codex/propose fix for cert permissions vulnerability (#3032) 2026-03-12 16:26:19 -05:00
README.md Update README to remove video and add link 2026-02-23 20:29:18 -06:00
RELEASE.md 2999 chore fix bazel container builds (#3000) 2026-03-07 11:01:16 -06:00
ROADMAP.md tenant cleanup (#2320) 2026-01-17 01:00:16 -06:00
routing1.md Fix demo LB route regression with declarative Calico /32 config (refs #2991) (#2992) 2026-03-27 16:42:37 -05:00
SECURITY.md Update SECURITY.md 2025-03-03 12:12:50 -06:00
SECURITY_CONTACTS.md Update SECURITY_CONTACTS.md 2025-10-16 18:55:11 +08:00
SUPPORT.md Added COC, CONTRIBUTING.md and SUPPORT.md files. 2025-10-09 15:32:08 +08:00
TELEMETRY.md Update TELEMETRY.md 2025-10-16 18:55:20 +08:00
VERSION chore: release v1.2.5 2026-03-27 17:05:49 -05:00
WORKSPACE speed up builds 2025-10-11 00:49:25 -05:00

Website Apache 2.0 License

ServiceRadar

Screenshot 2025-12-16 at 10 09 19 PM Screenshot 2026-02-16 at 8 39 36 PM Screenshot 2026-02-16 at 8 36 26 PM Screenshot 2026-02-16 at 8 37 08 PM

https://github.com/user-attachments/assets/1cf2b90a-06f4-4ba7-b229-79720b16e0aa

CI Go Linter Go Tests Rust Tests

CNCF Landscape FOSSA Status OpenSSF Best Practices CLA assistant Ask DeepWiki

ServiceRadar is a distributed network monitoring system designed for infrastructure and services in hard-to-reach places or constrained environments. It provides real-time monitoring of internal services with cloud-based alerting to ensure you stay informed even during network or power outages.

Demo site available at https://demo.serviceradar.cloud login: demo@localhost password: serviceradar

Features

  • Distributed Architecture: Multi-component design (Agent, Gateway, Core) for flexible edge deployments.
  • WASM Plugin System: Securely extend monitoring with custom checks in Go or Rust. Runs in a hardware-level sandbox with zero local dependencies and proxied networking.
  • Topology: GPU-native topology engine capable of rendering millions of interactive nodes and edges at 60fps via deck.gl, Apache Arrow for zero-copy streaming, and WASM-native logic layer.
  • Causal Engine: Real-time triage and isolation via DeepCausality (Rust). Employs hybrid filtering and roaring bitmaps to identify root causes and visually isolate an event's "blast radius" in microseconds.
  • SRQL: intuitive key:value syntax for querying time-series and relational data.
  • Unified Data Layer: Powered by CloudNativePG, TimescaleDB, and Apache AGE for relational, time-series, and graph topology data.
  • Observability: Native support for OTEL, GELF, Syslog, SNMP (polling/traps), BGP (BMP), and NetFlow.
  • Graph Network Mapper: Discovery engine that maps interfaces and topology relationships via SNMP/LLDP/CDP.
  • Security: Hardened with mTLS (SPIFFE/SPIRE on Kubernetes), RBAC, and SSO integration.

WASM-Based Extensibility

ServiceRadar replaces traditional "script-and-shell" plugins with a modern WebAssembly runtime. This provides a generation leap in security and portability:

Feature ServiceRadar (WASM) Traditional NMS (Nagios/Zabbix) Enterprise (SolarWinds)
Isolation Hardware Sandbox None (OS Process) None (User Session)
Dependencies Zero (Static Binaries) High (Local Libs/Python) High (.NET/Runtimes)
Security Capability-based (Proxy) Sudo/Root access Local Admin / WMI
Portability Cross-platform WASM Script-specific Windows-centric
Auditability Every network call logged Invisible to Agent Opaque

Why WASM? Plugins are "FS-less" by default. They cannot access the host filesystem or raw sockets. Instead, they use a Network Bridge where the Agent proxies specific HTTP/TCP calls based on admin-approved allowlists.

Plug-in SDK

Go: https://github.com/carverauto/serviceradar-sdk-go

Rust: https://github.com/carverauto/serviceradar-sdk-rust -- Coming Soon

Quick Installation (Docker Compose)

Get ServiceRadar running in under 5 minutes:

# Optional - set these in your .env 
export SERVICERADAR_HOST=<my-vm-ip>
export GATEWAY_PUBLIC_BIND=0.0.0.0

git clone https://github.com/carverauto/serviceradar.git
cd serviceradar

docker compose up -d

# Get your admin password
docker compose logs config-updater

Access: http://localhost (login: root@localhost)

Kubernetes / Helm Deployment

ServiceRadar provides an official Helm chart for Kubernetes deployments, published to GHCR as an OCI artifact.

# Inspect chart metadata and default values
helm show chart oci://ghcr.io/carverauto/charts/serviceradar --version 1.1.1
helm show values oci://ghcr.io/carverauto/charts/serviceradar --version 1.1.1 > values.yaml

# Install a pinned release (recommended)
helm upgrade --install serviceradar oci://ghcr.io/carverauto/charts/serviceradar \
  --version 1.1.1 \
  -n serviceradar --create-namespace \
  --set global.imageTag="v1.1.1"

# Track mutable images (staging/dev): pulls :latest and forces re-pull
helm upgrade --install serviceradar oci://ghcr.io/carverauto/charts/serviceradar \
  --version 1.1.1 \
  -n serviceradar --create-namespace \
  --set global.imageTag="latest" \
  --set global.imagePullPolicy="Always"

# Get password for 'root@localhost' user created by helm install
kubectl get secret serviceradar-secrets -n serviceradar \
    -o jsonpath='{.data.admin-password}' | base64 -d

Note: if you omit global.imageTag, the chart defaults to latest. Set global.imagePullPolicy=Always when you want to pick up new pushes on restart.

Docker Compose notes:

  • Set APP_TAG in .env to pin release images (example: APP_TAG=v1.1.1).
  • Set COMPOSE_FILE=docker-compose.yml:docker-compose.dev.yml in .env to default to the dev overlay without -f.

Chart URL: oci://ghcr.io/carverauto/charts/serviceradar

Notes:

  • Chart versions are like 1.1.1; ServiceRadar image tags are like v1.1.1.
  • If your cluster requires registry credentials, set image.registryPullSecret (default ghcr-io-cred).

For ArgoCD deployments, use ghcr.io/carverauto/charts as the repository URL (without the oci:// prefix):

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: serviceradar
  namespace: argocd
spec:
  destination:
    server: https://kubernetes.default.svc
    namespace: serviceradar
  source:
    repoURL: ghcr.io/carverauto/charts
    chart: serviceradar
    targetRevision: "1.1.1"
    helm:
      values: |
        global:
          imageTag: "v1.1.1"

Architecture

  1. Agent: Lightweight Go service on monitored hosts; manages WASM execution and local collection.
  2. Agent-Gateway: Ingestion point that receives gRPC streams from edge agents.
  3. Core (core-elx): Control plane (Elixir/Phoenix/Ash) for orchestration, ERTS, and job scheduling (Oban).
  4. Web UI (web-ng): Real-time LiveView dashboard and APIs for configuration and visualization.
  5. NATS: NATS JetStream message broker for bulk ingestion streams.
  6. Collectors: Collect bulk data (netflow, logs, SNMP, etc.).

Documentation

For detailed guides on setup, security, and WASM SDK usage, visit: https://docs.serviceradar.cloud

Contributing

Contributions are welcome! Please feel free to submit a Pull Request. Join our Discord!

License

Apache 2.0 License - see the LICENSE file for details.