Agent skills

The Tinybird agent skills were reorganized into three focused skills with clearer naming. Deep endpoint optimization rules were merged into a single endpoint-optimization.md file for easier consumption by AI coding assistants.

Installing Tinybird agent skills with npx skills add, showing the three available skills: tinybird, tinybird-cli-guidelines, and tinybird-typescript-sdk-guidelines

Branches and connectors

Start and stop Kafka ingestion

New CLI commands let you pause and resume Kafka ingestion in Forward branches:

tb --branch <branch-name> datasource stop my_kafka_source
tb --branch <branch-name> datasource start my_kafka_source

When you stop a Kafka Data Source, ingestion pauses immediately. When you start it again, the consumer skips any messages that accumulated while stopped and resumes from the latest offset. This prevents a flood of backlogged messages when you bring the connection back online.

The same functionality is available via API:

curl -X POST "https://api.tinybird.co/v0/datasources/my_kafka_source/stop" \
  -H "Authorization: Bearer $TOKEN"

curl -X POST "https://api.tinybird.co/v0/datasources/my_kafka_source/start" \
  -H "Authorization: Bearer $TOKEN"

Requires CLI 3.3.0.

Sample import for S3 and GCS connections

A new API endpoint lets you import sample data from S3 or GCS connections in Forward branches. Import a small sample to validate your schema and transformations before deploying to production.

curl -X POST "https://api.tinybird.co/v0/datasources/my_s3_source/sample" \
  -H "Authorization: Bearer $TOKEN"

--with-connections flag is now stable

The --with-connections flag for tb build and tb dev commands is now stable. Previously experimental, this flag enables connection-based Data Sources (S3, Kafka, GCS) in branches. Requires CLI 3.3.0.

More ClickHouse® settings

Query settings

You can now pass query-level settings to control execution behavior:

  • max_threads
  • max_memory_usage
  • max_execution_time
  • use_skip_indexes
  • optimize_move_to_prewhere
  • query_plan_optimize_lazy_materialization
  • min_bytes_to_use_direct_io
  • enable_filesystem_cache
  • use_query_cache

Table settings

At the table level, you can now set merge behavior via ENGINE_SETTINGS in your .datasource files:

  • min_age_to_force_merge_seconds
  • min_age_to_force_merge_on_partition_only
  • enable_replacing_merge_with_cleanup_for_min_age_to_force_merge

For example, to force cleanup merges on a ReplacingMergeTree after 10 seconds:

ENGINE "ReplacingMergeTree"
ENGINE_SORTING_KEY "id"
ENGINE_SETTINGS "min_age_to_force_merge_seconds=10,enable_replacing_merge_with_cleanup_for_min_age_to_force_merge=1"

More settings will be available in future releases. If there's a specific setting you need, reach out to support.

Action details in Explain

The Explain panel now includes an option to show action details. Enable "Include action details" to see the physical operations ClickHouse performs when executing your query, including read ranges, projections used, and prewhere optimizations.

This corresponds to the actions=1 setting in ClickHouse's EXPLAIN statement. Available in both Classic and Forward, and also via the Query API using the explain_settings parameter.

Explain panel showing action details with read ranges, projections, and prewhere optimizations

Deployment improvements

Safer deployments

Deployments got a series of reliability improvements for Workspaces with Copy Pipes and Sink Pipes.

  • Copy Pipes keep running during deployments. They are no longer blocked while a deployment is in progress.
  • Data replicated by Copy Pipes stays consistent between the live and staging versions of your Data Sources during promotion.
  • Sink Pipes are updated incrementally. Only sinks that actually changed are touched during promotion, leaving the rest undisrupted.

Smarter deployment diffs

Deployment diffs now ignore cosmetic changes that don't affect behavior:

  • Blank lines in SQL: Adding or removing blank lines in a Pipe's SQL no longer triggers a diff.
  • Indentation in descriptions: Whitespace changes in Data Source or Pipe descriptions are ignored.
  • Templated parameter indentation: Pipes with templated parameters no longer show false diffs after tb pull.

These changes reduce noise in your deployment previews and prevent unnecessary redeployments.

TypeScript SDK

The TypeScript SDK got a big batch of updates this week.

JWT token creation: Create JWT tokens programmatically from the SDK. Useful for generating scoped tokens for frontend clients or third-party integrations.

Data Source operations: New datasources.append method for importing data from a URL or file. New datasources.delete and datasources.truncate APIs for managing Data Source lifecycle.

Region selection: The init and login commands now let you pick a region, with your current region pre-selected. Regions are sorted by provider (GCP first, then AWS).

New CLI commands:

  • info: Shows details about your current Workspace, branch, and configuration.
  • open: Opens the Tinybird dashboard in your browser.
  • preview: Generates preview branch tokens for CI/CD workflows.
  • --branch flag for build: Build against a specific branch.

Config file support: Projects can now use tinybird.config.ts, tinybird.config.js, or tinybird.config.json instead of .tinyb. TypeScript configs are loaded via esbuild.

Deploy improvements: The deploy command now shows a resource changes table and progress output matching the Python CLI style.

MCP server: The MCP server (@tinybirdco/devtools-mcp) gained login, build, list_branches, list_resources, and get_resource tools. It also supports the TINYBIRD_TOKEN environment variable directly.

SDK API surface: Pipes and SQL are now exposed as top-level project client entities. The TinybirdApi wrapper is publicly available with generic type parameters. SHARED_WITH is supported in the Data Source generator.

Bug fixes and improvements

  • [Forward]: Playground parameter values are now correctly passed to the Explain panel. Previously, the panel used default values instead of the values you set in the parameter bar.
  • [Forward]: Tab key now completes autocomplete suggestions in the Time Series SQL editor when the dropdown is open.
  • [Forward]: Deleting a shared Playground as a non-owner now returns a 403 Forbidden status code instead of an unhandled error.
  • [Forward]: Accessing a Playground you're not a member of now returns 404 instead of an error.
  • [Forward]: Deleting a Forward Workspace now correctly cleans up all associated branches.
  • [Classic]: Fixed duplicate query IDs in Time Series requests.
  • [All]: Fixed query overflow in the CodeMirror editor. Horizontal scrolling now works correctly for long queries.
  • [CLI]: tb pull no longer adds a spurious TYPE ENDPOINT line to legacy Pipes.

From the blog

How We Built Time Series: A technical deep-dive into the SQL patterns behind Time Series visualizations. Filling time gaps with arrayJoin, adaptive granularity selection, and how we use Time Series to debug our own alerts.