Skip to content

Aires Observability Platform

High-performance observability built on Rust, gRPC, and ClickHouse. Structured events from every language. 1000x more cost-effective than Datadog.

Aires replaces the bloated observability stack (Datadog, Splunk, New Relic) with a single, unified event pipeline. Logs, traces, metrics, and AI agent activity all flow through the same system — structured from the start, stored in ClickHouse, queryable with SQL.

Rust Core SDK

Sub-microsecond event creation. Lock-free batching. gRPC transport with automatic retries. Every other SDK is a thin binding over this core.

TypeScript SDK

NAPI-RS native bindings wrapping the Rust core. Works in Bun and Node. Zero-copy where possible. Falls back to pure JS if the native addon isn’t available.

Python SDK

PyO3 bindings wrapping the Rust core. pip install aires. Same performance characteristics as the Rust SDK with a Pythonic API.

Elixir Collector

gRPC server built on grpc-elixir. Broadway pipeline for backpressure-aware batched inserts into ClickHouse. Handles millions of events per second.

Protobuf Schema

One Event message to rule them all. Logs, traces, metrics, HTTP info, error details, AI agent activity — all in a single, well-defined schema.

ClickHouse Storage

MergeTree tables with bloom filter indexes. Materialized views for pre-aggregated dashboards. Tiered storage from NVMe to S3 for long-term retention.

OpenTelemetry Compatible

Ingest OTLP spans and logs directly. Convert OpenTelemetry data to Aires events without changing your existing instrumentation.

SQL Queries

No proprietary query language. Query your observability data with standard SQL. ClickHouse’s columnar engine makes even full-table scans fast.

import { aires } from "@aires/sdk"

aires.init({
  service: "my-api",
  endpoint: "http://localhost:4317",
})

aires.info("server started", {
  attr: { port: "3000", version: "1.2.0" },
  tags: ["startup"],
})

aires.error("request failed", {
  traceId: "abc-123",
  category: "http",
  http: { method: "POST", path: "/api/tasks", status: 500, durationMs: 42 },
  error: { type: "DatabaseError", message: "connection refused", handled: true },
})

await aires.flush()

Quickstart Guide

Install the SDK, start the collector, ship events, and query them in ClickHouse — all in 5 minutes. Read the quickstart →

Architecture Overview

Understand how events flow from your application through gRPC to the collector and into ClickHouse. See the architecture →