Janus. Multi-tenant observability without boundary leaks
Open source, built by us and free for everyone.
Every user sees exactly what they should and nothing more. Janus is evoila’s open source multi-tenant proxy for Prometheus, Loki and Tempo. It enforces label-based access control and query policies between your users and your observability stack, transparently at the gateway and without touching your backends.
Janus. Multi-tenant observability without boundary leaks
Open source, built by us and free for everyone.
Every user sees exactly what they should and nothing more. Janus is evoila’s open source multi-tenant proxy for Prometheus, Loki and Tempo. It enforces label-based access control and query policies between your users and your observability stack, transparently at the gateway and without touching your backends.
Shared platforms leak. Janus holds the line.
Shared observability platforms are powerful until a developer queries metrics from a team they do not belong to, or a service account leaks logs across tenant boundaries. Janus sits between your users and your observability stack as a transparent security proxy. It validates identity, resolves policy and enforces label-level access before a single query reaches Prometheus, Loki or Tempo. It is open source, built on Spring WebFlux for reactive performance and designed to fit into an existing observability deployment without rebuilding the stack around it.
- 3 backends: Prometheus, Loki & Tempo in one proxy
- Zero trust: every query enforced, no exceptions
- Open source: GNU AGPLv3.0, community-driven
Tech-Deep-Dive
How Janus enforces access before a query lands
Every inbound request passes through a three-stage pipeline inside Janus. First comes authentication. A JWT token or forwarded authentication header is validated and the caller identity is resolved. Second comes policy resolution. The access rules for that identity are loaded, including which label values the caller is allowed to read. Third comes query enforcement. The request is parsed, required label selectors are injected or validated and the rewritten request is sent to the relevant backend. The response then passes back transparently. To the calling tool, Janus stays invisible.
The runtime model is reactive and non-blocking because Janus is built on Spring WebFlux. That means no threads sit idle while backends respond, scaling stays straightforward and the proxy remains stateless under load. Access policies are loaded from a configuration source at startup and can be reloaded without downtime.
Explore Janus on GitHub
Supported backends: one proxy, full stack coverage
Janus enforces access policies across Prometheus, Loki and Tempo in one deployment. You do not need a separate proxy for every backend, separate policy models per tool or different enforcement logic across metrics, logs and traces. One gate is enough for the full stack.
Want to talk about Janus in your stack?
Whether you want to understand how Janus fits into your observability platform, discuss multi-tenant access control or look at a real deployment scenario, get in touch with us. We will point you to the right expert.
FAQs