v1 local file ingestion is now the default

Tinybird CLI 4.6.14 for Forward and 6.5.6 for Classic now use the v1 import flow by default when appending or replacing a Data Source from a local CSV, NDJSON, or Parquet file. The --experimental=use_v1 option is no longer required.

Forward CLI 4.6.14 returns the queued job ID by default. Pass --wait to wait for completion. Classic CLI 6.5.6 waits for completion by default. Pass --no-wait to return the queued job ID immediately. tb datasource append --events also uses the v1 import flow. Imports from remote URLs keep their existing behavior.

The Tinybird UI and Tinybird Local now use the same v1 flow for local file append and replace operations.

This requires the latest Tinybird Local version because local v1 imports depend on the newer append and replace endpoints.

Conditional TTLs

Data Source deployments now support conditional TTL rules, including multiple rules and DELETE WHERE conditions. TTL validation uses ClickHouse® syntax directly, so ENGINE_TTL accepts the same expressions as ClickHouse®. You can now do things like:

ENGINE_TTL "ts + INTERVAL 6 MONTH WHERE client_id != 'long-ttl-client', ts + INTERVAL 1 YEAR WHERE client_id = 'long-ttl-client'"

Live data-movement progress for deployments

Forward deployment pages now include a Data movements tab when a deployment requires a backfill. It shows each affected Data Source, its current status, elapsed or estimated time, and progress. Deployment and job status update automatically while work is running.

Unified job type for deployment backfills

Deployment backfills now log with job_type = 'deployment_backfill' regardless of how they move the data.

Until now, backfills that ran as a populate were logged as job_type = 'populate', with no metadata linking them to the deployment that triggered them.

Now all backfills log the same way in tinybird.jobs_log and tinybird.datasources_ops_log, including deployment_id and deployment_job_id in job_metadata, so you can tie every backfill back to its deployment.

Rows written before this change keep their original job type. To find old and new deployment backfills in the same query, filter on both:

SELECT *
FROM tinybird.jobs_log
WHERE job_type IN ('populate', 'deployment_backfill')

Updated Tinybird agent skills

The Tinybird agent skills now guide coding agents to parse JSON once when extracting several fields in a Materialized View, instead of parsing the same payload once per field.

The skills also recommend aligning partition granularity with Data Source TTL windows and using ttl_only_drop_parts=1 when appropriate, allowing ClickHouse® to drop complete expired parts instead of rewriting partially expired ones.

Organization info available to all users

Organization visibility is no longer limited to admins. Every member of an Organization can now see the Overview, Logs, Observability, Workspaces, Members, and Managed regions pages, so the whole team gets the same picture without asking an admin for access.

Admin-only actions stay protected: managing the cluster, viewing Billing, and adding, removing, or changing member roles in Workspaces they don't administer.

Improvements and bug fixes

  • [All]: Data Source creation no longer selects Tuple or Map columns as inferred sorting keys. Schemas containing only composite columns now fall back to ORDER BY tuple() instead of failing to create the table.
  • [All]: Strict NDJSON ingestion now handles compatible named objects for Map(String, T) columns, including numeric and nullable value types.
  • [All]: Organization observability charts now use the same color for each replica in cluster load and memory charts as in the replicas table.
  • [All]: You can now use do_not_merge_across_partitions_select_final as a query setting. When querying with FINAL, this setting merges parts only within each partition, which can speed up queries on well-partitioned Data Sources.
  • [Forward]: Tinybird CLI 4.6.14 fixes tb migrate-to-forward so it finds and offers to delete all Classic branches before migration, including branches not created by the user running the command.