Get Started
Concepts
The mental model behind Mydle: a Postgres control plane, optional ClickHouse for high-volume traces, explicit correlation IDs, and evidence labels that never invent missing data.
What these concepts cover
This page defines how workspaces, projects, monitors, and telemetry relate — and which store owns which data. Use it before wiring SDKs or reading surface-specific guides.
Why they matter
Mixing control-plane config with telemetry storage assumptions leads to wrong retention expectations and false correlation. Knowing that Postgres is authoritative for product state (and that ClickHouse is optional for traces) keeps ops and debugging grounded.
Control plane (Postgres)
PostgreSQL is the control plane and durable source of truth for:
- Auth, workspaces, memberships, billing entitlements
- Projects, monitors, alerts, incidents, status pages
- Service catalog and deployment intelligence records
- Logs and browser RUM event storage
- Trace persistence used by the product UI (authoritative write path)
Telemetry plane
Customer telemetry enters through authenticated ingest routes:
- Browser —
POST /api/rum/v1/ingestvia@mydle/browser-sdk - Logs —
POST /api/logs/v1/ingestvia@mydle/logs - Traces —
POST /api/traces/v1/otlp(OpenTelemetry)
For tracing, after Postgres persist succeeds, Mydle may dual-write spans to an optional ClickHouse secondary store (fail-open). If ClickHouse is not configured, tracing still works on Postgres. Logs and browser data do not use ClickHouse.
Observe → Understand → Act
- Observe — probes and ingest produce facts (check results, beacons, logs, spans).
- Understand — explorers, correlation, impact, and AI insights assemble evidence without inventing causation.
- Act — notifications, incidents, and status updates owned by humans.
Correlation keys
Join across surfaces on shared identifiers — never timestamps alone:
trace_id/span_id— traces ↔ logssession_id— browser ↔ traces when W3C / SDK propagation is presentrequest_id/correlation_id— request-level joins when emitters set them
Deep dive: Correlation.
Config & tenancy
Every durable row is scoped by workspace_id, and most product surfaces also require a project_id. Server auth derives tenant scope from session or ingest credentials — client-claimed IDs are never trusted over auth context. See Projects & Workspaces.
Limits
Entitlements live in config/plans.ts and are enforced server-side. Highlights: Free browser 10k events / month; Pro+ browser unlimited; logs Free disabled; Pro 10 GiB / 7d; Team 100 GiB / 30d; Enterprise contract. Full matrix: Limits & Quotas.
Failures
- Secondary ClickHouse write failures must not fail a customer request after Postgres persist succeeded.
- Missing correlation fields produce partial joins — Mydle does not invent IDs to force a match.
- AI insights stay evidence-bound (Observed / Likely / Unknown); they never claim autonomous remediations.