A unified observability platform for metrics, logs, and traces. Built with Vue.js, Go, and the VictoriaMetrics ecosystem. Enterprise auth (RBAC, SSO, audit logging) included free.
- Multi-datasource support — VictoriaMetrics, Prometheus, Loki, VictoriaLogs, Tempo, VictoriaTraces, ClickHouse, Elasticsearch, CloudWatch
- Visual query builder — Builder/Code mode toggle with metric search, label filters, aggregation, and live query preview (MetricsQL/PromQL compatible)
- AI-powered query assist — inline AI suggestions with tool-calling for metric discovery. Configurable AI providers or GitHub Copilot integration
- Export to dashboard — save any Explore query directly as a dashboard panel
- Grafana dashboard import — connect to Grafana, browse dashboards, and import with fidelity report
- AI chat-to-dashboard — describe what you want in natural language, get a complete dashboard
- 16+ panel types — line, stat, gauge, bar gauge, bar chart, pie, table, heatmap, histogram, scatter, candlestick, state timeline, status history, flame graph, node graph, canvas, logs, trace list, trace heatmap
- Drag-and-drop layout — 12-column grid with resize handles
- Live log streaming — real-time log tailing for Loki and VictoriaLogs
- Log-to-trace correlation — click a trace ID in logs to jump to the trace view
- Enterprise auth — RBAC (Admin/Editor/Viewer/Auditor), Google/Microsoft/Okta SSO, group-to-role mapping, audit logging
- Dark/light mode with the "Kinetic" design system (burnished brass palette, Space Grotesk typography)
- Frontend: Vue 3 (Composition API + TypeScript), Vite, Tailwind CSS v4, ECharts
- Backend: Go 1.25, net/http
- Database: PostgreSQL 16 (metadata), Valkey (cache)
- Supported datasources: VictoriaMetrics, Prometheus, Loki, VictoriaLogs, Tempo, VictoriaTraces, ClickHouse, Elasticsearch, CloudWatch
Requires: Go 1.25+, Docker, a local k8s cluster (Colima, kind, or Docker Desktop), kubectl, helm, tilt
# Start local k8s cluster (Colima example)
colima start --kubernetes --cpu 4 --memory 8
# Start the full stack
tilt up -- victoria-metrics victoria-logs victoria-traces tempo loki prometheus \
otel-collector telemetrygen elasticsearch clickhouse alertmanager vmalert grafana
# Seed admin user and datasources with k8s service URLs
make seed-tilt
# Seed demo dashboards
cd backend && go run ./cmd/seed-dashboards -org victoria
# Open the app
open http://localhost:5173All datasource services are optional. Enable only what you need:
# Victoria stack only
tilt up -- victoria-metrics victoria-logs victoria-traces otel-collector telemetrygen
# LGTM stack only
tilt up -- prometheus loki tempo otel-collector telemetrygen
# Everything
tilt up -- victoria-metrics victoria-logs victoria-traces prometheus loki tempo \
otel-collector telemetrygen elasticsearch clickhouse alertmanager vmalert grafanaThe otel-collector config is generated dynamically from enabled services. Telemetrygen produces realistic web app telemetry (HTTP requests, database queries, distributed traces) via OpenTelemetry.
# Start infrastructure (pick a datasource profile)
make compose-up PROFILES=victoria
# Start telemetry generators
make telemetrygen PROFILES=victoria
# Start backend (hot reload with air)
make backend
# Start frontend (Vite dev server)
make frontend
# Seed admin user and datasources
make seedAvailable profiles: victoria, lgtm, elk, clickhouse. Combine with commas: PROFILES=victoria,lgtm.
| Field | Value |
|---|---|
admin@admin.com |
|
| Password | Admin1234 |
| Service | Port |
|---|---|
| Frontend | http://localhost:5173 |
| Backend API | http://localhost:8080 |
| VictoriaMetrics | http://localhost:8428 |
| VictoriaLogs | http://localhost:9428 |
| VictoriaTraces | http://localhost:10428 |
| Prometheus | http://localhost:9090 |
| Loki | http://localhost:3100 |
| Tempo | http://localhost:3200 |
| Elasticsearch | http://localhost:9200 |
| ClickHouse | http://localhost:8123 |
| AlertManager | http://localhost:9093 |
| VMAlert | http://localhost:8880 |
| Grafana | http://localhost:3000 |
| Tilt Dashboard | http://localhost:10350 |
The seed command creates four organizations, each with datasources for its stack:
| Organization | Datasources |
|---|---|
| Victoria | VictoriaMetrics, VictoriaLogs, VictoriaTraces, VMAlert, AlertManager |
| LGTM | Prometheus, Loki, Tempo |
| Elastic | Elasticsearch |
| ClickHouse | ClickHouse |
Six pre-built dashboards are available for the Victoria organization:
- HTTP Service Overview — request rate, error rate, latency percentiles (P50/P95/P99), status code breakdown
- Application Performance — avg request duration, latency trends, resource usage
- Database Health — connection pool stats, query duration, PostgreSQL vs Redis breakdown
- Infrastructure Overview — service uptime, CPU utilization, scrape health, memory trends
- Log Intelligence — service-filtered log views (API gateway, orders, payments), error analysis, slow query detection
- Trace Explorer — latency heatmap, recent distributed traces
Seed them with:
cd backend && go run ./cmd/seed-dashboards -org victoriaPublished to GHCR on every release (multi-arch: amd64 + arm64):
docker pull ghcr.io/aceobservability/ace-backend:latest
docker pull ghcr.io/aceobservability/ace-frontend:latestTags: vX.Y.Z, X.Y.Z, X.Y, latest, sha-<commit>
# Frontend (Vitest + happy-dom)
cd frontend && bun run test
# Backend (Go testing)
cd backend && go test ./...make lint # all linters
make backend-lint # golangci-lint
make frontend-lint # Biome# Frontend
cd frontend && bun run build
# Backend
cd backend && go build ./cmd/apiace/
├── frontend/ # Vue 3 application
│ ├── src/
│ │ ├── components/ # UI components (QueryBuilder, LogViewer, panels/)
│ │ ├── composables/ # Shared state (useDatasource, useOrganization, useAIProvider, useToast)
│ │ ├── views/ # Page views (MetricsExploreTab, LogsExploreTab, TracesExploreTab)
│ │ └── utils/ # Chart theme, dashboard helpers
│ └── package.json
├── backend/ # Go API
│ ├── cmd/
│ │ ├── api/ # Main API server
│ │ ├── seed/ # Admin user + org + datasource seeder
│ │ ├── seed-dashboards/# Demo dashboard seeder
│ │ └── seed-correlated/# Telemetry generator (realistic web app traces/logs/metrics)
│ └── internal/
│ ├── handlers/ # HTTP handlers (datasource proxy, AI chat, dashboards, auth, SSO)
│ ├── datasource/ # Datasource clients (Prometheus, VictoriaMetrics, Loki, Tempo, ClickHouse, ES)
│ ├── models/ # Data models
│ ├── db/ # Database connection, migrations
│ ├── auth/ # JWT, password hashing, middleware
│ ├── authz/ # RBAC authorization
│ └── audit/ # Append-only audit logging
├── deploy/
│ ├── charts/ace/ # Production Helm chart
│ ├── charts/ace-local-infra/ # Local dev Helm chart (all datasource services)
│ └── docker/ # Docker Compose configs per stack
├── Tiltfile # Local dev orchestration
├── Makefile # Common commands
├── DESIGN.md # Kinetic v2 design system
└── RELEASE.md # Release process
- Semantic Versioning (
vMAJOR.MINOR.PATCH) with Conventional Commits release-pleaseopens release PRs from changes onmain- Merge creates a GitHub Release with notes + CHANGELOG update
- Auto-published: backend binaries, frontend tarball, container images, SBOMs, checksums
- See
RELEASE.mdfor maintainer workflow