The observability platform that fits in a single binary.
15
stars
186
commits
TypeScript
primary language
May 31, 2026
updated
The observability platform that fits in a single binary.
Free and open source. Drop in a single executable, point your services at it with OpenTelemetry, and get a full observability UI with traces, metrics, logs, and dashboards. No external database. No infrastructure to manage.

Most observability stacks require running Grafana, Prometheus, and Tempo — or Jaeger backed by Elasticsearch or ClickHouse — before you see a single trace. Nabatshy embeds DuckDB directly into the binary, so the entire platform ships as a single executable with a single .db file on disk.
Designed for production apps with moderate traffic, local development, side projects, and internal tools. Any setup where spinning up a dedicated observability cluster is more overhead than the service it's monitoring. If you need to handle millions of spans per second, use something else. If you want traces working in under a minute, this is for you.
When you run the binary, three HTTP servers start concurrently:
| Port | Purpose |
|---|---|
| 4318 | OpenTelemetry collector — receives traces, metrics, and logs (JSON or protobuf) |
| 3000 | Query API — serves data to the UI |
| 8081 | UI — serves the embedded React dashboard |
Your services send telemetry to http://localhost:4318 using any OpenTelemetry SDK. The collector writes data into a local DuckDB file (nabatshy.db). The UI at http://localhost:8081 lets you search traces, inspect spans, query logs, and view metrics.

Docker (recommended):
docker run -p 4318:4318 -p 3000:3000 -p 8081:8081 -v $(pwd)/data:/data adham99/nabatshy
Build from source:
# 1. Clone and install frontend dependencies
git clone https://github.com/adhamsalama/nabatshy
cd nabatshy
# 2. Build the UI (output gets embedded into the Go binary)
cd ui && npm install && npm run build && cd ..
# 3. Build and run
go build -ldflags="-s -w"
./nabatshy
Then point your OpenTelemetry SDK at http://localhost:4318 and open http://localhost:8081.
| Flag | Env var | Default | Description |
|---|---|---|---|
--otel-port | OTEL_PORT | 4318 | OpenTelemetry collector port |
--api-port | API_PORT | 3000 | Query API port |
--ui-port | UI_PORT | 8081 | UI server port |
--db-path | DUCKDB_PATH | nabatshy.db | Path to the DuckDB data file |
--in-memory | DUCKDB_IN_MEMORY=true | false | Use in-memory DuckDB (no persistence) |
185 commits
1 commits
Hacker News (1)
TypeScript
50.9%
Go
45.7%
JavaScript
2.6%
The observability platform that fits in a single binary.
15
stars
186
commits
TypeScript
primary language
May 31, 2026
updated
The observability platform that fits in a single binary.
Free and open source. Drop in a single executable, point your services at it with OpenTelemetry, and get a full observability UI with traces, metrics, logs, and dashboards. No external database. No infrastructure to manage.

Most observability stacks require running Grafana, Prometheus, and Tempo — or Jaeger backed by Elasticsearch or ClickHouse — before you see a single trace. Nabatshy embeds DuckDB directly into the binary, so the entire platform ships as a single executable with a single .db file on disk.
Designed for production apps with moderate traffic, local development, side projects, and internal tools. Any setup where spinning up a dedicated observability cluster is more overhead than the service it's monitoring. If you need to handle millions of spans per second, use something else. If you want traces working in under a minute, this is for you.
When you run the binary, three HTTP servers start concurrently:
| Port | Purpose |
|---|---|
| 4318 | OpenTelemetry collector — receives traces, metrics, and logs (JSON or protobuf) |
| 3000 | Query API — serves data to the UI |
| 8081 | UI — serves the embedded React dashboard |
Your services send telemetry to http://localhost:4318 using any OpenTelemetry SDK. The collector writes data into a local DuckDB file (nabatshy.db). The UI at http://localhost:8081 lets you search traces, inspect spans, query logs, and view metrics.

Docker (recommended):
docker run -p 4318:4318 -p 3000:3000 -p 8081:8081 -v $(pwd)/data:/data adham99/nabatshy
Build from source:
# 1. Clone and install frontend dependencies
git clone https://github.com/adhamsalama/nabatshy
cd nabatshy
# 2. Build the UI (output gets embedded into the Go binary)
cd ui && npm install && npm run build && cd ..
# 3. Build and run
go build -ldflags="-s -w"
./nabatshy
Then point your OpenTelemetry SDK at http://localhost:4318 and open http://localhost:8081.
| Flag | Env var | Default | Description |
|---|---|---|---|
--otel-port | OTEL_PORT | 4318 | OpenTelemetry collector port |
--api-port | API_PORT | 3000 | Query API port |
--ui-port | UI_PORT | 8081 | UI server port |
--db-path | DUCKDB_PATH | nabatshy.db | Path to the DuckDB data file |
--in-memory | DUCKDB_IN_MEMORY=true | false | Use in-memory DuckDB (no persistence) |
Hacker News (1)
185 commits
1 commits
TypeScript
50.9%
Go
45.7%
JavaScript
2.6%