Why Nafas

Real logs, metrics, traces, and alerting for a self-hosted app, without standing up new infrastructure.

Standing up observability for a small or medium ASP.NET Core service usually means an OTel Collector, a time-series database, and a separate dashboard to run and secure — real infrastructure for a problem that's often just "let me see recent errors and know when something breaks."

Nafas is the alternative for that case: it lives inside your application's own process, stores data in a local SQLite file (or your existing SQL Server) by default, and needs nothing external to run.

What it doesn't try to be

It is not a replacement for a full OTel/Prometheus/Grafana stack at scale:

  • it does not federate across services
  • it does not do long-term, high-cardinality storage
  • it does not export to other backends

What it's for

The case where a single self-hosted app — or a handful of them sharing a database — needs real logs, metrics, traces, and threshold-based alerting without introducing new infrastructure to operate. If that's you, see the Quick start.