f15e27e5fd refactor: design token migration + CI guards (#13173)
# Design System Unification — one visual language, enforced end-to-end

Establishes **one source of truth for every visual decision**, wires the
whole app to it, and **locks it in with CI** so it can't drift back.

### Foundations
- **Design-token system ("one knob per decision").** Every colour, text
size, spacing, corner radius, and shadow is a named token defined in
exactly one place — change the token, every screen updates. Collapsed
hundreds of near-duplicate definitions and removed "fake" duplicates
that pretended to be different but weren't.
- **Shared component library (O2).** Buttons, tables, dialogs, drawers,
form fields, badges, etc. already know the correct colours, spacing, and
dark-mode behaviour; new screens compose them instead of hand-styling.
Added new primitives on this branch (`OContent`, `KpiCard`) and
standardized existing ones.
- **One page structure everywhere** (`PageLayout` / `AppPageHeader` /
`AppPage` / `OContent`) — titles, breadcrumbs, spacing, and content
edges line up identically across every screen.
- **One table implementation** — all tabular data uses the same table
(sorting, density, sticky headers, empty states).
- **Styling consolidated onto Tailwind; old systems removed** —
hand-written CSS driven to the practical minimum, the legacy **Quasar**
framework fully removed, surviving stylesheets required to justify
themselves.
- **Two-tier corner radius** — a tight **4px** for controls and a soft
**12px** for surfaces (dialogs, cards, the app shell), plus a
full-circle option — replacing five radius names that all secretly meant
the same thing.

### Detailed improvements across screens
**Page structure & alignment** — unified page shell rolled across ~40+
screens (IAM, Settings, Alerts, Dashboards, Functions, Pipelines, RUM,
Metrics, Synthetics, Billing, editors, lists); one header height; one
page-edge grid driving headers, tables, rails, and tabs; unified
side-rail widths; inset rail selection/hover pills; every tab strip on
the grid line; tightened title/subtitle spacing.

**Tables (cross-screen)** — action columns consistently centered (incl.
Organizations); unified row-number column with no "#" truncation;
non-standard tables restyled to match; loading skeletons made
geometrically identical to the loaded table; symmetric edge inset; IAM
first-column grid alignment fixed.

**Traces** — flame graph + span-detail correlation panel fixes;
correlated logs/metrics placeholder fit; sticky headers; removed a
double scrollbar + a 1px sliver; aligned table fonts/badges; polished
the service detail drawer; stream-selector + correlation alignment;
aligned loading spinners; floating overlay arrows for the
disabled-services strip.

**Logs** — field-list controls aligned (focus ring no longer clipped);
detail-drawer spacing + metrics-tab overflow fixed; Run Query toolbar
tidied; listing sizing + stray border fixed.

**Metrics** — search added to the "Type" facet rail and aligned with the
other rails; proper empty states for the explorer and facet rail.

**Dashboards** — removed inconsistent card shadows; tightened
borders/resizers/field-list spacing; aligned View Dashboard chrome to
the grid; chart colours via the token helper.

**Home** — redesigned the Usage tab; added reusable KPI stat cards so
summary strips stop drifting.

**Dark mode** — new theme-switch animation; fixed a 1px content shift on
toggle and a white flash on load; fixed AI-chat text and assorted
light/dark mismatches; completed the token-driven dark migration.

**Empty states, controls & small polish** — restored 3 broken
empty-state animations; adopted the standard empty state; added the
sliding indicator to the toggle control; fixed the Quality-page inset +
drawer badge; refreshed Search History / Schedulers; fixed the
alert-history drawer scrollbar + timeline hover; removed a stray
menu-bar border.

### Dead code & cruft removal
- **Deleted the entire legacy `utilities.css`** global stylesheet (well
over a thousand lines) — evacuated in waves, roughly half of it dead
once traced.
- **Removed Quasar entirely**, including dead `.q-*` styles and ~25
phantom `--q-*` variables that were silently breaking bits of the UI.
- Stripped hundreds of **dead CSS classes and tokens that compiled to
nothing** — e.g. 46 uses of a colour class with no backing token, a
no-op shadow class on 51 elements, dead layout/utility classes, a
leftover `card-container` block, a dead table-actions token, and a
mis-registered gradient that rendered nothing.
- Cut **unused keyframe animations (19 → 3)** and removed **unused
components** + a stray build artifact.
- Net effect: a much smaller, leaner styling surface — less to maintain,
fewer dead ends to copy.

## Safety & verification
Large but low-risk: this is overwhelmingly a **styling and structure**
change, not product behaviour or data. Guarded by the
design-token/consistency/type checks above plus the existing test suite,
and reviewed screen-by-screen.

---------

Co-authored-by: Kirtan Thakkar <kirtan@kiara.tech>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: ktx-mihir <mihir.patel@kiara.tech>
2026-07-20 18:06:21 +00:00
2026-06-05 13:09:23 +00:00
2026-06-02 03:58:01 +00:00
2026-07-14 20:26:15 +08:00
2026-03-04 17:55:01 +05:30
2026-03-04 17:55:01 +05:30
2026-01-14 16:54:35 +08:00
2024-09-25 11:09:26 +08:00
2026-04-25 19:18:21 +00:00
2024-06-10 13:10:01 -07:00
2023-11-26 11:04:37 -08:00
2026-06-02 03:58:01 +00:00
2025-08-11 17:06:35 -07:00

OpenObserve

Open source Datadog alternative for logs, metrics, traces, and frontend monitoring. Modern observability platform: 10x easier, 140x lower storage cost, high performance, petabyte scale.

Last Commit GitHub Stars GitHub Issues Contributors GitHub Release

OpenObserve (O2) is a cloud-native observability tool built for logs, metrics, traces, analytics, and Real User Monitoring (RUM). It's designed as a cost-effective alternative to Datadog, Splunk, and Elasticsearch for teams that need full observability without the complexity or cost.

Why OpenObserve?

OpenObserve is a single observability tool for all your monitoring needs. Here's why teams choose OpenObserve:

Benefit Description
140x Lower Storage Cost Parquet columnar storage + S3-native architecture dramatically reduces costs vs Elasticsearch
Single Binary Deployment Get running in under 2 minutes. No complex cluster setup required
OpenTelemetry Native Built on OpenTelemetry standard—no vendor lock-in
Unified Platform Logs, metrics, traces, RUM, dashboards, alerts in one tool
High Performance Better query performance than Elasticsearch on 1/4 the hardware
SQL + PromQL Query logs/traces with SQL, metrics with SQL or PromQL—no proprietary query language
Built in Rust Memory-safe, high-performance, single binary

Cost Comparison: OpenObserve Vs Elasticsearch OpenObserve Vs Elasticsearch

🎥 Introduction Video

OpenObserve Introduction

🏗️ Architecture

OpenObserve achieves 140x lower storage costs and high performance through its modern architecture:

  • Parquet columnar storage: Efficient compression and query performance
  • S3-native design: Leverages inexpensive object storage with intelligent caching
  • Built in Rust: Memory-safe, high-performance, single binary deployment
  • Partitioning, indexing and smart caching: Reduces search space by up to 99% for most queries
  • Native multi-tenancy: Organizations and streams as first-class concepts with complete data isolation
  • Stateless architecture: Enables rapid scaling and low RPO/RTO for disaster recovery

This architecture delivers 140x cost savings while providing better performance than Elasticsearch.

Scale & Deployment

  • Thousands of concurrent users can query a single cluster simultaneously
  • Single binary scales to terabytes - unique in the observability space
  • High Availability mode scales to petabytes for the most demanding workloads
  • Multi-region deployments with cluster federation via Super Cluster architecture (Enterprise feature)
  • Federated search across regions and clusters (Enterprise feature)
  • Capacity planning tools to size deployments for your workload

High Availability & Disaster Recovery

Deploy in High Availability mode with clustering for mission-critical workloads requiring maximum uptime and performance.

Low RPO/RTO: OpenObserve's stateless architecture with S3-backed storage enables very low Recovery Point Objective (RPO) and Recovery Time Objective (RTO). Stateless nodes can be rapidly restarted, and data durability is guaranteed by S3's 99.999999999% (11 nines) durability. That's a lot of nines.

Read detailed architecture documentation →

Read enterprise deployment guide →

Features

For a full list of features, check the documentation.

Logs Management

OpenObserve provides a centralized log management solution with full-text search, SQL queries, and powerful filtering. Built on Parquet columnar storage for 140x lower storage costs than Elasticsearch. Instantly search through all your logs using quick filters and a powerful query builder. Create dashboards from log data and set up alerts. Read more →

image

Distributed Tracing

Distributed tracing is essential to troubleshoot issues in microservices applications. Powered by OpenTelemetry, tracing in OpenObserve helps you track user requests across services to identify performance bottlenecks. See user requests in a detailed breakdown with Flamegraphs and Gantt Charts. Click on any span to see the entire trace and understand where issues occurred. Read more →

image

Metrics & Dashboards

Ingest metrics from your infrastructure or applications and create customized dashboards. 19+ built-in chart types plus custom charts for 200+ visualization variations. Query metrics with SQL or PromQL. Add multiple queries and combine them with formulae. Read more →

image

Frontend Monitoring (RUM)

Real User Monitoring with performance tracking, error logging, and session replay. Understand exactly what your users experience. Read more →

image

Alerts

Get notified when anything unusual happens in your application. Set alerts on any telemetry signal (logs, metrics, traces), create thresholds, and configure notification channels. Advanced features like alert history and anomaly detection help you identify issues before they reach your customers. Read more → image

Pipelines

Enrich, redact, reduce, or normalize data on ingest. Stream processing for logs-to-metrics conversion and more. No external tools required. Read more →

image

Getting Started

OpenObserve Cloud (Fastest Way)

Get started in minutes without managing infrastructure. Free tier includes up to 50 GB/day ingestion. Get Started Free →

🐳 Docker:

docker run -d \
      --name openobserve \
      -v $PWD/data:/data \
      -p 5080:5080 \
      -e ZO_ROOT_USER_EMAIL="root@example.com" \
      -e ZO_ROOT_USER_PASSWORD="Complexpass#123" \
      public.ecr.aws/zinclabs/openobserve:latest

For other ways to quickly install OpenObserve or use OpenObserve cloud, check quickstart documentation.

For installing OpenObserve in High Availability mode, check High Availability deployment documentation.

Production Ready

OpenObserve is battle-tested in production environments worldwide:

  • Thousands of active deployments across diverse industries
  • Largest deployment: 2+ PB/day ingestion
  • Single binary scales to terabytes—unique in the observability space

Customer Stories →

Comparisons to Familiar Tools

OpenObserve vs Datadog

Aspect OpenObserve Datadog
Deployment Self-hosted or Cloud SaaS only
Pricing model Per-GB (free up to 200GB/day) Per-host + per-GB
Open source Yes (AGPL-3.0) No
OpenTelemetry Native OTLP Supported
Query language SQL + PromQL Proprietary
Vendor lock-in None High

OpenObserve is a Datadog alternative that gives you full control over your data and costs.

OpenObserve vs Elasticsearch

Aspect OpenObserve Elasticsearch
Storage cost 140x lower High (hot/warm/cold tiers)
Setup complexity Single binary Complex cluster management
Query language SQL Lucene/KQL
Hardware requirements 1/4 the resources High memory/CPU

OpenObserve achieves 140x lower storage costs through Parquet columnar format and S3-native architecture.

OpenObserve vs Splunk

Aspect OpenObserve Splunk
Licensing Open source Expensive enterprise licensing
Deployment Single binary or HA cluster Complex
Query language SQL + PromQL SPL (proprietary)
Cost Predictable, low Unpredictable, high

OpenObserve is an open-source Splunk alternative without the licensing complexity.

OpenObserve vs Grafana/Loki/Prometheus Stack

Aspect OpenObserve Grafana Stack
Components Single platform Multiple tools (Grafana + Loki + Prometheus + Tempo)
Management One binary Multiple deployments
High cardinality Full support Loki struggles with high cardinality
Query performance Fast on large volumes Loki slow on large data

OpenObserve consolidates logs, metrics, and traces in one platform instead of stitching together multiple tools.

📷 Screenshots

OpenObserve includes a powerful web UI for logs, traces, dashboards, alerts, and more.

Logs

Distributed Tracing

Trace details page with full request flow visualization: Traces using OpenTelemetry

Dashboards

Dashboard

Frontend Monitoring

Real user monitoring with session replay: Session replay

See more screenshots

Home

Home

Golden Metrics from Traces

Traces golden metrics

More Dashboard Examples

Dashboard Create panel Map

Performance Analytics

Performance

Error Tracking

Error tracking

Alerts

Alerts

Streams

Streams

Ingestion

Ingestion

Pipeline

Pipeline

Functions

Function

🔐 Security & Compliance

Security Features

  • Highly secure architecture with secure container images
  • Sensitive Data Redaction (SDR): Automatically redact sensitive data during ingestion and query time (Enterprise feature)
  • Data encryption: At rest and in transit
  • Single Sign-On (SSO): OIDC, OAuth, SAML, LDAP/AD integration (Enterprise feature)
  • Role-Based Access Control (RBAC): Granular permissions management (Enterprise feature) - Learn more →

Compliance Certifications

  • ✅ SOC 2 Type II certified
  • ✅ ISO 27001 certified
  • ✅ GDPR compliant
  • ✅ HIPAA ready (BAA available with Enterprise contracts)

OpenObserve meets the stringent security and compliance requirements of regulated industries including finance, healthcare, and government.

⚖️ License

Open Source Edition: Licensed under AGPL-3.0. We chose AGPL to ensure that improvements to OpenObserve remain open source and benefit the entire community. This license protects the commons while still allowing free commercial use.

Enterprise Edition: Licensed under a commercial Enterprise License Agreement, not AGPL. This provides additional flexibility for enterprise deployments and eliminates any concerns about AGPL requirements.

For more details:

💼 Enterprise Support

OpenObserve is built as a true open source project, and we're committed to the community. The open source version is feature-complete and production-ready - it includes logs, metrics, traces, dashboards, alerts, pipelines, and everything you need to run observability at scale. It will always remain actively maintained and free to use without restrictions.

Enterprise Edition

For organizations requiring enterprise-grade features and support, we offer an Enterprise edition with:

Enterprise Features:

  • Single Sign-On (SSO): OIDC, OAuth, SAML 2.0, LDAP/AD, and integration with major identity providers (Okta, Azure Entra, Google, GitHub, GitLab, Keycloak)
  • Advanced RBAC: Granular role-based access control with custom roles and permissions - Learn more →
  • Audit trails: Comprehensive immutable audit logs with configurable retention
  • Federated search: Query across multiple clusters and regions with Super Cluster
  • Sensitive Data Redaction (SDR): Automatically redact PII and sensitive data during ingestion and queries
  • Advanced encryption: AES-256 SIV cipher keys with Google Tink KeySet and Akeyless integration
  • Query management: Control query resource usage and priorities
  • Workload management (QoS): Quality of Service controls for multi-tenant environments

Enterprise Support & SLAs:

  • Dedicated support with contractual SLA guarantees
  • Priority response times for critical issues
  • Technical account management
  • Architecture review and deployment assistance
  • Migration support from existing tools
  • Training and onboarding programs

Pricing:

  • Free tier: Up to 50 GB/day of ingestion (roughly 1.5 TB/month), including full commercial use
  • Registration required at 50 GB/day
  • Volume discounts and multi-year contracts available
  • View complete feature comparison →

For enterprise inquiries and custom deployments, contact our sales team.

🤝 Contributing

We welcome contributions from the community! Whether you're fixing bugs, adding features, improving documentation, or sharing feedback, your help makes OpenObserve better for everyone.

To get started, please read our Contributing Guide which covers:

  • How to set up your development environment
  • Code standards and best practices
  • How to submit pull requests
  • Reporting bugs and requesting features

🌍 Community

The best way to get help, share ideas, and connect with other OpenObserve users is through our community channels. We're a friendly group of developers, operators, and observability enthusiasts.

🔗 Join us on Slack

Slack

Our Slack community is the most active place for:

  • Getting help with installation and configuration
  • Sharing best practices and use cases
  • Discussing feature requests and roadmap
  • Connecting with the core team and other users

Join the conversation →

📱 Join OpenObserve community on WeChat

Other ways to connect

❓ FAQ

How does OpenObserve achieve 140x lower storage costs?

Through a combination of Parquet columnar storage format (efficient compression), S3-native architecture (leveraging inexpensive object storage). See the detailed comparison chart in the "Why OpenObserve?" section above.

What are the limitations?

All data in OpenObserve is immutable - once ingested, it cannot be modified or deleted (only entire retention periods can be dropped). This is by design and is actually a feature for logs and compliance requirements, ensuring data integrity and audit trails.

Is this production-ready?

Yes. OpenObserve is running in production with thousands of deployments worldwide, including environments processing in excess of 2 PB/day. See our customer stories for real-world examples.

How does query performance compare to Elasticsearch?

OpenObserve delivers better performance than Elasticsearch for most workloads. Users report faster search performance and significantly faster analytics queries, all while using 1/4th the hardware resources. The columnar storage format (Parquet) is particularly effective for complex aggregations and analytics workloads.

Is there a steep learning curve?

No. OpenObserve is designed to be intuitive from day one:

  • Familiar query languages: Use SQL for logs and traces, PromQL for metrics - no proprietary query language to learn
  • Easy-to-use GUI: Intuitive interface with drag-and-drop dashboard builder
  • Helpful community: Active Slack community and comprehensive documentation to help you get started quickly
  • No complex tuning: Unlike Elasticsearch, you don't need to understand shards, replicas, heap sizes, or other complex configurations. Just install and go.

Most users are productive within hours, not weeks. Some even claim minutes, but we'll let you be the judge.

🔐 SBOM

Software Bill of Materials for OpenObserve

Rust

SBOM can be found here. You can analyze it using dependency track.

In order to generate the SBOM, you can use the following commands:

Install cargo-cyclonedx:

cargo install cargo-cyclonedx

Generate the SBOM:

cargo-cyclonedx cyclonedx

JavaScript

SBOM can be found here. You can analyze it using dependency track.

In order to generate the SBOM, you can use the following commands:

Install cyclonedx-npm:

npm install --global @cyclonedx/cyclonedx-npm

Generate the SBOM:

cd web
cyclonedx-npm > sbom.json
S
Description
Open source observability platform for logs, metrics, traces, RUM (web, android, ios), Session replay, pipelines, SLO and LLM observability. A sophisticated, simple and highly performant alternative to Datadog, Splunk, and Elasticsearch with 140x lower storage costs and single binary deployment.
Readme AGPL-3.0
1 GiB
Languages
TypeScript 40%
Rust 29.2%
Vue 17%
JavaScript 11.1%
Python 2.3%
Other 0.3%