https://github.com/towlabs/dashfrog
A Grafana your support team can actually use.
https://github.com/towlabs/dashfrog
b2b metrics monitoring observability opentelemetry operations sla-tracking status-page
Last synced: 27 days ago
JSON representation
A Grafana your support team can actually use.
- Host: GitHub
- URL: https://github.com/towlabs/dashfrog
- Owner: towlabs
- License: mit
- Created: 2025-09-30T07:47:42.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2025-12-10T17:02:37.000Z (7 months ago)
- Last Synced: 2026-01-08T03:15:01.579Z (6 months ago)
- Topics: b2b, metrics, monitoring, observability, opentelemetry, operations, sla-tracking, status-page
- Language: TypeScript
- Homepage:
- Size: 7.36 MB
- Stars: 3
- Watchers: 0
- Forks: 1
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# DashFrog
A Grafana your support team can actually use.

## What is DashFrog?
DashFrog is open-source observability built around your customers, not your infrastructure.
It sits on OpenTelemetry but abstracts away the complexity. Customer namespaces are auto-created as you push data. Anyone on your team can explore what's happening with a customer — no PromQL, no trace IDs.
**Not a replacement for dev observability.** Keep using Datadog, Grafana, or whatever you use for infrastructure monitoring. DashFrog complements them by organizing telemetry per customer — making it easy for support, account managers, and customers themselves to understand what's happening.
**Key Features:**
- 🎯 **Customer-first** - Organize telemetry by customer, not infrastructure
- ⚡ **Zero config** - Customer namespaces auto-created as data arrives
- 🔍 **No query languages** - Explore without PromQL or trace IDs
- 📊 **Shareable insights** - Give customers visibility into their own data
## Try the Demo
See DashFrog in action with a 2-minute demo:
```bash
curl -fsSL https://raw.githubusercontent.com/towlabs/dashfrog/main/bin/deploy | bash -s -- --with-demo
```
This will:
1. Install DashFrog with Docker Compose
2. Start the demo generating sample data
3. Create status page notebooks for 3 customers
Access the UI at **http://localhost:8000** (login: `admin` / `admin`)
> **For production:** See the [Deployment Guide](docs/deployment.md) for Kubernetes, custom configuration, and security hardening.
## Key concepts
### Flows
Flows let you follow a distributed workflow as logical steps.
You define a flow in your code. DashFrog tracks it across services using OpenTelemetry. Your support team sees "customer X's import is stuck at validation" — not span IDs and service graphs.
```python
from dashfrog import flow, step
# Start a flow for a customer
with flow.start(
name="customer_data_import", # flow name
tenant="acme-corp", # tenant name
env="prod" # optional labels
):
# Each step is tracked
with step.start("validate_data"):
# validation logic
validate_csv(file)
with step.start("transform_data"):
# transformation logic
transform(data)
with step.start("load_to_database"):
# database logic
db.insert(data)
```
Flow data is automatically available in notebooks, where you can query and visualize workflows per customer.
→ See [Flows documentation](docs/flows.md) for distributed flows, error handling, and advanced usage.
### Metrics
Metrics use standard OTel under the hood. DashFrog presents them so you don't need to know what a gauge, counter, or histogram is.
```python
from fastapi import FastAPI
from dashfrog import metrics
app = FastAPI()
computation_duration = metrics.Histogram(
"computation_duration", labels=["env"], pretty_name="Computation Duration", unit="s"
)
computation_count = metrics.Counter("computation_count", labels=["env"], pretty_name="Computations")
@app.get("/heavy-computation/{customer_id}/{env}")
async def heavy_computation(customer_id: str, env: str):
duration = sleep(3)
computation_duration.record(duration, tenant=customer_id, env=env)
computation_count.add(1, tenant=customer_id, env=env)
```
Metrics data is automatically available in notebooks for querying and visualization.
→ See [Metrics documentation](docs/metrics.md) for histograms, percentiles, labels, and best practices.
## Notebooks
Build customer-specific dashboards with a block-based editor. Combine metrics and flows to create views you can share publicly with customers or use internally for support.
**Features:**
- Drill-down into historical data by clicking any metric or flow
- Share public notebooks via URL
- Add time annotations for releases, incidents, and events
→ See [Notebooks documentation](docs/notebooks.md) for details
## Roadmap
Ideas we're exploring:
- External data sources(API, Prometheus, ...)
- Helpdesk integrations (Zendesk, Intercom)
- Alerting rules
- Frontend SDK for embedding components in apps
## License
MIT License - see [LICENSE](LICENSE) for details.