Ingest into
One JSON object per line. time series: {"series":"host0","ts":1700000000000,"value":1.5} · logs: {"stream":"{app=\"web\"}","ts":1700000000000,"line":"INFO ok"} · documents: {"key":"pk=user1","doc":{"pk":{"S":"user1"}}} (omit doc to delete)
SQL DataFusion over every dataset · read-only
Decision log why the system did what it did
Lineage OpenLineage — where a table's data comes from and where it goes · docs/design/016
upstream
downstream
Runs latest events touching the selected dataset
Emit forward every event to another OpenLineage backend (Marquez, …); Chimera itself accepts events on POST /api/v1/lineage
Schedules recurring transform jobs with a cursor · docs/design/017
Each run: freeze the upper bound, transform(source SQL, schema) over rows in (cursor, bound], write the conformed rows as documents into the target (one JSON field per schema column), advance the cursor. The mapping is authored once and cached (015).
Transform schemas + the model that authors mappings · docs/design/015
SQL: CALL transform('SELECT …', 'schema') · REST: POST /v1/transform {sql, schema}. First call: the model writes a SQL mapping (table input), it is validated against the data and cached; later calls consult no model. Hand mappings: POST /v1/transforms {sql, schema, mapping_sql}.
Secrets sealed at rest, write-only · docs/design/010
Sign-in OpenID Connect (OIDC) for this UI and the REST API · docs/design/013
Advanced — explicit endpoints (leave blank to auto-discover from the issuer)
Machine clients (the protocol app, PocketBase hooks) send Authorization: Bearer <api_token secret>. Peer links and wire frontends are unaffected.
API tokens named, scoped bearer tokens · read ⊂ write ⊂ ops ⊂ admin · the secret is shown once
Message queues MQTT subscriptions landing in a dataset · docs/design/014
Each message is a record {topic, payload, received_ms, qos, retain}; pointers address that record. Documents default to one document per topic (LWW).
REST API wizard discover an API's endpoints, add them as datasources, grouped into a collection · docs/design/010
REST datasources an external API polled into a dataset · docs/design/010
S3 datasources objects in a bucket parsed into a dataset · anonymous (public buckets) · docs/design/018
Each run lists the prefix, reads new or changed objects (by ETag), parses them (CSV header → fields, NDJSON, JSON array at a pointer) and lands the records through the same extraction as REST/MQTT. Example: s3://noaa-ghcn-pds/csv/by_station/, contains USW00094728, points series /ELEMENT value /DATA_VALUE ts /DATE.
Object Storage S3-compatible write destinations — AWS S3, MinIO, Cloudflare R2, Backblaze B2, Wasabi · credentials sealed at rest
Credential secrets must exist first (System → Secrets). Test connection does a real round-trip — a signed PUT of a tiny probe object then a best-effort DELETE — so it verifies endpoint reachability, credentials, bucket existence and write permission. Endpoint blank targets AWS S3 (bucket.s3.region.amazonaws.com); set it for MinIO/R2/B2/Wasabi.
Collections named groups of datasets · a collection is a SQL schema (collection.dataset) · system is reserved · docs/design/019
MCP servers an external MCP server as a datasource · discover → auth → resources → create
Database pairings a live replica of a DynamoDB table or Postgres table · docs/design/012
Auto-update
Chimera checks GitHub for new releases. Turn on auto-update to apply them automatically, or leave it off and update by hand from the list below.
…Releases
This node identity · docs/design/011
Give the fingerprint and peer URL to the other operator; both sides must register each other (pinned mutual TLS, no CA).
Peers registered, pinned
Mirrors outbound (this node owns) · inbound (a peer owns; promotable here)
Outbound
Inbound
Shards one dataset across several nodes · 011 §4
Replication one dataset · N copies · chosen nodes · chosen tiers · 026
Each row is one copy. Copy 1 is the writer (Owner); extra copies are read-only Replicas established over the mirror transport (026 §2). Health & freshness are composed live from /v1/status, /v1/mirrors & /v1/shards.
Configure replication one writer, add/remove replica copies · 026 §3
Dataset status pairing · mirror · sharding · 011/012
Set these up under System → Pairings and Peers → Mirrors / Shards. Shard health is a live describe per member.
/v1/status
Endpoints
REST on this port · MySQL wire on 3306 · Arrow Flight SQL on 50051 · DynamoDB API on 8000 (see docs/design/004, 006). MCP: chimera mcp serve.