Releases: ravencloak-org/tiny
Release list
v0.3.17
Changelog
All notable changes to TinyRaven are documented here. Format follows
Keep a Changelog; this project adheres to
Semantic Versioning.
[0.3.10] — 2026-07-01
Fixed
tr deploybootstraps its ClickHouse session againstdefaultand letsdeploy.Runcreate + re-scope onto the target DB, fixing first-deployUNKNOWN_DATABASEon a fresh workspace (#71).
Changed
- Site copy: dropped "100% API parity" claims (hero, features, SEO metadata) in favor of honest "speaks Tinybird's /v0 API + .datasource/.pipe files" — matches the /use-cases coverage table.
[0.3.9] — 2026-07-01
Changed
- Benchmark section rebuilt to TinyRaven's own measured numbers: ingest throughput (1.51M events/s) + latency percentiles p50/p95/p99 (19.8 / 79 / 178 ms), measured locally (50 clients, batch 1000, 15s, 22.7M events). Dropped the illustrative Tinybird head-to-head — no vendor numbers we didn't measure.
[0.3.8] — 2026-07-01
Changed
/use-caseslive dashboard rebuilt on Bklit UI charts (verified locally before deploy): BklitBarChartfor top pages, BklitAreaChart(time-based x, fedDatevalues) for views over time. Removed the Recharts detour; fixed the@bklit/area-chartinstall'sshimmering-textimport path.
[0.3.7] — 2026-07-01
Fixed
/use-caseslive dashboard now uses Recharts instead of the bespoke visx chart set, whoseBarYAxisrendered category labels on the Y axis and overflowed the card. Clean fixed-height bar charts with numeric Y axis, dark tooltip, rounded bars.
[0.3.6] — 2026-07-01
Added
- CORS on the API (
Access-Control-Allow-Origin: *+ preflight short-circuit,internal/api/middleware.go) so browser dashboards can read pipe endpoints cross-origin — Tinybird parity (pipes are CORS-open for public read tokens; ADR 0025). Auth unchanged;*grants read visibility, not access. /use-casesnow renders a live dashboard: two visx charts (top pages, views over time) that fetch the demo pipes from prod in-browser on load. Replaces the static JSON receipt.
[0.3.5] — 2026-07-01
Added
- Live demo links on
/use-cases: clickable prod endpoints (tiny-api.ravencloak.org) backed by a read-only demo token (scopeREAD:top_pages,READ:views_over_time— 403 on anything else), returning real JSON from 300 seeded events. - Dashboards demo baked into the API image (
/project) so its pipes survive container redeploys; table + data persist in the ClickHouse volume, token in Redis AOF.
[0.3.4] — 2026-07-01
Fixed
- Marketing site nginx now serves Next static-export subroutes:
try_files $uri $uri.htmlreturns/use-cases.htmlfor/use-casesinstead of a dir 301 → 403 (the redirect also dropped https→http behind Cloudflare). Home page was unaffected.
[0.3.3] — 2026-07-01
Added
- Marketing site:
/use-casespage mapping TinyRaven to Tinybird's eight documented use cases with honest coverage badges (Live / Via ClickHouse / Partial) and a demonstrated user-facing-dashboards spotlight using real demo output. examples/dashboards-demo/: reproducible drop-in demo (Tinybird dashboards use case) —.datasource/.pipefiles,run.sh(Applecontainerlocal runtime), sample events, and verified receipts.
Fixed
- Nav section links now resolve from any route (
/#featuresform) and expose the new Use cases page.
Known issues
tr deploycannot bootstrap a missing target database (native client pins the session to it →UNKNOWN_DATABASE); pre-create the DB. See #71. Prod compose is unaffected (ClickHouse image createstr_main).
[0.3.2] — 2026-06-30
Changed
- Auto-deploy on release is now version-tagged via the Dokploy API (
compose.updateenv →compose.deploy) instead of a webhook on:latest. A version tag is a new image reference, so Dokploy pulls the new digest every time; the:latestwebhook recreated from cache and silently never updated.
[0.3.1] — 2026-06-30
Added
- API read endpoints toward full Tinybird
/v0parity:GET /v0/datasources,GET /v0/datasources/{name},GET /v0/pipes,GET /v0/pipes/{name}(all ADMIN), plus pipe output formatsGET /v0/pipes/{name}.{csv,ndjson}(READ-scoped) alongside the existing.json. - Distribution: signed APT + RPM repos published to GitHub Pages (
apt-get install tinyraven); GoReleaser Scoop/AUR/Nix/winget publisher blocks (fail-safe — push only when their token exists); install matrix +docs/install.md. docs/parity-gaps.mdranked/v0parity audit.
Changed
- Prod deploy model: image tags pinned to
latest; release builds:version+:latestthen triggers the Dokploy deploy webhook (pull_policy: alwaysrecreates on the new digest). Dokploy panel env is the documented source of truth. - APT/RPM gh-pages publish now does a scoped
rsync --deleteofapt/+rpm/(keep-2 pool prune actually removes old blobs);helm-publish+apt-publishshare a concurrency group to avoid gh-pages races.
Tests
internal/apierrandinternal/model0→100%;internal/pipe86.7→96% (error-envelope mapping,Token.HasScopeauth gate, registry hot-reload swap, control-flow branch + non-boolean-condition rejection).
Security
- Rotated the admin token (purged the old value from the Dokploy env and Redis
tr:token:).
[0.3.0] — 2026-06-30
Added
- Control-flow pipe templating:
{% if/elif/else/end %}+defined()via expr-lang (ADR 0003). - Resource-token materialization:
TOKEN "x" READ/APPENDin files → scoped tokens ontr deploy(ADR 0030). tr deploy --check(dry run),tr login,tr status.- Per-pipe
RATE_LIMITenforcement (token+pipe; ADR 0015);/tr/v1/docsUI (off by default,TR_DOCS_ENABLED; ADR 0017); dedicated read-only ClickHouse user (ADR 0011). - Release signing (GPG) + Helm chart published to GitHub Pages.
Changed
- ponytail cuts: strconv.Itoa over hand-rolled, merged CHPinger into Pinger, dropped dead Connector field.
[0.2.0] — 2026-06-29
Phases 3–5 + scoped auth + a query-path perf fix.
Added
- Branching (Phase 3):
tr_{branch}ClickHouse DB per git branch;tr deploy --branch/tr local start --branch. - Materialized views + breaking migrations (shadow → backfill →
EXCHANGE TABLES,--allow-breaking). - Config:
~/.tinyraven/config.yml(Tinybird-compatible) +TINYBIRD_HOST/TOKEN/WORKSPACEenv. - Connectors (Phase 5): Kafka/S3/PostgreSQL as ClickHouse-native engines in
.datasource(ADR 0019) + templates; BI-tool docs; load + query benchmarks (scripts/loadtest,scripts/querybench). - Distribution (Phase 4): GoReleaser (binaries/deb/rpm), Helm chart, Heroku/Railway/DO/AWS-CFN manifests, deploy docs.
- Scoped tokens:
tr token create/ls/rm; per-scope enforcement —READ:<pipe>,APPEND:<ds>,ADMIN, wildcards (ADR 0005). Frontends can hold a read-only pipe token. TR_PIPE_RATE_LIMIT(configurable per-token rate limit; 0 disables).
Changed / Fixed
- perf: tuned ClickHouse HTTP transport (
MaxIdleConnsPerHost: 512) — default (2) thrashed connections under load (p50 92ms + errors); pooled = ~19ms p50, ~0 errors (4–5×). Query latency now CH-bound: single-flight p50 ~1.8ms (CH ~0.35ms).
[0.1.2] — 2026-06-29
Added
- Marketing website deploy: static Next.js export served by nginx
(site/Dockerfile), published asghcr.io/ravencloak-org/tiny-siteby the
release workflow, and asiteservice in the prod compose (port 18080). - API and website split across hosts: site at
tiny.ravencloak.org, API at
tiny-api.ravencloak.org(first-level subdomain — Cloudflare Universal SSL
doesn't cover second-level likeapi.tiny.*).
[0.1.1] — 2026-06-29
Added
- One-click production stack
deploy/docker-compose.prod.yml(ClickHouse 26.3 +
Redis AOF + TinyRaven, health-gated, persistent volumes) for Dokploy Compose deploys. - Docker image now bakes the
examples/quickstartproject at/projectand
defaultsTR_PROJECT_DIR=/project, so a fresh deploy is queryable immediately. - Marketing site under
site/(Next.js + shadcn + Bklit charts): hero, features,
one-env-var migration, illustrative price comparison, real benchmark
(~177k events/s, p95 71ms — measured: 50 clients, batched, 1 node, 2.65M events
persisted to ClickHouse). - Deploy guide
docs/deploy/dokploy.md+ Cloudflare Tunnel config fortiny.ravencloak.org.
Changed
- Release image is single-arch
linux/amd64(x86) — dropped multi-arch/QEMU.
[0.1.0] — 2026-06-29
First release: a working, self-hosted, Tinybird-API-compatible analytics backend
over OSS ClickHouse. Covers MILESTONE Phases 1 (MVP ingestion + query) and 2 (API
publishing + deployment). Single tr binary = server + CLI.
Added — Phase 1 (MVP: core ingestion + query)
- HTTP server on
net/http+chirouter. POST /v0/events— JSON / NDJSON ingestion; per-row validate + quarantine
(ADR 0018);202 {successful_rows, quarantined_rows}ack-on-buffer (ADR 0004).GET /v0/pipes/{name}.json— parameterized SQL pipes via{{Type(name,default)}}
→ ClickHouse{name:Type}parameters, injection-proof (ADR 0003).GET /health(liveness) +GET /health/ready(Redis + ClickHouse, cached) — ADR 0024.- Gatherer: in-process batching, flush on
max(10,000 events, 5s), graceful drain. .datasourceparser (SCHEMA/ENGINE/ENGINE_* + structural validation, ADR 0008/0027)
→ Redis schema registry (ADR 0001 — Redis-only metadata, no Postgres)..pipeparser + in-memory pipe registry with atomic hot-reload swap (ADR 0020).- Bearer token auth middleware → Redis token store (ADR 0005).
tr local start→ Docker Compose (ClickHouse 26.3 LTS + Redis AOF + TinyRaven).- Dev hot reload on
.datasource/.pipechange (mtime poll).
Added — Phase 2 (API publishing + deployment)
tr deploy— validate all files, diff schema against livesystem.columns,
create mis...
v0.3.16
Changelog
All notable changes to TinyRaven are documented here. Format follows
Keep a Changelog; this project adheres to
Semantic Versioning.
[0.3.10] — 2026-07-01
Fixed
tr deploybootstraps its ClickHouse session againstdefaultand letsdeploy.Runcreate + re-scope onto the target DB, fixing first-deployUNKNOWN_DATABASEon a fresh workspace (#71).
Changed
- Site copy: dropped "100% API parity" claims (hero, features, SEO metadata) in favor of honest "speaks Tinybird's /v0 API + .datasource/.pipe files" — matches the /use-cases coverage table.
[0.3.9] — 2026-07-01
Changed
- Benchmark section rebuilt to TinyRaven's own measured numbers: ingest throughput (1.51M events/s) + latency percentiles p50/p95/p99 (19.8 / 79 / 178 ms), measured locally (50 clients, batch 1000, 15s, 22.7M events). Dropped the illustrative Tinybird head-to-head — no vendor numbers we didn't measure.
[0.3.8] — 2026-07-01
Changed
/use-caseslive dashboard rebuilt on Bklit UI charts (verified locally before deploy): BklitBarChartfor top pages, BklitAreaChart(time-based x, fedDatevalues) for views over time. Removed the Recharts detour; fixed the@bklit/area-chartinstall'sshimmering-textimport path.
[0.3.7] — 2026-07-01
Fixed
/use-caseslive dashboard now uses Recharts instead of the bespoke visx chart set, whoseBarYAxisrendered category labels on the Y axis and overflowed the card. Clean fixed-height bar charts with numeric Y axis, dark tooltip, rounded bars.
[0.3.6] — 2026-07-01
Added
- CORS on the API (
Access-Control-Allow-Origin: *+ preflight short-circuit,internal/api/middleware.go) so browser dashboards can read pipe endpoints cross-origin — Tinybird parity (pipes are CORS-open for public read tokens; ADR 0025). Auth unchanged;*grants read visibility, not access. /use-casesnow renders a live dashboard: two visx charts (top pages, views over time) that fetch the demo pipes from prod in-browser on load. Replaces the static JSON receipt.
[0.3.5] — 2026-07-01
Added
- Live demo links on
/use-cases: clickable prod endpoints (tiny-api.ravencloak.org) backed by a read-only demo token (scopeREAD:top_pages,READ:views_over_time— 403 on anything else), returning real JSON from 300 seeded events. - Dashboards demo baked into the API image (
/project) so its pipes survive container redeploys; table + data persist in the ClickHouse volume, token in Redis AOF.
[0.3.4] — 2026-07-01
Fixed
- Marketing site nginx now serves Next static-export subroutes:
try_files $uri $uri.htmlreturns/use-cases.htmlfor/use-casesinstead of a dir 301 → 403 (the redirect also dropped https→http behind Cloudflare). Home page was unaffected.
[0.3.3] — 2026-07-01
Added
- Marketing site:
/use-casespage mapping TinyRaven to Tinybird's eight documented use cases with honest coverage badges (Live / Via ClickHouse / Partial) and a demonstrated user-facing-dashboards spotlight using real demo output. examples/dashboards-demo/: reproducible drop-in demo (Tinybird dashboards use case) —.datasource/.pipefiles,run.sh(Applecontainerlocal runtime), sample events, and verified receipts.
Fixed
- Nav section links now resolve from any route (
/#featuresform) and expose the new Use cases page.
Known issues
tr deploycannot bootstrap a missing target database (native client pins the session to it →UNKNOWN_DATABASE); pre-create the DB. See #71. Prod compose is unaffected (ClickHouse image createstr_main).
[0.3.2] — 2026-06-30
Changed
- Auto-deploy on release is now version-tagged via the Dokploy API (
compose.updateenv →compose.deploy) instead of a webhook on:latest. A version tag is a new image reference, so Dokploy pulls the new digest every time; the:latestwebhook recreated from cache and silently never updated.
[0.3.1] — 2026-06-30
Added
- API read endpoints toward full Tinybird
/v0parity:GET /v0/datasources,GET /v0/datasources/{name},GET /v0/pipes,GET /v0/pipes/{name}(all ADMIN), plus pipe output formatsGET /v0/pipes/{name}.{csv,ndjson}(READ-scoped) alongside the existing.json. - Distribution: signed APT + RPM repos published to GitHub Pages (
apt-get install tinyraven); GoReleaser Scoop/AUR/Nix/winget publisher blocks (fail-safe — push only when their token exists); install matrix +docs/install.md. docs/parity-gaps.mdranked/v0parity audit.
Changed
- Prod deploy model: image tags pinned to
latest; release builds:version+:latestthen triggers the Dokploy deploy webhook (pull_policy: alwaysrecreates on the new digest). Dokploy panel env is the documented source of truth. - APT/RPM gh-pages publish now does a scoped
rsync --deleteofapt/+rpm/(keep-2 pool prune actually removes old blobs);helm-publish+apt-publishshare a concurrency group to avoid gh-pages races.
Tests
internal/apierrandinternal/model0→100%;internal/pipe86.7→96% (error-envelope mapping,Token.HasScopeauth gate, registry hot-reload swap, control-flow branch + non-boolean-condition rejection).
Security
- Rotated the admin token (purged the old value from the Dokploy env and Redis
tr:token:).
[0.3.0] — 2026-06-30
Added
- Control-flow pipe templating:
{% if/elif/else/end %}+defined()via expr-lang (ADR 0003). - Resource-token materialization:
TOKEN "x" READ/APPENDin files → scoped tokens ontr deploy(ADR 0030). tr deploy --check(dry run),tr login,tr status.- Per-pipe
RATE_LIMITenforcement (token+pipe; ADR 0015);/tr/v1/docsUI (off by default,TR_DOCS_ENABLED; ADR 0017); dedicated read-only ClickHouse user (ADR 0011). - Release signing (GPG) + Helm chart published to GitHub Pages.
Changed
- ponytail cuts: strconv.Itoa over hand-rolled, merged CHPinger into Pinger, dropped dead Connector field.
[0.2.0] — 2026-06-29
Phases 3–5 + scoped auth + a query-path perf fix.
Added
- Branching (Phase 3):
tr_{branch}ClickHouse DB per git branch;tr deploy --branch/tr local start --branch. - Materialized views + breaking migrations (shadow → backfill →
EXCHANGE TABLES,--allow-breaking). - Config:
~/.tinyraven/config.yml(Tinybird-compatible) +TINYBIRD_HOST/TOKEN/WORKSPACEenv. - Connectors (Phase 5): Kafka/S3/PostgreSQL as ClickHouse-native engines in
.datasource(ADR 0019) + templates; BI-tool docs; load + query benchmarks (scripts/loadtest,scripts/querybench). - Distribution (Phase 4): GoReleaser (binaries/deb/rpm), Helm chart, Heroku/Railway/DO/AWS-CFN manifests, deploy docs.
- Scoped tokens:
tr token create/ls/rm; per-scope enforcement —READ:<pipe>,APPEND:<ds>,ADMIN, wildcards (ADR 0005). Frontends can hold a read-only pipe token. TR_PIPE_RATE_LIMIT(configurable per-token rate limit; 0 disables).
Changed / Fixed
- perf: tuned ClickHouse HTTP transport (
MaxIdleConnsPerHost: 512) — default (2) thrashed connections under load (p50 92ms + errors); pooled = ~19ms p50, ~0 errors (4–5×). Query latency now CH-bound: single-flight p50 ~1.8ms (CH ~0.35ms).
[0.1.2] — 2026-06-29
Added
- Marketing website deploy: static Next.js export served by nginx
(site/Dockerfile), published asghcr.io/ravencloak-org/tiny-siteby the
release workflow, and asiteservice in the prod compose (port 18080). - API and website split across hosts: site at
tiny.ravencloak.org, API at
tiny-api.ravencloak.org(first-level subdomain — Cloudflare Universal SSL
doesn't cover second-level likeapi.tiny.*).
[0.1.1] — 2026-06-29
Added
- One-click production stack
deploy/docker-compose.prod.yml(ClickHouse 26.3 +
Redis AOF + TinyRaven, health-gated, persistent volumes) for Dokploy Compose deploys. - Docker image now bakes the
examples/quickstartproject at/projectand
defaultsTR_PROJECT_DIR=/project, so a fresh deploy is queryable immediately. - Marketing site under
site/(Next.js + shadcn + Bklit charts): hero, features,
one-env-var migration, illustrative price comparison, real benchmark
(~177k events/s, p95 71ms — measured: 50 clients, batched, 1 node, 2.65M events
persisted to ClickHouse). - Deploy guide
docs/deploy/dokploy.md+ Cloudflare Tunnel config fortiny.ravencloak.org.
Changed
- Release image is single-arch
linux/amd64(x86) — dropped multi-arch/QEMU.
[0.1.0] — 2026-06-29
First release: a working, self-hosted, Tinybird-API-compatible analytics backend
over OSS ClickHouse. Covers MILESTONE Phases 1 (MVP ingestion + query) and 2 (API
publishing + deployment). Single tr binary = server + CLI.
Added — Phase 1 (MVP: core ingestion + query)
- HTTP server on
net/http+chirouter. POST /v0/events— JSON / NDJSON ingestion; per-row validate + quarantine
(ADR 0018);202 {successful_rows, quarantined_rows}ack-on-buffer (ADR 0004).GET /v0/pipes/{name}.json— parameterized SQL pipes via{{Type(name,default)}}
→ ClickHouse{name:Type}parameters, injection-proof (ADR 0003).GET /health(liveness) +GET /health/ready(Redis + ClickHouse, cached) — ADR 0024.- Gatherer: in-process batching, flush on
max(10,000 events, 5s), graceful drain. .datasourceparser (SCHEMA/ENGINE/ENGINE_* + structural validation, ADR 0008/0027)
→ Redis schema registry (ADR 0001 — Redis-only metadata, no Postgres)..pipeparser + in-memory pipe registry with atomic hot-reload swap (ADR 0020).- Bearer token auth middleware → Redis token store (ADR 0005).
tr local start→ Docker Compose (ClickHouse 26.3 LTS + Redis AOF + TinyRaven).- Dev hot reload on
.datasource/.pipechange (mtime poll).
Added — Phase 2 (API publishing + deployment)
tr deploy— validate all files, diff schema against livesystem.columns,
create mis...
v0.3.15
Changelog
All notable changes to TinyRaven are documented here. Format follows
Keep a Changelog; this project adheres to
Semantic Versioning.
[0.3.10] — 2026-07-01
Fixed
tr deploybootstraps its ClickHouse session againstdefaultand letsdeploy.Runcreate + re-scope onto the target DB, fixing first-deployUNKNOWN_DATABASEon a fresh workspace (#71).
Changed
- Site copy: dropped "100% API parity" claims (hero, features, SEO metadata) in favor of honest "speaks Tinybird's /v0 API + .datasource/.pipe files" — matches the /use-cases coverage table.
[0.3.9] — 2026-07-01
Changed
- Benchmark section rebuilt to TinyRaven's own measured numbers: ingest throughput (1.51M events/s) + latency percentiles p50/p95/p99 (19.8 / 79 / 178 ms), measured locally (50 clients, batch 1000, 15s, 22.7M events). Dropped the illustrative Tinybird head-to-head — no vendor numbers we didn't measure.
[0.3.8] — 2026-07-01
Changed
/use-caseslive dashboard rebuilt on Bklit UI charts (verified locally before deploy): BklitBarChartfor top pages, BklitAreaChart(time-based x, fedDatevalues) for views over time. Removed the Recharts detour; fixed the@bklit/area-chartinstall'sshimmering-textimport path.
[0.3.7] — 2026-07-01
Fixed
/use-caseslive dashboard now uses Recharts instead of the bespoke visx chart set, whoseBarYAxisrendered category labels on the Y axis and overflowed the card. Clean fixed-height bar charts with numeric Y axis, dark tooltip, rounded bars.
[0.3.6] — 2026-07-01
Added
- CORS on the API (
Access-Control-Allow-Origin: *+ preflight short-circuit,internal/api/middleware.go) so browser dashboards can read pipe endpoints cross-origin — Tinybird parity (pipes are CORS-open for public read tokens; ADR 0025). Auth unchanged;*grants read visibility, not access. /use-casesnow renders a live dashboard: two visx charts (top pages, views over time) that fetch the demo pipes from prod in-browser on load. Replaces the static JSON receipt.
[0.3.5] — 2026-07-01
Added
- Live demo links on
/use-cases: clickable prod endpoints (tiny-api.ravencloak.org) backed by a read-only demo token (scopeREAD:top_pages,READ:views_over_time— 403 on anything else), returning real JSON from 300 seeded events. - Dashboards demo baked into the API image (
/project) so its pipes survive container redeploys; table + data persist in the ClickHouse volume, token in Redis AOF.
[0.3.4] — 2026-07-01
Fixed
- Marketing site nginx now serves Next static-export subroutes:
try_files $uri $uri.htmlreturns/use-cases.htmlfor/use-casesinstead of a dir 301 → 403 (the redirect also dropped https→http behind Cloudflare). Home page was unaffected.
[0.3.3] — 2026-07-01
Added
- Marketing site:
/use-casespage mapping TinyRaven to Tinybird's eight documented use cases with honest coverage badges (Live / Via ClickHouse / Partial) and a demonstrated user-facing-dashboards spotlight using real demo output. examples/dashboards-demo/: reproducible drop-in demo (Tinybird dashboards use case) —.datasource/.pipefiles,run.sh(Applecontainerlocal runtime), sample events, and verified receipts.
Fixed
- Nav section links now resolve from any route (
/#featuresform) and expose the new Use cases page.
Known issues
tr deploycannot bootstrap a missing target database (native client pins the session to it →UNKNOWN_DATABASE); pre-create the DB. See #71. Prod compose is unaffected (ClickHouse image createstr_main).
[0.3.2] — 2026-06-30
Changed
- Auto-deploy on release is now version-tagged via the Dokploy API (
compose.updateenv →compose.deploy) instead of a webhook on:latest. A version tag is a new image reference, so Dokploy pulls the new digest every time; the:latestwebhook recreated from cache and silently never updated.
[0.3.1] — 2026-06-30
Added
- API read endpoints toward full Tinybird
/v0parity:GET /v0/datasources,GET /v0/datasources/{name},GET /v0/pipes,GET /v0/pipes/{name}(all ADMIN), plus pipe output formatsGET /v0/pipes/{name}.{csv,ndjson}(READ-scoped) alongside the existing.json. - Distribution: signed APT + RPM repos published to GitHub Pages (
apt-get install tinyraven); GoReleaser Scoop/AUR/Nix/winget publisher blocks (fail-safe — push only when their token exists); install matrix +docs/install.md. docs/parity-gaps.mdranked/v0parity audit.
Changed
- Prod deploy model: image tags pinned to
latest; release builds:version+:latestthen triggers the Dokploy deploy webhook (pull_policy: alwaysrecreates on the new digest). Dokploy panel env is the documented source of truth. - APT/RPM gh-pages publish now does a scoped
rsync --deleteofapt/+rpm/(keep-2 pool prune actually removes old blobs);helm-publish+apt-publishshare a concurrency group to avoid gh-pages races.
Tests
internal/apierrandinternal/model0→100%;internal/pipe86.7→96% (error-envelope mapping,Token.HasScopeauth gate, registry hot-reload swap, control-flow branch + non-boolean-condition rejection).
Security
- Rotated the admin token (purged the old value from the Dokploy env and Redis
tr:token:).
[0.3.0] — 2026-06-30
Added
- Control-flow pipe templating:
{% if/elif/else/end %}+defined()via expr-lang (ADR 0003). - Resource-token materialization:
TOKEN "x" READ/APPENDin files → scoped tokens ontr deploy(ADR 0030). tr deploy --check(dry run),tr login,tr status.- Per-pipe
RATE_LIMITenforcement (token+pipe; ADR 0015);/tr/v1/docsUI (off by default,TR_DOCS_ENABLED; ADR 0017); dedicated read-only ClickHouse user (ADR 0011). - Release signing (GPG) + Helm chart published to GitHub Pages.
Changed
- ponytail cuts: strconv.Itoa over hand-rolled, merged CHPinger into Pinger, dropped dead Connector field.
[0.2.0] — 2026-06-29
Phases 3–5 + scoped auth + a query-path perf fix.
Added
- Branching (Phase 3):
tr_{branch}ClickHouse DB per git branch;tr deploy --branch/tr local start --branch. - Materialized views + breaking migrations (shadow → backfill →
EXCHANGE TABLES,--allow-breaking). - Config:
~/.tinyraven/config.yml(Tinybird-compatible) +TINYBIRD_HOST/TOKEN/WORKSPACEenv. - Connectors (Phase 5): Kafka/S3/PostgreSQL as ClickHouse-native engines in
.datasource(ADR 0019) + templates; BI-tool docs; load + query benchmarks (scripts/loadtest,scripts/querybench). - Distribution (Phase 4): GoReleaser (binaries/deb/rpm), Helm chart, Heroku/Railway/DO/AWS-CFN manifests, deploy docs.
- Scoped tokens:
tr token create/ls/rm; per-scope enforcement —READ:<pipe>,APPEND:<ds>,ADMIN, wildcards (ADR 0005). Frontends can hold a read-only pipe token. TR_PIPE_RATE_LIMIT(configurable per-token rate limit; 0 disables).
Changed / Fixed
- perf: tuned ClickHouse HTTP transport (
MaxIdleConnsPerHost: 512) — default (2) thrashed connections under load (p50 92ms + errors); pooled = ~19ms p50, ~0 errors (4–5×). Query latency now CH-bound: single-flight p50 ~1.8ms (CH ~0.35ms).
[0.1.2] — 2026-06-29
Added
- Marketing website deploy: static Next.js export served by nginx
(site/Dockerfile), published asghcr.io/ravencloak-org/tiny-siteby the
release workflow, and asiteservice in the prod compose (port 18080). - API and website split across hosts: site at
tiny.ravencloak.org, API at
tiny-api.ravencloak.org(first-level subdomain — Cloudflare Universal SSL
doesn't cover second-level likeapi.tiny.*).
[0.1.1] — 2026-06-29
Added
- One-click production stack
deploy/docker-compose.prod.yml(ClickHouse 26.3 +
Redis AOF + TinyRaven, health-gated, persistent volumes) for Dokploy Compose deploys. - Docker image now bakes the
examples/quickstartproject at/projectand
defaultsTR_PROJECT_DIR=/project, so a fresh deploy is queryable immediately. - Marketing site under
site/(Next.js + shadcn + Bklit charts): hero, features,
one-env-var migration, illustrative price comparison, real benchmark
(~177k events/s, p95 71ms — measured: 50 clients, batched, 1 node, 2.65M events
persisted to ClickHouse). - Deploy guide
docs/deploy/dokploy.md+ Cloudflare Tunnel config fortiny.ravencloak.org.
Changed
- Release image is single-arch
linux/amd64(x86) — dropped multi-arch/QEMU.
[0.1.0] — 2026-06-29
First release: a working, self-hosted, Tinybird-API-compatible analytics backend
over OSS ClickHouse. Covers MILESTONE Phases 1 (MVP ingestion + query) and 2 (API
publishing + deployment). Single tr binary = server + CLI.
Added — Phase 1 (MVP: core ingestion + query)
- HTTP server on
net/http+chirouter. POST /v0/events— JSON / NDJSON ingestion; per-row validate + quarantine
(ADR 0018);202 {successful_rows, quarantined_rows}ack-on-buffer (ADR 0004).GET /v0/pipes/{name}.json— parameterized SQL pipes via{{Type(name,default)}}
→ ClickHouse{name:Type}parameters, injection-proof (ADR 0003).GET /health(liveness) +GET /health/ready(Redis + ClickHouse, cached) — ADR 0024.- Gatherer: in-process batching, flush on
max(10,000 events, 5s), graceful drain. .datasourceparser (SCHEMA/ENGINE/ENGINE_* + structural validation, ADR 0008/0027)
→ Redis schema registry (ADR 0001 — Redis-only metadata, no Postgres)..pipeparser + in-memory pipe registry with atomic hot-reload swap (ADR 0020).- Bearer token auth middleware → Redis token store (ADR 0005).
tr local start→ Docker Compose (ClickHouse 26.3 LTS + Redis AOF + TinyRaven).- Dev hot reload on
.datasource/.pipechange (mtime poll).
Added — Phase 2 (API publishing + deployment)
tr deploy— validate all files, diff schema against livesystem.columns,
create mis...
v0.3.14
Changelog
All notable changes to TinyRaven are documented here. Format follows
Keep a Changelog; this project adheres to
Semantic Versioning.
[0.3.10] — 2026-07-01
Fixed
tr deploybootstraps its ClickHouse session againstdefaultand letsdeploy.Runcreate + re-scope onto the target DB, fixing first-deployUNKNOWN_DATABASEon a fresh workspace (#71).
Changed
- Site copy: dropped "100% API parity" claims (hero, features, SEO metadata) in favor of honest "speaks Tinybird's /v0 API + .datasource/.pipe files" — matches the /use-cases coverage table.
[0.3.9] — 2026-07-01
Changed
- Benchmark section rebuilt to TinyRaven's own measured numbers: ingest throughput (1.51M events/s) + latency percentiles p50/p95/p99 (19.8 / 79 / 178 ms), measured locally (50 clients, batch 1000, 15s, 22.7M events). Dropped the illustrative Tinybird head-to-head — no vendor numbers we didn't measure.
[0.3.8] — 2026-07-01
Changed
/use-caseslive dashboard rebuilt on Bklit UI charts (verified locally before deploy): BklitBarChartfor top pages, BklitAreaChart(time-based x, fedDatevalues) for views over time. Removed the Recharts detour; fixed the@bklit/area-chartinstall'sshimmering-textimport path.
[0.3.7] — 2026-07-01
Fixed
/use-caseslive dashboard now uses Recharts instead of the bespoke visx chart set, whoseBarYAxisrendered category labels on the Y axis and overflowed the card. Clean fixed-height bar charts with numeric Y axis, dark tooltip, rounded bars.
[0.3.6] — 2026-07-01
Added
- CORS on the API (
Access-Control-Allow-Origin: *+ preflight short-circuit,internal/api/middleware.go) so browser dashboards can read pipe endpoints cross-origin — Tinybird parity (pipes are CORS-open for public read tokens; ADR 0025). Auth unchanged;*grants read visibility, not access. /use-casesnow renders a live dashboard: two visx charts (top pages, views over time) that fetch the demo pipes from prod in-browser on load. Replaces the static JSON receipt.
[0.3.5] — 2026-07-01
Added
- Live demo links on
/use-cases: clickable prod endpoints (tiny-api.ravencloak.org) backed by a read-only demo token (scopeREAD:top_pages,READ:views_over_time— 403 on anything else), returning real JSON from 300 seeded events. - Dashboards demo baked into the API image (
/project) so its pipes survive container redeploys; table + data persist in the ClickHouse volume, token in Redis AOF.
[0.3.4] — 2026-07-01
Fixed
- Marketing site nginx now serves Next static-export subroutes:
try_files $uri $uri.htmlreturns/use-cases.htmlfor/use-casesinstead of a dir 301 → 403 (the redirect also dropped https→http behind Cloudflare). Home page was unaffected.
[0.3.3] — 2026-07-01
Added
- Marketing site:
/use-casespage mapping TinyRaven to Tinybird's eight documented use cases with honest coverage badges (Live / Via ClickHouse / Partial) and a demonstrated user-facing-dashboards spotlight using real demo output. examples/dashboards-demo/: reproducible drop-in demo (Tinybird dashboards use case) —.datasource/.pipefiles,run.sh(Applecontainerlocal runtime), sample events, and verified receipts.
Fixed
- Nav section links now resolve from any route (
/#featuresform) and expose the new Use cases page.
Known issues
tr deploycannot bootstrap a missing target database (native client pins the session to it →UNKNOWN_DATABASE); pre-create the DB. See #71. Prod compose is unaffected (ClickHouse image createstr_main).
[0.3.2] — 2026-06-30
Changed
- Auto-deploy on release is now version-tagged via the Dokploy API (
compose.updateenv →compose.deploy) instead of a webhook on:latest. A version tag is a new image reference, so Dokploy pulls the new digest every time; the:latestwebhook recreated from cache and silently never updated.
[0.3.1] — 2026-06-30
Added
- API read endpoints toward full Tinybird
/v0parity:GET /v0/datasources,GET /v0/datasources/{name},GET /v0/pipes,GET /v0/pipes/{name}(all ADMIN), plus pipe output formatsGET /v0/pipes/{name}.{csv,ndjson}(READ-scoped) alongside the existing.json. - Distribution: signed APT + RPM repos published to GitHub Pages (
apt-get install tinyraven); GoReleaser Scoop/AUR/Nix/winget publisher blocks (fail-safe — push only when their token exists); install matrix +docs/install.md. docs/parity-gaps.mdranked/v0parity audit.
Changed
- Prod deploy model: image tags pinned to
latest; release builds:version+:latestthen triggers the Dokploy deploy webhook (pull_policy: alwaysrecreates on the new digest). Dokploy panel env is the documented source of truth. - APT/RPM gh-pages publish now does a scoped
rsync --deleteofapt/+rpm/(keep-2 pool prune actually removes old blobs);helm-publish+apt-publishshare a concurrency group to avoid gh-pages races.
Tests
internal/apierrandinternal/model0→100%;internal/pipe86.7→96% (error-envelope mapping,Token.HasScopeauth gate, registry hot-reload swap, control-flow branch + non-boolean-condition rejection).
Security
- Rotated the admin token (purged the old value from the Dokploy env and Redis
tr:token:).
[0.3.0] — 2026-06-30
Added
- Control-flow pipe templating:
{% if/elif/else/end %}+defined()via expr-lang (ADR 0003). - Resource-token materialization:
TOKEN "x" READ/APPENDin files → scoped tokens ontr deploy(ADR 0030). tr deploy --check(dry run),tr login,tr status.- Per-pipe
RATE_LIMITenforcement (token+pipe; ADR 0015);/tr/v1/docsUI (off by default,TR_DOCS_ENABLED; ADR 0017); dedicated read-only ClickHouse user (ADR 0011). - Release signing (GPG) + Helm chart published to GitHub Pages.
Changed
- ponytail cuts: strconv.Itoa over hand-rolled, merged CHPinger into Pinger, dropped dead Connector field.
[0.2.0] — 2026-06-29
Phases 3–5 + scoped auth + a query-path perf fix.
Added
- Branching (Phase 3):
tr_{branch}ClickHouse DB per git branch;tr deploy --branch/tr local start --branch. - Materialized views + breaking migrations (shadow → backfill →
EXCHANGE TABLES,--allow-breaking). - Config:
~/.tinyraven/config.yml(Tinybird-compatible) +TINYBIRD_HOST/TOKEN/WORKSPACEenv. - Connectors (Phase 5): Kafka/S3/PostgreSQL as ClickHouse-native engines in
.datasource(ADR 0019) + templates; BI-tool docs; load + query benchmarks (scripts/loadtest,scripts/querybench). - Distribution (Phase 4): GoReleaser (binaries/deb/rpm), Helm chart, Heroku/Railway/DO/AWS-CFN manifests, deploy docs.
- Scoped tokens:
tr token create/ls/rm; per-scope enforcement —READ:<pipe>,APPEND:<ds>,ADMIN, wildcards (ADR 0005). Frontends can hold a read-only pipe token. TR_PIPE_RATE_LIMIT(configurable per-token rate limit; 0 disables).
Changed / Fixed
- perf: tuned ClickHouse HTTP transport (
MaxIdleConnsPerHost: 512) — default (2) thrashed connections under load (p50 92ms + errors); pooled = ~19ms p50, ~0 errors (4–5×). Query latency now CH-bound: single-flight p50 ~1.8ms (CH ~0.35ms).
[0.1.2] — 2026-06-29
Added
- Marketing website deploy: static Next.js export served by nginx
(site/Dockerfile), published asghcr.io/ravencloak-org/tiny-siteby the
release workflow, and asiteservice in the prod compose (port 18080). - API and website split across hosts: site at
tiny.ravencloak.org, API at
tiny-api.ravencloak.org(first-level subdomain — Cloudflare Universal SSL
doesn't cover second-level likeapi.tiny.*).
[0.1.1] — 2026-06-29
Added
- One-click production stack
deploy/docker-compose.prod.yml(ClickHouse 26.3 +
Redis AOF + TinyRaven, health-gated, persistent volumes) for Dokploy Compose deploys. - Docker image now bakes the
examples/quickstartproject at/projectand
defaultsTR_PROJECT_DIR=/project, so a fresh deploy is queryable immediately. - Marketing site under
site/(Next.js + shadcn + Bklit charts): hero, features,
one-env-var migration, illustrative price comparison, real benchmark
(~177k events/s, p95 71ms — measured: 50 clients, batched, 1 node, 2.65M events
persisted to ClickHouse). - Deploy guide
docs/deploy/dokploy.md+ Cloudflare Tunnel config fortiny.ravencloak.org.
Changed
- Release image is single-arch
linux/amd64(x86) — dropped multi-arch/QEMU.
[0.1.0] — 2026-06-29
First release: a working, self-hosted, Tinybird-API-compatible analytics backend
over OSS ClickHouse. Covers MILESTONE Phases 1 (MVP ingestion + query) and 2 (API
publishing + deployment). Single tr binary = server + CLI.
Added — Phase 1 (MVP: core ingestion + query)
- HTTP server on
net/http+chirouter. POST /v0/events— JSON / NDJSON ingestion; per-row validate + quarantine
(ADR 0018);202 {successful_rows, quarantined_rows}ack-on-buffer (ADR 0004).GET /v0/pipes/{name}.json— parameterized SQL pipes via{{Type(name,default)}}
→ ClickHouse{name:Type}parameters, injection-proof (ADR 0003).GET /health(liveness) +GET /health/ready(Redis + ClickHouse, cached) — ADR 0024.- Gatherer: in-process batching, flush on
max(10,000 events, 5s), graceful drain. .datasourceparser (SCHEMA/ENGINE/ENGINE_* + structural validation, ADR 0008/0027)
→ Redis schema registry (ADR 0001 — Redis-only metadata, no Postgres)..pipeparser + in-memory pipe registry with atomic hot-reload swap (ADR 0020).- Bearer token auth middleware → Redis token store (ADR 0005).
tr local start→ Docker Compose (ClickHouse 26.3 LTS + Redis AOF + TinyRaven).- Dev hot reload on
.datasource/.pipechange (mtime poll).
Added — Phase 2 (API publishing + deployment)
tr deploy— validate all files, diff schema against livesystem.columns,
create mis...
v0.3.13
Changelog
All notable changes to TinyRaven are documented here. Format follows
Keep a Changelog; this project adheres to
Semantic Versioning.
[0.3.10] — 2026-07-01
Fixed
tr deploybootstraps its ClickHouse session againstdefaultand letsdeploy.Runcreate + re-scope onto the target DB, fixing first-deployUNKNOWN_DATABASEon a fresh workspace (#71).
Changed
- Site copy: dropped "100% API parity" claims (hero, features, SEO metadata) in favor of honest "speaks Tinybird's /v0 API + .datasource/.pipe files" — matches the /use-cases coverage table.
[0.3.9] — 2026-07-01
Changed
- Benchmark section rebuilt to TinyRaven's own measured numbers: ingest throughput (1.51M events/s) + latency percentiles p50/p95/p99 (19.8 / 79 / 178 ms), measured locally (50 clients, batch 1000, 15s, 22.7M events). Dropped the illustrative Tinybird head-to-head — no vendor numbers we didn't measure.
[0.3.8] — 2026-07-01
Changed
/use-caseslive dashboard rebuilt on Bklit UI charts (verified locally before deploy): BklitBarChartfor top pages, BklitAreaChart(time-based x, fedDatevalues) for views over time. Removed the Recharts detour; fixed the@bklit/area-chartinstall'sshimmering-textimport path.
[0.3.7] — 2026-07-01
Fixed
/use-caseslive dashboard now uses Recharts instead of the bespoke visx chart set, whoseBarYAxisrendered category labels on the Y axis and overflowed the card. Clean fixed-height bar charts with numeric Y axis, dark tooltip, rounded bars.
[0.3.6] — 2026-07-01
Added
- CORS on the API (
Access-Control-Allow-Origin: *+ preflight short-circuit,internal/api/middleware.go) so browser dashboards can read pipe endpoints cross-origin — Tinybird parity (pipes are CORS-open for public read tokens; ADR 0025). Auth unchanged;*grants read visibility, not access. /use-casesnow renders a live dashboard: two visx charts (top pages, views over time) that fetch the demo pipes from prod in-browser on load. Replaces the static JSON receipt.
[0.3.5] — 2026-07-01
Added
- Live demo links on
/use-cases: clickable prod endpoints (tiny-api.ravencloak.org) backed by a read-only demo token (scopeREAD:top_pages,READ:views_over_time— 403 on anything else), returning real JSON from 300 seeded events. - Dashboards demo baked into the API image (
/project) so its pipes survive container redeploys; table + data persist in the ClickHouse volume, token in Redis AOF.
[0.3.4] — 2026-07-01
Fixed
- Marketing site nginx now serves Next static-export subroutes:
try_files $uri $uri.htmlreturns/use-cases.htmlfor/use-casesinstead of a dir 301 → 403 (the redirect also dropped https→http behind Cloudflare). Home page was unaffected.
[0.3.3] — 2026-07-01
Added
- Marketing site:
/use-casespage mapping TinyRaven to Tinybird's eight documented use cases with honest coverage badges (Live / Via ClickHouse / Partial) and a demonstrated user-facing-dashboards spotlight using real demo output. examples/dashboards-demo/: reproducible drop-in demo (Tinybird dashboards use case) —.datasource/.pipefiles,run.sh(Applecontainerlocal runtime), sample events, and verified receipts.
Fixed
- Nav section links now resolve from any route (
/#featuresform) and expose the new Use cases page.
Known issues
tr deploycannot bootstrap a missing target database (native client pins the session to it →UNKNOWN_DATABASE); pre-create the DB. See #71. Prod compose is unaffected (ClickHouse image createstr_main).
[0.3.2] — 2026-06-30
Changed
- Auto-deploy on release is now version-tagged via the Dokploy API (
compose.updateenv →compose.deploy) instead of a webhook on:latest. A version tag is a new image reference, so Dokploy pulls the new digest every time; the:latestwebhook recreated from cache and silently never updated.
[0.3.1] — 2026-06-30
Added
- API read endpoints toward full Tinybird
/v0parity:GET /v0/datasources,GET /v0/datasources/{name},GET /v0/pipes,GET /v0/pipes/{name}(all ADMIN), plus pipe output formatsGET /v0/pipes/{name}.{csv,ndjson}(READ-scoped) alongside the existing.json. - Distribution: signed APT + RPM repos published to GitHub Pages (
apt-get install tinyraven); GoReleaser Scoop/AUR/Nix/winget publisher blocks (fail-safe — push only when their token exists); install matrix +docs/install.md. docs/parity-gaps.mdranked/v0parity audit.
Changed
- Prod deploy model: image tags pinned to
latest; release builds:version+:latestthen triggers the Dokploy deploy webhook (pull_policy: alwaysrecreates on the new digest). Dokploy panel env is the documented source of truth. - APT/RPM gh-pages publish now does a scoped
rsync --deleteofapt/+rpm/(keep-2 pool prune actually removes old blobs);helm-publish+apt-publishshare a concurrency group to avoid gh-pages races.
Tests
internal/apierrandinternal/model0→100%;internal/pipe86.7→96% (error-envelope mapping,Token.HasScopeauth gate, registry hot-reload swap, control-flow branch + non-boolean-condition rejection).
Security
- Rotated the admin token (purged the old value from the Dokploy env and Redis
tr:token:).
[0.3.0] — 2026-06-30
Added
- Control-flow pipe templating:
{% if/elif/else/end %}+defined()via expr-lang (ADR 0003). - Resource-token materialization:
TOKEN "x" READ/APPENDin files → scoped tokens ontr deploy(ADR 0030). tr deploy --check(dry run),tr login,tr status.- Per-pipe
RATE_LIMITenforcement (token+pipe; ADR 0015);/tr/v1/docsUI (off by default,TR_DOCS_ENABLED; ADR 0017); dedicated read-only ClickHouse user (ADR 0011). - Release signing (GPG) + Helm chart published to GitHub Pages.
Changed
- ponytail cuts: strconv.Itoa over hand-rolled, merged CHPinger into Pinger, dropped dead Connector field.
[0.2.0] — 2026-06-29
Phases 3–5 + scoped auth + a query-path perf fix.
Added
- Branching (Phase 3):
tr_{branch}ClickHouse DB per git branch;tr deploy --branch/tr local start --branch. - Materialized views + breaking migrations (shadow → backfill →
EXCHANGE TABLES,--allow-breaking). - Config:
~/.tinyraven/config.yml(Tinybird-compatible) +TINYBIRD_HOST/TOKEN/WORKSPACEenv. - Connectors (Phase 5): Kafka/S3/PostgreSQL as ClickHouse-native engines in
.datasource(ADR 0019) + templates; BI-tool docs; load + query benchmarks (scripts/loadtest,scripts/querybench). - Distribution (Phase 4): GoReleaser (binaries/deb/rpm), Helm chart, Heroku/Railway/DO/AWS-CFN manifests, deploy docs.
- Scoped tokens:
tr token create/ls/rm; per-scope enforcement —READ:<pipe>,APPEND:<ds>,ADMIN, wildcards (ADR 0005). Frontends can hold a read-only pipe token. TR_PIPE_RATE_LIMIT(configurable per-token rate limit; 0 disables).
Changed / Fixed
- perf: tuned ClickHouse HTTP transport (
MaxIdleConnsPerHost: 512) — default (2) thrashed connections under load (p50 92ms + errors); pooled = ~19ms p50, ~0 errors (4–5×). Query latency now CH-bound: single-flight p50 ~1.8ms (CH ~0.35ms).
[0.1.2] — 2026-06-29
Added
- Marketing website deploy: static Next.js export served by nginx
(site/Dockerfile), published asghcr.io/ravencloak-org/tiny-siteby the
release workflow, and asiteservice in the prod compose (port 18080). - API and website split across hosts: site at
tiny.ravencloak.org, API at
tiny-api.ravencloak.org(first-level subdomain — Cloudflare Universal SSL
doesn't cover second-level likeapi.tiny.*).
[0.1.1] — 2026-06-29
Added
- One-click production stack
deploy/docker-compose.prod.yml(ClickHouse 26.3 +
Redis AOF + TinyRaven, health-gated, persistent volumes) for Dokploy Compose deploys. - Docker image now bakes the
examples/quickstartproject at/projectand
defaultsTR_PROJECT_DIR=/project, so a fresh deploy is queryable immediately. - Marketing site under
site/(Next.js + shadcn + Bklit charts): hero, features,
one-env-var migration, illustrative price comparison, real benchmark
(~177k events/s, p95 71ms — measured: 50 clients, batched, 1 node, 2.65M events
persisted to ClickHouse). - Deploy guide
docs/deploy/dokploy.md+ Cloudflare Tunnel config fortiny.ravencloak.org.
Changed
- Release image is single-arch
linux/amd64(x86) — dropped multi-arch/QEMU.
[0.1.0] — 2026-06-29
First release: a working, self-hosted, Tinybird-API-compatible analytics backend
over OSS ClickHouse. Covers MILESTONE Phases 1 (MVP ingestion + query) and 2 (API
publishing + deployment). Single tr binary = server + CLI.
Added — Phase 1 (MVP: core ingestion + query)
- HTTP server on
net/http+chirouter. POST /v0/events— JSON / NDJSON ingestion; per-row validate + quarantine
(ADR 0018);202 {successful_rows, quarantined_rows}ack-on-buffer (ADR 0004).GET /v0/pipes/{name}.json— parameterized SQL pipes via{{Type(name,default)}}
→ ClickHouse{name:Type}parameters, injection-proof (ADR 0003).GET /health(liveness) +GET /health/ready(Redis + ClickHouse, cached) — ADR 0024.- Gatherer: in-process batching, flush on
max(10,000 events, 5s), graceful drain. .datasourceparser (SCHEMA/ENGINE/ENGINE_* + structural validation, ADR 0008/0027)
→ Redis schema registry (ADR 0001 — Redis-only metadata, no Postgres)..pipeparser + in-memory pipe registry with atomic hot-reload swap (ADR 0020).- Bearer token auth middleware → Redis token store (ADR 0005).
tr local start→ Docker Compose (ClickHouse 26.3 LTS + Redis AOF + TinyRaven).- Dev hot reload on
.datasource/.pipechange (mtime poll).
Added — Phase 2 (API publishing + deployment)
tr deploy— validate all files, diff schema against livesystem.columns,
create mis...
v0.3.12
Changelog
All notable changes to TinyRaven are documented here. Format follows
Keep a Changelog; this project adheres to
Semantic Versioning.
[0.3.10] — 2026-07-01
Fixed
tr deploybootstraps its ClickHouse session againstdefaultand letsdeploy.Runcreate + re-scope onto the target DB, fixing first-deployUNKNOWN_DATABASEon a fresh workspace (#71).
Changed
- Site copy: dropped "100% API parity" claims (hero, features, SEO metadata) in favor of honest "speaks Tinybird's /v0 API + .datasource/.pipe files" — matches the /use-cases coverage table.
[0.3.9] — 2026-07-01
Changed
- Benchmark section rebuilt to TinyRaven's own measured numbers: ingest throughput (1.51M events/s) + latency percentiles p50/p95/p99 (19.8 / 79 / 178 ms), measured locally (50 clients, batch 1000, 15s, 22.7M events). Dropped the illustrative Tinybird head-to-head — no vendor numbers we didn't measure.
[0.3.8] — 2026-07-01
Changed
/use-caseslive dashboard rebuilt on Bklit UI charts (verified locally before deploy): BklitBarChartfor top pages, BklitAreaChart(time-based x, fedDatevalues) for views over time. Removed the Recharts detour; fixed the@bklit/area-chartinstall'sshimmering-textimport path.
[0.3.7] — 2026-07-01
Fixed
/use-caseslive dashboard now uses Recharts instead of the bespoke visx chart set, whoseBarYAxisrendered category labels on the Y axis and overflowed the card. Clean fixed-height bar charts with numeric Y axis, dark tooltip, rounded bars.
[0.3.6] — 2026-07-01
Added
- CORS on the API (
Access-Control-Allow-Origin: *+ preflight short-circuit,internal/api/middleware.go) so browser dashboards can read pipe endpoints cross-origin — Tinybird parity (pipes are CORS-open for public read tokens; ADR 0025). Auth unchanged;*grants read visibility, not access. /use-casesnow renders a live dashboard: two visx charts (top pages, views over time) that fetch the demo pipes from prod in-browser on load. Replaces the static JSON receipt.
[0.3.5] — 2026-07-01
Added
- Live demo links on
/use-cases: clickable prod endpoints (tiny-api.ravencloak.org) backed by a read-only demo token (scopeREAD:top_pages,READ:views_over_time— 403 on anything else), returning real JSON from 300 seeded events. - Dashboards demo baked into the API image (
/project) so its pipes survive container redeploys; table + data persist in the ClickHouse volume, token in Redis AOF.
[0.3.4] — 2026-07-01
Fixed
- Marketing site nginx now serves Next static-export subroutes:
try_files $uri $uri.htmlreturns/use-cases.htmlfor/use-casesinstead of a dir 301 → 403 (the redirect also dropped https→http behind Cloudflare). Home page was unaffected.
[0.3.3] — 2026-07-01
Added
- Marketing site:
/use-casespage mapping TinyRaven to Tinybird's eight documented use cases with honest coverage badges (Live / Via ClickHouse / Partial) and a demonstrated user-facing-dashboards spotlight using real demo output. examples/dashboards-demo/: reproducible drop-in demo (Tinybird dashboards use case) —.datasource/.pipefiles,run.sh(Applecontainerlocal runtime), sample events, and verified receipts.
Fixed
- Nav section links now resolve from any route (
/#featuresform) and expose the new Use cases page.
Known issues
tr deploycannot bootstrap a missing target database (native client pins the session to it →UNKNOWN_DATABASE); pre-create the DB. See #71. Prod compose is unaffected (ClickHouse image createstr_main).
[0.3.2] — 2026-06-30
Changed
- Auto-deploy on release is now version-tagged via the Dokploy API (
compose.updateenv →compose.deploy) instead of a webhook on:latest. A version tag is a new image reference, so Dokploy pulls the new digest every time; the:latestwebhook recreated from cache and silently never updated.
[0.3.1] — 2026-06-30
Added
- API read endpoints toward full Tinybird
/v0parity:GET /v0/datasources,GET /v0/datasources/{name},GET /v0/pipes,GET /v0/pipes/{name}(all ADMIN), plus pipe output formatsGET /v0/pipes/{name}.{csv,ndjson}(READ-scoped) alongside the existing.json. - Distribution: signed APT + RPM repos published to GitHub Pages (
apt-get install tinyraven); GoReleaser Scoop/AUR/Nix/winget publisher blocks (fail-safe — push only when their token exists); install matrix +docs/install.md. docs/parity-gaps.mdranked/v0parity audit.
Changed
- Prod deploy model: image tags pinned to
latest; release builds:version+:latestthen triggers the Dokploy deploy webhook (pull_policy: alwaysrecreates on the new digest). Dokploy panel env is the documented source of truth. - APT/RPM gh-pages publish now does a scoped
rsync --deleteofapt/+rpm/(keep-2 pool prune actually removes old blobs);helm-publish+apt-publishshare a concurrency group to avoid gh-pages races.
Tests
internal/apierrandinternal/model0→100%;internal/pipe86.7→96% (error-envelope mapping,Token.HasScopeauth gate, registry hot-reload swap, control-flow branch + non-boolean-condition rejection).
Security
- Rotated the admin token (purged the old value from the Dokploy env and Redis
tr:token:).
[0.3.0] — 2026-06-30
Added
- Control-flow pipe templating:
{% if/elif/else/end %}+defined()via expr-lang (ADR 0003). - Resource-token materialization:
TOKEN "x" READ/APPENDin files → scoped tokens ontr deploy(ADR 0030). tr deploy --check(dry run),tr login,tr status.- Per-pipe
RATE_LIMITenforcement (token+pipe; ADR 0015);/tr/v1/docsUI (off by default,TR_DOCS_ENABLED; ADR 0017); dedicated read-only ClickHouse user (ADR 0011). - Release signing (GPG) + Helm chart published to GitHub Pages.
Changed
- ponytail cuts: strconv.Itoa over hand-rolled, merged CHPinger into Pinger, dropped dead Connector field.
[0.2.0] — 2026-06-29
Phases 3–5 + scoped auth + a query-path perf fix.
Added
- Branching (Phase 3):
tr_{branch}ClickHouse DB per git branch;tr deploy --branch/tr local start --branch. - Materialized views + breaking migrations (shadow → backfill →
EXCHANGE TABLES,--allow-breaking). - Config:
~/.tinyraven/config.yml(Tinybird-compatible) +TINYBIRD_HOST/TOKEN/WORKSPACEenv. - Connectors (Phase 5): Kafka/S3/PostgreSQL as ClickHouse-native engines in
.datasource(ADR 0019) + templates; BI-tool docs; load + query benchmarks (scripts/loadtest,scripts/querybench). - Distribution (Phase 4): GoReleaser (binaries/deb/rpm), Helm chart, Heroku/Railway/DO/AWS-CFN manifests, deploy docs.
- Scoped tokens:
tr token create/ls/rm; per-scope enforcement —READ:<pipe>,APPEND:<ds>,ADMIN, wildcards (ADR 0005). Frontends can hold a read-only pipe token. TR_PIPE_RATE_LIMIT(configurable per-token rate limit; 0 disables).
Changed / Fixed
- perf: tuned ClickHouse HTTP transport (
MaxIdleConnsPerHost: 512) — default (2) thrashed connections under load (p50 92ms + errors); pooled = ~19ms p50, ~0 errors (4–5×). Query latency now CH-bound: single-flight p50 ~1.8ms (CH ~0.35ms).
[0.1.2] — 2026-06-29
Added
- Marketing website deploy: static Next.js export served by nginx
(site/Dockerfile), published asghcr.io/ravencloak-org/tiny-siteby the
release workflow, and asiteservice in the prod compose (port 18080). - API and website split across hosts: site at
tiny.ravencloak.org, API at
tiny-api.ravencloak.org(first-level subdomain — Cloudflare Universal SSL
doesn't cover second-level likeapi.tiny.*).
[0.1.1] — 2026-06-29
Added
- One-click production stack
deploy/docker-compose.prod.yml(ClickHouse 26.3 +
Redis AOF + TinyRaven, health-gated, persistent volumes) for Dokploy Compose deploys. - Docker image now bakes the
examples/quickstartproject at/projectand
defaultsTR_PROJECT_DIR=/project, so a fresh deploy is queryable immediately. - Marketing site under
site/(Next.js + shadcn + Bklit charts): hero, features,
one-env-var migration, illustrative price comparison, real benchmark
(~177k events/s, p95 71ms — measured: 50 clients, batched, 1 node, 2.65M events
persisted to ClickHouse). - Deploy guide
docs/deploy/dokploy.md+ Cloudflare Tunnel config fortiny.ravencloak.org.
Changed
- Release image is single-arch
linux/amd64(x86) — dropped multi-arch/QEMU.
[0.1.0] — 2026-06-29
First release: a working, self-hosted, Tinybird-API-compatible analytics backend
over OSS ClickHouse. Covers MILESTONE Phases 1 (MVP ingestion + query) and 2 (API
publishing + deployment). Single tr binary = server + CLI.
Added — Phase 1 (MVP: core ingestion + query)
- HTTP server on
net/http+chirouter. POST /v0/events— JSON / NDJSON ingestion; per-row validate + quarantine
(ADR 0018);202 {successful_rows, quarantined_rows}ack-on-buffer (ADR 0004).GET /v0/pipes/{name}.json— parameterized SQL pipes via{{Type(name,default)}}
→ ClickHouse{name:Type}parameters, injection-proof (ADR 0003).GET /health(liveness) +GET /health/ready(Redis + ClickHouse, cached) — ADR 0024.- Gatherer: in-process batching, flush on
max(10,000 events, 5s), graceful drain. .datasourceparser (SCHEMA/ENGINE/ENGINE_* + structural validation, ADR 0008/0027)
→ Redis schema registry (ADR 0001 — Redis-only metadata, no Postgres)..pipeparser + in-memory pipe registry with atomic hot-reload swap (ADR 0020).- Bearer token auth middleware → Redis token store (ADR 0005).
tr local start→ Docker Compose (ClickHouse 26.3 LTS + Redis AOF + TinyRaven).- Dev hot reload on
.datasource/.pipechange (mtime poll).
Added — Phase 2 (API publishing + deployment)
tr deploy— validate all files, diff schema against livesystem.columns,
create mis...
v0.3.11
Changelog
All notable changes to TinyRaven are documented here. Format follows
Keep a Changelog; this project adheres to
Semantic Versioning.
[0.3.10] — 2026-07-01
Fixed
tr deploybootstraps its ClickHouse session againstdefaultand letsdeploy.Runcreate + re-scope onto the target DB, fixing first-deployUNKNOWN_DATABASEon a fresh workspace (#71).
Changed
- Site copy: dropped "100% API parity" claims (hero, features, SEO metadata) in favor of honest "speaks Tinybird's /v0 API + .datasource/.pipe files" — matches the /use-cases coverage table.
[0.3.9] — 2026-07-01
Changed
- Benchmark section rebuilt to TinyRaven's own measured numbers: ingest throughput (1.51M events/s) + latency percentiles p50/p95/p99 (19.8 / 79 / 178 ms), measured locally (50 clients, batch 1000, 15s, 22.7M events). Dropped the illustrative Tinybird head-to-head — no vendor numbers we didn't measure.
[0.3.8] — 2026-07-01
Changed
/use-caseslive dashboard rebuilt on Bklit UI charts (verified locally before deploy): BklitBarChartfor top pages, BklitAreaChart(time-based x, fedDatevalues) for views over time. Removed the Recharts detour; fixed the@bklit/area-chartinstall'sshimmering-textimport path.
[0.3.7] — 2026-07-01
Fixed
/use-caseslive dashboard now uses Recharts instead of the bespoke visx chart set, whoseBarYAxisrendered category labels on the Y axis and overflowed the card. Clean fixed-height bar charts with numeric Y axis, dark tooltip, rounded bars.
[0.3.6] — 2026-07-01
Added
- CORS on the API (
Access-Control-Allow-Origin: *+ preflight short-circuit,internal/api/middleware.go) so browser dashboards can read pipe endpoints cross-origin — Tinybird parity (pipes are CORS-open for public read tokens; ADR 0025). Auth unchanged;*grants read visibility, not access. /use-casesnow renders a live dashboard: two visx charts (top pages, views over time) that fetch the demo pipes from prod in-browser on load. Replaces the static JSON receipt.
[0.3.5] — 2026-07-01
Added
- Live demo links on
/use-cases: clickable prod endpoints (tiny-api.ravencloak.org) backed by a read-only demo token (scopeREAD:top_pages,READ:views_over_time— 403 on anything else), returning real JSON from 300 seeded events. - Dashboards demo baked into the API image (
/project) so its pipes survive container redeploys; table + data persist in the ClickHouse volume, token in Redis AOF.
[0.3.4] — 2026-07-01
Fixed
- Marketing site nginx now serves Next static-export subroutes:
try_files $uri $uri.htmlreturns/use-cases.htmlfor/use-casesinstead of a dir 301 → 403 (the redirect also dropped https→http behind Cloudflare). Home page was unaffected.
[0.3.3] — 2026-07-01
Added
- Marketing site:
/use-casespage mapping TinyRaven to Tinybird's eight documented use cases with honest coverage badges (Live / Via ClickHouse / Partial) and a demonstrated user-facing-dashboards spotlight using real demo output. examples/dashboards-demo/: reproducible drop-in demo (Tinybird dashboards use case) —.datasource/.pipefiles,run.sh(Applecontainerlocal runtime), sample events, and verified receipts.
Fixed
- Nav section links now resolve from any route (
/#featuresform) and expose the new Use cases page.
Known issues
tr deploycannot bootstrap a missing target database (native client pins the session to it →UNKNOWN_DATABASE); pre-create the DB. See #71. Prod compose is unaffected (ClickHouse image createstr_main).
[0.3.2] — 2026-06-30
Changed
- Auto-deploy on release is now version-tagged via the Dokploy API (
compose.updateenv →compose.deploy) instead of a webhook on:latest. A version tag is a new image reference, so Dokploy pulls the new digest every time; the:latestwebhook recreated from cache and silently never updated.
[0.3.1] — 2026-06-30
Added
- API read endpoints toward full Tinybird
/v0parity:GET /v0/datasources,GET /v0/datasources/{name},GET /v0/pipes,GET /v0/pipes/{name}(all ADMIN), plus pipe output formatsGET /v0/pipes/{name}.{csv,ndjson}(READ-scoped) alongside the existing.json. - Distribution: signed APT + RPM repos published to GitHub Pages (
apt-get install tinyraven); GoReleaser Scoop/AUR/Nix/winget publisher blocks (fail-safe — push only when their token exists); install matrix +docs/install.md. docs/parity-gaps.mdranked/v0parity audit.
Changed
- Prod deploy model: image tags pinned to
latest; release builds:version+:latestthen triggers the Dokploy deploy webhook (pull_policy: alwaysrecreates on the new digest). Dokploy panel env is the documented source of truth. - APT/RPM gh-pages publish now does a scoped
rsync --deleteofapt/+rpm/(keep-2 pool prune actually removes old blobs);helm-publish+apt-publishshare a concurrency group to avoid gh-pages races.
Tests
internal/apierrandinternal/model0→100%;internal/pipe86.7→96% (error-envelope mapping,Token.HasScopeauth gate, registry hot-reload swap, control-flow branch + non-boolean-condition rejection).
Security
- Rotated the admin token (purged the old value from the Dokploy env and Redis
tr:token:).
[0.3.0] — 2026-06-30
Added
- Control-flow pipe templating:
{% if/elif/else/end %}+defined()via expr-lang (ADR 0003). - Resource-token materialization:
TOKEN "x" READ/APPENDin files → scoped tokens ontr deploy(ADR 0030). tr deploy --check(dry run),tr login,tr status.- Per-pipe
RATE_LIMITenforcement (token+pipe; ADR 0015);/tr/v1/docsUI (off by default,TR_DOCS_ENABLED; ADR 0017); dedicated read-only ClickHouse user (ADR 0011). - Release signing (GPG) + Helm chart published to GitHub Pages.
Changed
- ponytail cuts: strconv.Itoa over hand-rolled, merged CHPinger into Pinger, dropped dead Connector field.
[0.2.0] — 2026-06-29
Phases 3–5 + scoped auth + a query-path perf fix.
Added
- Branching (Phase 3):
tr_{branch}ClickHouse DB per git branch;tr deploy --branch/tr local start --branch. - Materialized views + breaking migrations (shadow → backfill →
EXCHANGE TABLES,--allow-breaking). - Config:
~/.tinyraven/config.yml(Tinybird-compatible) +TINYBIRD_HOST/TOKEN/WORKSPACEenv. - Connectors (Phase 5): Kafka/S3/PostgreSQL as ClickHouse-native engines in
.datasource(ADR 0019) + templates; BI-tool docs; load + query benchmarks (scripts/loadtest,scripts/querybench). - Distribution (Phase 4): GoReleaser (binaries/deb/rpm), Helm chart, Heroku/Railway/DO/AWS-CFN manifests, deploy docs.
- Scoped tokens:
tr token create/ls/rm; per-scope enforcement —READ:<pipe>,APPEND:<ds>,ADMIN, wildcards (ADR 0005). Frontends can hold a read-only pipe token. TR_PIPE_RATE_LIMIT(configurable per-token rate limit; 0 disables).
Changed / Fixed
- perf: tuned ClickHouse HTTP transport (
MaxIdleConnsPerHost: 512) — default (2) thrashed connections under load (p50 92ms + errors); pooled = ~19ms p50, ~0 errors (4–5×). Query latency now CH-bound: single-flight p50 ~1.8ms (CH ~0.35ms).
[0.1.2] — 2026-06-29
Added
- Marketing website deploy: static Next.js export served by nginx
(site/Dockerfile), published asghcr.io/ravencloak-org/tiny-siteby the
release workflow, and asiteservice in the prod compose (port 18080). - API and website split across hosts: site at
tiny.ravencloak.org, API at
tiny-api.ravencloak.org(first-level subdomain — Cloudflare Universal SSL
doesn't cover second-level likeapi.tiny.*).
[0.1.1] — 2026-06-29
Added
- One-click production stack
deploy/docker-compose.prod.yml(ClickHouse 26.3 +
Redis AOF + TinyRaven, health-gated, persistent volumes) for Dokploy Compose deploys. - Docker image now bakes the
examples/quickstartproject at/projectand
defaultsTR_PROJECT_DIR=/project, so a fresh deploy is queryable immediately. - Marketing site under
site/(Next.js + shadcn + Bklit charts): hero, features,
one-env-var migration, illustrative price comparison, real benchmark
(~177k events/s, p95 71ms — measured: 50 clients, batched, 1 node, 2.65M events
persisted to ClickHouse). - Deploy guide
docs/deploy/dokploy.md+ Cloudflare Tunnel config fortiny.ravencloak.org.
Changed
- Release image is single-arch
linux/amd64(x86) — dropped multi-arch/QEMU.
[0.1.0] — 2026-06-29
First release: a working, self-hosted, Tinybird-API-compatible analytics backend
over OSS ClickHouse. Covers MILESTONE Phases 1 (MVP ingestion + query) and 2 (API
publishing + deployment). Single tr binary = server + CLI.
Added — Phase 1 (MVP: core ingestion + query)
- HTTP server on
net/http+chirouter. POST /v0/events— JSON / NDJSON ingestion; per-row validate + quarantine
(ADR 0018);202 {successful_rows, quarantined_rows}ack-on-buffer (ADR 0004).GET /v0/pipes/{name}.json— parameterized SQL pipes via{{Type(name,default)}}
→ ClickHouse{name:Type}parameters, injection-proof (ADR 0003).GET /health(liveness) +GET /health/ready(Redis + ClickHouse, cached) — ADR 0024.- Gatherer: in-process batching, flush on
max(10,000 events, 5s), graceful drain. .datasourceparser (SCHEMA/ENGINE/ENGINE_* + structural validation, ADR 0008/0027)
→ Redis schema registry (ADR 0001 — Redis-only metadata, no Postgres)..pipeparser + in-memory pipe registry with atomic hot-reload swap (ADR 0020).- Bearer token auth middleware → Redis token store (ADR 0005).
tr local start→ Docker Compose (ClickHouse 26.3 LTS + Redis AOF + TinyRaven).- Dev hot reload on
.datasource/.pipechange (mtime poll).
Added — Phase 2 (API publishing + deployment)
tr deploy— validate all files, diff schema against livesystem.columns,
create mis...
v0.3.10
Changelog
All notable changes to TinyRaven are documented here. Format follows
Keep a Changelog; this project adheres to
Semantic Versioning.
[0.3.10] — 2026-07-01
Fixed
tr deploybootstraps its ClickHouse session againstdefaultand letsdeploy.Runcreate + re-scope onto the target DB, fixing first-deployUNKNOWN_DATABASEon a fresh workspace (#71).
Changed
- Site copy: dropped "100% API parity" claims (hero, features, SEO metadata) in favor of honest "speaks Tinybird's /v0 API + .datasource/.pipe files" — matches the /use-cases coverage table.
[0.3.9] — 2026-07-01
Changed
- Benchmark section rebuilt to TinyRaven's own measured numbers: ingest throughput (1.51M events/s) + latency percentiles p50/p95/p99 (19.8 / 79 / 178 ms), measured locally (50 clients, batch 1000, 15s, 22.7M events). Dropped the illustrative Tinybird head-to-head — no vendor numbers we didn't measure.
[0.3.8] — 2026-07-01
Changed
/use-caseslive dashboard rebuilt on Bklit UI charts (verified locally before deploy): BklitBarChartfor top pages, BklitAreaChart(time-based x, fedDatevalues) for views over time. Removed the Recharts detour; fixed the@bklit/area-chartinstall'sshimmering-textimport path.
[0.3.7] — 2026-07-01
Fixed
/use-caseslive dashboard now uses Recharts instead of the bespoke visx chart set, whoseBarYAxisrendered category labels on the Y axis and overflowed the card. Clean fixed-height bar charts with numeric Y axis, dark tooltip, rounded bars.
[0.3.6] — 2026-07-01
Added
- CORS on the API (
Access-Control-Allow-Origin: *+ preflight short-circuit,internal/api/middleware.go) so browser dashboards can read pipe endpoints cross-origin — Tinybird parity (pipes are CORS-open for public read tokens; ADR 0025). Auth unchanged;*grants read visibility, not access. /use-casesnow renders a live dashboard: two visx charts (top pages, views over time) that fetch the demo pipes from prod in-browser on load. Replaces the static JSON receipt.
[0.3.5] — 2026-07-01
Added
- Live demo links on
/use-cases: clickable prod endpoints (tiny-api.ravencloak.org) backed by a read-only demo token (scopeREAD:top_pages,READ:views_over_time— 403 on anything else), returning real JSON from 300 seeded events. - Dashboards demo baked into the API image (
/project) so its pipes survive container redeploys; table + data persist in the ClickHouse volume, token in Redis AOF.
[0.3.4] — 2026-07-01
Fixed
- Marketing site nginx now serves Next static-export subroutes:
try_files $uri $uri.htmlreturns/use-cases.htmlfor/use-casesinstead of a dir 301 → 403 (the redirect also dropped https→http behind Cloudflare). Home page was unaffected.
[0.3.3] — 2026-07-01
Added
- Marketing site:
/use-casespage mapping TinyRaven to Tinybird's eight documented use cases with honest coverage badges (Live / Via ClickHouse / Partial) and a demonstrated user-facing-dashboards spotlight using real demo output. examples/dashboards-demo/: reproducible drop-in demo (Tinybird dashboards use case) —.datasource/.pipefiles,run.sh(Applecontainerlocal runtime), sample events, and verified receipts.
Fixed
- Nav section links now resolve from any route (
/#featuresform) and expose the new Use cases page.
Known issues
tr deploycannot bootstrap a missing target database (native client pins the session to it →UNKNOWN_DATABASE); pre-create the DB. See #71. Prod compose is unaffected (ClickHouse image createstr_main).
[0.3.2] — 2026-06-30
Changed
- Auto-deploy on release is now version-tagged via the Dokploy API (
compose.updateenv →compose.deploy) instead of a webhook on:latest. A version tag is a new image reference, so Dokploy pulls the new digest every time; the:latestwebhook recreated from cache and silently never updated.
[0.3.1] — 2026-06-30
Added
- API read endpoints toward full Tinybird
/v0parity:GET /v0/datasources,GET /v0/datasources/{name},GET /v0/pipes,GET /v0/pipes/{name}(all ADMIN), plus pipe output formatsGET /v0/pipes/{name}.{csv,ndjson}(READ-scoped) alongside the existing.json. - Distribution: signed APT + RPM repos published to GitHub Pages (
apt-get install tinyraven); GoReleaser Scoop/AUR/Nix/winget publisher blocks (fail-safe — push only when their token exists); install matrix +docs/install.md. docs/parity-gaps.mdranked/v0parity audit.
Changed
- Prod deploy model: image tags pinned to
latest; release builds:version+:latestthen triggers the Dokploy deploy webhook (pull_policy: alwaysrecreates on the new digest). Dokploy panel env is the documented source of truth. - APT/RPM gh-pages publish now does a scoped
rsync --deleteofapt/+rpm/(keep-2 pool prune actually removes old blobs);helm-publish+apt-publishshare a concurrency group to avoid gh-pages races.
Tests
internal/apierrandinternal/model0→100%;internal/pipe86.7→96% (error-envelope mapping,Token.HasScopeauth gate, registry hot-reload swap, control-flow branch + non-boolean-condition rejection).
Security
- Rotated the admin token (purged the old value from the Dokploy env and Redis
tr:token:).
[0.3.0] — 2026-06-30
Added
- Control-flow pipe templating:
{% if/elif/else/end %}+defined()via expr-lang (ADR 0003). - Resource-token materialization:
TOKEN "x" READ/APPENDin files → scoped tokens ontr deploy(ADR 0030). tr deploy --check(dry run),tr login,tr status.- Per-pipe
RATE_LIMITenforcement (token+pipe; ADR 0015);/tr/v1/docsUI (off by default,TR_DOCS_ENABLED; ADR 0017); dedicated read-only ClickHouse user (ADR 0011). - Release signing (GPG) + Helm chart published to GitHub Pages.
Changed
- ponytail cuts: strconv.Itoa over hand-rolled, merged CHPinger into Pinger, dropped dead Connector field.
[0.2.0] — 2026-06-29
Phases 3–5 + scoped auth + a query-path perf fix.
Added
- Branching (Phase 3):
tr_{branch}ClickHouse DB per git branch;tr deploy --branch/tr local start --branch. - Materialized views + breaking migrations (shadow → backfill →
EXCHANGE TABLES,--allow-breaking). - Config:
~/.tinyraven/config.yml(Tinybird-compatible) +TINYBIRD_HOST/TOKEN/WORKSPACEenv. - Connectors (Phase 5): Kafka/S3/PostgreSQL as ClickHouse-native engines in
.datasource(ADR 0019) + templates; BI-tool docs; load + query benchmarks (scripts/loadtest,scripts/querybench). - Distribution (Phase 4): GoReleaser (binaries/deb/rpm), Helm chart, Heroku/Railway/DO/AWS-CFN manifests, deploy docs.
- Scoped tokens:
tr token create/ls/rm; per-scope enforcement —READ:<pipe>,APPEND:<ds>,ADMIN, wildcards (ADR 0005). Frontends can hold a read-only pipe token. TR_PIPE_RATE_LIMIT(configurable per-token rate limit; 0 disables).
Changed / Fixed
- perf: tuned ClickHouse HTTP transport (
MaxIdleConnsPerHost: 512) — default (2) thrashed connections under load (p50 92ms + errors); pooled = ~19ms p50, ~0 errors (4–5×). Query latency now CH-bound: single-flight p50 ~1.8ms (CH ~0.35ms).
[0.1.2] — 2026-06-29
Added
- Marketing website deploy: static Next.js export served by nginx
(site/Dockerfile), published asghcr.io/ravencloak-org/tiny-siteby the
release workflow, and asiteservice in the prod compose (port 18080). - API and website split across hosts: site at
tiny.ravencloak.org, API at
tiny-api.ravencloak.org(first-level subdomain — Cloudflare Universal SSL
doesn't cover second-level likeapi.tiny.*).
[0.1.1] — 2026-06-29
Added
- One-click production stack
deploy/docker-compose.prod.yml(ClickHouse 26.3 +
Redis AOF + TinyRaven, health-gated, persistent volumes) for Dokploy Compose deploys. - Docker image now bakes the
examples/quickstartproject at/projectand
defaultsTR_PROJECT_DIR=/project, so a fresh deploy is queryable immediately. - Marketing site under
site/(Next.js + shadcn + Bklit charts): hero, features,
one-env-var migration, illustrative price comparison, real benchmark
(~177k events/s, p95 71ms — measured: 50 clients, batched, 1 node, 2.65M events
persisted to ClickHouse). - Deploy guide
docs/deploy/dokploy.md+ Cloudflare Tunnel config fortiny.ravencloak.org.
Changed
- Release image is single-arch
linux/amd64(x86) — dropped multi-arch/QEMU.
[0.1.0] — 2026-06-29
First release: a working, self-hosted, Tinybird-API-compatible analytics backend
over OSS ClickHouse. Covers MILESTONE Phases 1 (MVP ingestion + query) and 2 (API
publishing + deployment). Single tr binary = server + CLI.
Added — Phase 1 (MVP: core ingestion + query)
- HTTP server on
net/http+chirouter. POST /v0/events— JSON / NDJSON ingestion; per-row validate + quarantine
(ADR 0018);202 {successful_rows, quarantined_rows}ack-on-buffer (ADR 0004).GET /v0/pipes/{name}.json— parameterized SQL pipes via{{Type(name,default)}}
→ ClickHouse{name:Type}parameters, injection-proof (ADR 0003).GET /health(liveness) +GET /health/ready(Redis + ClickHouse, cached) — ADR 0024.- Gatherer: in-process batching, flush on
max(10,000 events, 5s), graceful drain. .datasourceparser (SCHEMA/ENGINE/ENGINE_* + structural validation, ADR 0008/0027)
→ Redis schema registry (ADR 0001 — Redis-only metadata, no Postgres)..pipeparser + in-memory pipe registry with atomic hot-reload swap (ADR 0020).- Bearer token auth middleware → Redis token store (ADR 0005).
tr local start→ Docker Compose (ClickHouse 26.3 LTS + Redis AOF + TinyRaven).- Dev hot reload on
.datasource/.pipechange (mtime poll).
Added — Phase 2 (API publishing + deployment)
tr deploy— validate all files, diff schema against livesystem.columns,
create mis...
v0.3.9
Changelog
All notable changes to TinyRaven are documented here. Format follows
Keep a Changelog; this project adheres to
Semantic Versioning.
[0.3.9] — 2026-07-01
Changed
- Benchmark section rebuilt to TinyRaven's own measured numbers: ingest throughput (1.51M events/s) + latency percentiles p50/p95/p99 (19.8 / 79 / 178 ms), measured locally (50 clients, batch 1000, 15s, 22.7M events). Dropped the illustrative Tinybird head-to-head — no vendor numbers we didn't measure.
[0.3.8] — 2026-07-01
Changed
/use-caseslive dashboard rebuilt on Bklit UI charts (verified locally before deploy): BklitBarChartfor top pages, BklitAreaChart(time-based x, fedDatevalues) for views over time. Removed the Recharts detour; fixed the@bklit/area-chartinstall'sshimmering-textimport path.
[0.3.7] — 2026-07-01
Fixed
/use-caseslive dashboard now uses Recharts instead of the bespoke visx chart set, whoseBarYAxisrendered category labels on the Y axis and overflowed the card. Clean fixed-height bar charts with numeric Y axis, dark tooltip, rounded bars.
[0.3.6] — 2026-07-01
Added
- CORS on the API (
Access-Control-Allow-Origin: *+ preflight short-circuit,internal/api/middleware.go) so browser dashboards can read pipe endpoints cross-origin — Tinybird parity (pipes are CORS-open for public read tokens; ADR 0025). Auth unchanged;*grants read visibility, not access. /use-casesnow renders a live dashboard: two visx charts (top pages, views over time) that fetch the demo pipes from prod in-browser on load. Replaces the static JSON receipt.
[0.3.5] — 2026-07-01
Added
- Live demo links on
/use-cases: clickable prod endpoints (tiny-api.ravencloak.org) backed by a read-only demo token (scopeREAD:top_pages,READ:views_over_time— 403 on anything else), returning real JSON from 300 seeded events. - Dashboards demo baked into the API image (
/project) so its pipes survive container redeploys; table + data persist in the ClickHouse volume, token in Redis AOF.
[0.3.4] — 2026-07-01
Fixed
- Marketing site nginx now serves Next static-export subroutes:
try_files $uri $uri.htmlreturns/use-cases.htmlfor/use-casesinstead of a dir 301 → 403 (the redirect also dropped https→http behind Cloudflare). Home page was unaffected.
[0.3.3] — 2026-07-01
Added
- Marketing site:
/use-casespage mapping TinyRaven to Tinybird's eight documented use cases with honest coverage badges (Live / Via ClickHouse / Partial) and a demonstrated user-facing-dashboards spotlight using real demo output. examples/dashboards-demo/: reproducible drop-in demo (Tinybird dashboards use case) —.datasource/.pipefiles,run.sh(Applecontainerlocal runtime), sample events, and verified receipts.
Fixed
- Nav section links now resolve from any route (
/#featuresform) and expose the new Use cases page.
Known issues
tr deploycannot bootstrap a missing target database (native client pins the session to it →UNKNOWN_DATABASE); pre-create the DB. See #71. Prod compose is unaffected (ClickHouse image createstr_main).
[0.3.2] — 2026-06-30
Changed
- Auto-deploy on release is now version-tagged via the Dokploy API (
compose.updateenv →compose.deploy) instead of a webhook on:latest. A version tag is a new image reference, so Dokploy pulls the new digest every time; the:latestwebhook recreated from cache and silently never updated.
[0.3.1] — 2026-06-30
Added
- API read endpoints toward full Tinybird
/v0parity:GET /v0/datasources,GET /v0/datasources/{name},GET /v0/pipes,GET /v0/pipes/{name}(all ADMIN), plus pipe output formatsGET /v0/pipes/{name}.{csv,ndjson}(READ-scoped) alongside the existing.json. - Distribution: signed APT + RPM repos published to GitHub Pages (
apt-get install tinyraven); GoReleaser Scoop/AUR/Nix/winget publisher blocks (fail-safe — push only when their token exists); install matrix +docs/install.md. docs/parity-gaps.mdranked/v0parity audit.
Changed
- Prod deploy model: image tags pinned to
latest; release builds:version+:latestthen triggers the Dokploy deploy webhook (pull_policy: alwaysrecreates on the new digest). Dokploy panel env is the documented source of truth. - APT/RPM gh-pages publish now does a scoped
rsync --deleteofapt/+rpm/(keep-2 pool prune actually removes old blobs);helm-publish+apt-publishshare a concurrency group to avoid gh-pages races.
Tests
internal/apierrandinternal/model0→100%;internal/pipe86.7→96% (error-envelope mapping,Token.HasScopeauth gate, registry hot-reload swap, control-flow branch + non-boolean-condition rejection).
Security
- Rotated the admin token (purged the old value from the Dokploy env and Redis
tr:token:).
[0.3.0] — 2026-06-30
Added
- Control-flow pipe templating:
{% if/elif/else/end %}+defined()via expr-lang (ADR 0003). - Resource-token materialization:
TOKEN "x" READ/APPENDin files → scoped tokens ontr deploy(ADR 0030). tr deploy --check(dry run),tr login,tr status.- Per-pipe
RATE_LIMITenforcement (token+pipe; ADR 0015);/tr/v1/docsUI (off by default,TR_DOCS_ENABLED; ADR 0017); dedicated read-only ClickHouse user (ADR 0011). - Release signing (GPG) + Helm chart published to GitHub Pages.
Changed
- ponytail cuts: strconv.Itoa over hand-rolled, merged CHPinger into Pinger, dropped dead Connector field.
[0.2.0] — 2026-06-29
Phases 3–5 + scoped auth + a query-path perf fix.
Added
- Branching (Phase 3):
tr_{branch}ClickHouse DB per git branch;tr deploy --branch/tr local start --branch. - Materialized views + breaking migrations (shadow → backfill →
EXCHANGE TABLES,--allow-breaking). - Config:
~/.tinyraven/config.yml(Tinybird-compatible) +TINYBIRD_HOST/TOKEN/WORKSPACEenv. - Connectors (Phase 5): Kafka/S3/PostgreSQL as ClickHouse-native engines in
.datasource(ADR 0019) + templates; BI-tool docs; load + query benchmarks (scripts/loadtest,scripts/querybench). - Distribution (Phase 4): GoReleaser (binaries/deb/rpm), Helm chart, Heroku/Railway/DO/AWS-CFN manifests, deploy docs.
- Scoped tokens:
tr token create/ls/rm; per-scope enforcement —READ:<pipe>,APPEND:<ds>,ADMIN, wildcards (ADR 0005). Frontends can hold a read-only pipe token. TR_PIPE_RATE_LIMIT(configurable per-token rate limit; 0 disables).
Changed / Fixed
- perf: tuned ClickHouse HTTP transport (
MaxIdleConnsPerHost: 512) — default (2) thrashed connections under load (p50 92ms + errors); pooled = ~19ms p50, ~0 errors (4–5×). Query latency now CH-bound: single-flight p50 ~1.8ms (CH ~0.35ms).
[0.1.2] — 2026-06-29
Added
- Marketing website deploy: static Next.js export served by nginx
(site/Dockerfile), published asghcr.io/ravencloak-org/tiny-siteby the
release workflow, and asiteservice in the prod compose (port 18080). - API and website split across hosts: site at
tiny.ravencloak.org, API at
tiny-api.ravencloak.org(first-level subdomain — Cloudflare Universal SSL
doesn't cover second-level likeapi.tiny.*).
[0.1.1] — 2026-06-29
Added
- One-click production stack
deploy/docker-compose.prod.yml(ClickHouse 26.3 +
Redis AOF + TinyRaven, health-gated, persistent volumes) for Dokploy Compose deploys. - Docker image now bakes the
examples/quickstartproject at/projectand
defaultsTR_PROJECT_DIR=/project, so a fresh deploy is queryable immediately. - Marketing site under
site/(Next.js + shadcn + Bklit charts): hero, features,
one-env-var migration, illustrative price comparison, real benchmark
(~177k events/s, p95 71ms — measured: 50 clients, batched, 1 node, 2.65M events
persisted to ClickHouse). - Deploy guide
docs/deploy/dokploy.md+ Cloudflare Tunnel config fortiny.ravencloak.org.
Changed
- Release image is single-arch
linux/amd64(x86) — dropped multi-arch/QEMU.
[0.1.0] — 2026-06-29
First release: a working, self-hosted, Tinybird-API-compatible analytics backend
over OSS ClickHouse. Covers MILESTONE Phases 1 (MVP ingestion + query) and 2 (API
publishing + deployment). Single tr binary = server + CLI.
Added — Phase 1 (MVP: core ingestion + query)
- HTTP server on
net/http+chirouter. POST /v0/events— JSON / NDJSON ingestion; per-row validate + quarantine
(ADR 0018);202 {successful_rows, quarantined_rows}ack-on-buffer (ADR 0004).GET /v0/pipes/{name}.json— parameterized SQL pipes via{{Type(name,default)}}
→ ClickHouse{name:Type}parameters, injection-proof (ADR 0003).GET /health(liveness) +GET /health/ready(Redis + ClickHouse, cached) — ADR 0024.- Gatherer: in-process batching, flush on
max(10,000 events, 5s), graceful drain. .datasourceparser (SCHEMA/ENGINE/ENGINE_* + structural validation, ADR 0008/0027)
→ Redis schema registry (ADR 0001 — Redis-only metadata, no Postgres)..pipeparser + in-memory pipe registry with atomic hot-reload swap (ADR 0020).- Bearer token auth middleware → Redis token store (ADR 0005).
tr local start→ Docker Compose (ClickHouse 26.3 LTS + Redis AOF + TinyRaven).- Dev hot reload on
.datasource/.pipechange (mtime poll).
Added — Phase 2 (API publishing + deployment)
tr deploy— validate all files, diff schema against livesystem.columns,
create missing tables, apply additiveALTER TABLE ADD COLUMN; breaking changes
detected and refused (shadow-table/EXCHANGEdeferred to Phase 3, ADR 0007).- Full pipe param types:
String,DateTime,Int64,Float64,UUID,
Boolean(+Int32,Date,DateTime64) — validated + normalized, 400 on bad input. GET /v0/sql— read-only ClickHouse SQL proxy (readonly=2+ caps, ADR 0011).GET /v0/metrics— Prometheus exp...
v0.3.8
Changelog
All notable changes to TinyRaven are documented here. Format follows
Keep a Changelog; this project adheres to
Semantic Versioning.
[0.3.8] — 2026-07-01
Changed
/use-caseslive dashboard rebuilt on Bklit UI charts (verified locally before deploy): BklitBarChartfor top pages, BklitAreaChart(time-based x, fedDatevalues) for views over time. Removed the Recharts detour; fixed the@bklit/area-chartinstall'sshimmering-textimport path.
[0.3.7] — 2026-07-01
Fixed
/use-caseslive dashboard now uses Recharts instead of the bespoke visx chart set, whoseBarYAxisrendered category labels on the Y axis and overflowed the card. Clean fixed-height bar charts with numeric Y axis, dark tooltip, rounded bars.
[0.3.6] — 2026-07-01
Added
- CORS on the API (
Access-Control-Allow-Origin: *+ preflight short-circuit,internal/api/middleware.go) so browser dashboards can read pipe endpoints cross-origin — Tinybird parity (pipes are CORS-open for public read tokens; ADR 0025). Auth unchanged;*grants read visibility, not access. /use-casesnow renders a live dashboard: two visx charts (top pages, views over time) that fetch the demo pipes from prod in-browser on load. Replaces the static JSON receipt.
[0.3.5] — 2026-07-01
Added
- Live demo links on
/use-cases: clickable prod endpoints (tiny-api.ravencloak.org) backed by a read-only demo token (scopeREAD:top_pages,READ:views_over_time— 403 on anything else), returning real JSON from 300 seeded events. - Dashboards demo baked into the API image (
/project) so its pipes survive container redeploys; table + data persist in the ClickHouse volume, token in Redis AOF.
[0.3.4] — 2026-07-01
Fixed
- Marketing site nginx now serves Next static-export subroutes:
try_files $uri $uri.htmlreturns/use-cases.htmlfor/use-casesinstead of a dir 301 → 403 (the redirect also dropped https→http behind Cloudflare). Home page was unaffected.
[0.3.3] — 2026-07-01
Added
- Marketing site:
/use-casespage mapping TinyRaven to Tinybird's eight documented use cases with honest coverage badges (Live / Via ClickHouse / Partial) and a demonstrated user-facing-dashboards spotlight using real demo output. examples/dashboards-demo/: reproducible drop-in demo (Tinybird dashboards use case) —.datasource/.pipefiles,run.sh(Applecontainerlocal runtime), sample events, and verified receipts.
Fixed
- Nav section links now resolve from any route (
/#featuresform) and expose the new Use cases page.
Known issues
tr deploycannot bootstrap a missing target database (native client pins the session to it →UNKNOWN_DATABASE); pre-create the DB. See #71. Prod compose is unaffected (ClickHouse image createstr_main).
[0.3.2] — 2026-06-30
Changed
- Auto-deploy on release is now version-tagged via the Dokploy API (
compose.updateenv →compose.deploy) instead of a webhook on:latest. A version tag is a new image reference, so Dokploy pulls the new digest every time; the:latestwebhook recreated from cache and silently never updated.
[0.3.1] — 2026-06-30
Added
- API read endpoints toward full Tinybird
/v0parity:GET /v0/datasources,GET /v0/datasources/{name},GET /v0/pipes,GET /v0/pipes/{name}(all ADMIN), plus pipe output formatsGET /v0/pipes/{name}.{csv,ndjson}(READ-scoped) alongside the existing.json. - Distribution: signed APT + RPM repos published to GitHub Pages (
apt-get install tinyraven); GoReleaser Scoop/AUR/Nix/winget publisher blocks (fail-safe — push only when their token exists); install matrix +docs/install.md. docs/parity-gaps.mdranked/v0parity audit.
Changed
- Prod deploy model: image tags pinned to
latest; release builds:version+:latestthen triggers the Dokploy deploy webhook (pull_policy: alwaysrecreates on the new digest). Dokploy panel env is the documented source of truth. - APT/RPM gh-pages publish now does a scoped
rsync --deleteofapt/+rpm/(keep-2 pool prune actually removes old blobs);helm-publish+apt-publishshare a concurrency group to avoid gh-pages races.
Tests
internal/apierrandinternal/model0→100%;internal/pipe86.7→96% (error-envelope mapping,Token.HasScopeauth gate, registry hot-reload swap, control-flow branch + non-boolean-condition rejection).
Security
- Rotated the admin token (purged the old value from the Dokploy env and Redis
tr:token:).
[0.3.0] — 2026-06-30
Added
- Control-flow pipe templating:
{% if/elif/else/end %}+defined()via expr-lang (ADR 0003). - Resource-token materialization:
TOKEN "x" READ/APPENDin files → scoped tokens ontr deploy(ADR 0030). tr deploy --check(dry run),tr login,tr status.- Per-pipe
RATE_LIMITenforcement (token+pipe; ADR 0015);/tr/v1/docsUI (off by default,TR_DOCS_ENABLED; ADR 0017); dedicated read-only ClickHouse user (ADR 0011). - Release signing (GPG) + Helm chart published to GitHub Pages.
Changed
- ponytail cuts: strconv.Itoa over hand-rolled, merged CHPinger into Pinger, dropped dead Connector field.
[0.2.0] — 2026-06-29
Phases 3–5 + scoped auth + a query-path perf fix.
Added
- Branching (Phase 3):
tr_{branch}ClickHouse DB per git branch;tr deploy --branch/tr local start --branch. - Materialized views + breaking migrations (shadow → backfill →
EXCHANGE TABLES,--allow-breaking). - Config:
~/.tinyraven/config.yml(Tinybird-compatible) +TINYBIRD_HOST/TOKEN/WORKSPACEenv. - Connectors (Phase 5): Kafka/S3/PostgreSQL as ClickHouse-native engines in
.datasource(ADR 0019) + templates; BI-tool docs; load + query benchmarks (scripts/loadtest,scripts/querybench). - Distribution (Phase 4): GoReleaser (binaries/deb/rpm), Helm chart, Heroku/Railway/DO/AWS-CFN manifests, deploy docs.
- Scoped tokens:
tr token create/ls/rm; per-scope enforcement —READ:<pipe>,APPEND:<ds>,ADMIN, wildcards (ADR 0005). Frontends can hold a read-only pipe token. TR_PIPE_RATE_LIMIT(configurable per-token rate limit; 0 disables).
Changed / Fixed
- perf: tuned ClickHouse HTTP transport (
MaxIdleConnsPerHost: 512) — default (2) thrashed connections under load (p50 92ms + errors); pooled = ~19ms p50, ~0 errors (4–5×). Query latency now CH-bound: single-flight p50 ~1.8ms (CH ~0.35ms).
[0.1.2] — 2026-06-29
Added
- Marketing website deploy: static Next.js export served by nginx
(site/Dockerfile), published asghcr.io/ravencloak-org/tiny-siteby the
release workflow, and asiteservice in the prod compose (port 18080). - API and website split across hosts: site at
tiny.ravencloak.org, API at
tiny-api.ravencloak.org(first-level subdomain — Cloudflare Universal SSL
doesn't cover second-level likeapi.tiny.*).
[0.1.1] — 2026-06-29
Added
- One-click production stack
deploy/docker-compose.prod.yml(ClickHouse 26.3 +
Redis AOF + TinyRaven, health-gated, persistent volumes) for Dokploy Compose deploys. - Docker image now bakes the
examples/quickstartproject at/projectand
defaultsTR_PROJECT_DIR=/project, so a fresh deploy is queryable immediately. - Marketing site under
site/(Next.js + shadcn + Bklit charts): hero, features,
one-env-var migration, illustrative price comparison, real benchmark
(~177k events/s, p95 71ms — measured: 50 clients, batched, 1 node, 2.65M events
persisted to ClickHouse). - Deploy guide
docs/deploy/dokploy.md+ Cloudflare Tunnel config fortiny.ravencloak.org.
Changed
- Release image is single-arch
linux/amd64(x86) — dropped multi-arch/QEMU.
[0.1.0] — 2026-06-29
First release: a working, self-hosted, Tinybird-API-compatible analytics backend
over OSS ClickHouse. Covers MILESTONE Phases 1 (MVP ingestion + query) and 2 (API
publishing + deployment). Single tr binary = server + CLI.
Added — Phase 1 (MVP: core ingestion + query)
- HTTP server on
net/http+chirouter. POST /v0/events— JSON / NDJSON ingestion; per-row validate + quarantine
(ADR 0018);202 {successful_rows, quarantined_rows}ack-on-buffer (ADR 0004).GET /v0/pipes/{name}.json— parameterized SQL pipes via{{Type(name,default)}}
→ ClickHouse{name:Type}parameters, injection-proof (ADR 0003).GET /health(liveness) +GET /health/ready(Redis + ClickHouse, cached) — ADR 0024.- Gatherer: in-process batching, flush on
max(10,000 events, 5s), graceful drain. .datasourceparser (SCHEMA/ENGINE/ENGINE_* + structural validation, ADR 0008/0027)
→ Redis schema registry (ADR 0001 — Redis-only metadata, no Postgres)..pipeparser + in-memory pipe registry with atomic hot-reload swap (ADR 0020).- Bearer token auth middleware → Redis token store (ADR 0005).
tr local start→ Docker Compose (ClickHouse 26.3 LTS + Redis AOF + TinyRaven).- Dev hot reload on
.datasource/.pipechange (mtime poll).
Added — Phase 2 (API publishing + deployment)
tr deploy— validate all files, diff schema against livesystem.columns,
create missing tables, apply additiveALTER TABLE ADD COLUMN; breaking changes
detected and refused (shadow-table/EXCHANGEdeferred to Phase 3, ADR 0007).- Full pipe param types:
String,DateTime,Int64,Float64,UUID,
Boolean(+Int32,Date,DateTime64) — validated + normalized, 400 on bad input. GET /v0/sql— read-only ClickHouse SQL proxy (readonly=2+ caps, ADR 0011).GET /v0/metrics— Prometheus exposition viaprometheus/client_golang.GET /v0/openapi.json— runtime OpenAPI 3.0 spec from the pipe registry (ADR 0017).- Per-token rate limiting — in-memory
httpratesliding window (ADR 0015). - Query observability —
pipe_statstable fed by a non-blocking background
flusher (ADR 0014). - Tinybird-compatible error envelope `{"error...