Skip to main content

rill-rillyaml

Detailed instructions and examples for developing the rill.yaml file

Datos de origen

Repositorio
rilldata/agent-skills
Última actividad en el origen
26 de septiembre de 2026 a las 08:00
Idioma detectado de SKILL.md
inglés
Estrellas
0
Forks
1

Opciones de instalación

De forma predeterminada está seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Mostrando SKILL.md

SKILL.md
Instrucciones de origen · Vista previa de solo lectura
name
rill-rillyaml
description
Detailed instructions and examples for developing the rill.yaml file
# Instructions for developing `rill.yaml` ## Introduction `rill.yaml` is a required configuration file located at the root of every Rill project. It defines project-wide settings, similar to `package.json` in Node.js or `dbt_project.yml` in dbt. ## Core Concepts ### Project metadata There are no required properties in `rill.yaml`, but it is common to configure: - `display_name`: Human-readable name shown in the UI - `description`: Brief description of the project's purpose - `compiler`: Deprecated property that is commonly found in old projects ### Default OLAP connector The `olap_connector` property sets the default OLAP database for the project. Models output to this connector by default, and metrics views query from it unless explicitly overridden. Common values are `duckdb` or `clickhouse`. If not specified, Rill initializes a managed DuckDB database and uses it as the default OLAP connector. ### Default AI connector The `ai_connector` property selects the connector powering AI features (developer agent, AI charts, chat). Point it to an AI connector defined in the project, such as `openai`, `claude`, or `gemini`. Defaults to Rill's built-in AI service. ### Mock users for security testing The `mock_users` property defines test users for validating security policies during local development. Each mock user can have: - `email` (required): The user's email address - `name`: Display name - `admin`: Boolean indicating admin privileges - `groups`: List of group memberships - Custom attributes for use in security policy expressions When mock users are defined and security policies exist, a "View as" dropdown appears in the dashboard preview. ### Environment variables The `env` property sets default values for non-sensitive variables. These can be referenced in resource files using templating syntax (`{{ .env.<variable> }}`). Sensitive secrets should go in `.env` instead. ### Resource type defaults Project-wide defaults can be set for resource types using plural keys: - `models`: Default settings for all models (e.g., refresh schedules) - `metrics_views`: Default settings for all metrics views (e.g., `first_day_of_week`) - `explores`: Default settings for explore dashboards (e.g., `time_ranges`, `time_zones`) - `canvases`: Default settings for canvas dashboards Individual resources can override these defaults. ### Path management - `ignore_paths`: List of paths to exclude from parsing (use leading `/`) - `public_paths`: List of paths to expose over HTTP (defaults to `['./public']`) ### Environment overrides The `dev` and `prod` properties allow environment-specific configuration overrides. ## Minimal Example A minimal `rill.yaml` for a new project: ```yaml display_name: My Analytics Project ``` ## Complete Example A comprehensive `rill.yaml` demonstrating common configurations: ```yaml display_name: Sales Analytics description: Sales performance dashboards with partner access controls olap_connector: duckdb # Use a project-defined Claude connector to power AI features ai_connector: claude # Non-sensitive environment variables env: default_lookback: P30D data_bucket: gs://my-company-data # Mock users for testing security policies locally mock_users: - email: admin@mycompany.com name: Admin User admin: true - email: partner@external.com groups: - partners - email: viewer@mycompany.com tenant_id: xyz # Project-wide defaults for models models: refresh: cron: 0 0 * * * # Project-wide defaults for metrics views metrics_views: smallest_time_grain: day # Project-wide defaults for explore dashboards explores: defaults: time_range: P3M time_zones: - UTC - America/New_York - Europe/London time_ranges: - PT24H - P7D - P30D - P3M - P12M # Exclude non-Rill files from parsing ignore_paths: - /docs ``` ## Reference documentation Here is a full JSON schema for the `rill.yaml` syntax: ``` $schema: http://json-schema.org/draft-07/schema# allOf: - properties: ai_connector: description: Specifies the default AI connector for the project. Defaults to Rill's internal AI connector if not set. type: string ai_instructions: description: Extra instructions for LLM/AI features. Used to guide natural language question answering and routing. type: string ai_prompts: description: Suggested prompts shown as starters in the project-wide AI chat, and on dashboards that have no `ai_prompts` of their own. Each entry is either a prompt string or an object with `label` and `prompt`. At most 8 distinct entries. items: oneOf: - description: The prompt. A short label is derived from its first words. type: string - additionalProperties: false description: A prompt with an explicit label. properties: label: description: Short label shown on the prompt's button (at most 40 characters). Derived from the prompt if omitted. type: string prompt: description: The full question sent to the AI when the user picks the prompt. type: string required: - prompt type: object type: array compiler: description: Specifies the parser version to use for compiling resources type: string description: description: A brief description of the project type: string display_name: description: The display name of the project, shown in the upper-left corner of the UI type: string features: description: Optional feature flags. Can be specified as a map of feature names to booleans. type: object title: Properties type: object - description: | Rill allows you to specify the default OLAP engine to use in your project via `rill.yaml`. :::info Curious about OLAP Engines? Please see our reference documentation on [OLAP Engines](/developers/build/connectors/olap). ::: properties: olap_connector: description: Specifies the default OLAP engine for the project. Defaults to duckdb if not set. examples: - olap_connector: clickhouse type: string title: Configuring the default OLAP Engine type: object - description: | In `rill.yaml`, project-wide defaults can be specified for a resource type within a project. Unless otherwise specified, _individual resources will inherit any defaults_ that have been specified in `rill.yaml`. For available properties that can be configured, please refer to the YAML specification for each individual resource type - [model](models.md), [metrics_view](metrics-views.md), and [explore](explore-dashboards.md) :::note Use plurals when specifying project-wide defaults In your `rill.yaml`, the top-level property for the resource type needs to be **plural**, such as `models`, `metrics_views`, and `explores`. ::: :::info Hierarchy of inheritance and property overrides As a general rule of thumb, properties that have been specified at a more _granular_ level will supersede or override higher-level properties that have been inherited. Therefore, in order of inheritance, Rill will prioritize properties in the following order: 1. Individual [models](models.md)/[metrics_views](metrics-views.md)/[explore](explore-dashboards.md) object-level properties (e.g. `models.yaml` or `explore-dashboards.yaml`) 2. [Environment](/developers/build/models/templating) level properties (e.g. a specific property that has been set for `dev`) 3. [Project-wide defaults](#project-wide-defaults) for a specific property and resource type ::: properties: canvases: description: Defines project-wide default settings for canvases. Unless overridden, individual canvases will inherit these defaults. examples: - canvases: defaults: time_range: P7D time_ranges: - PT24H - P7D time_zones: - UTC explores: defaults: time_range: P24M time_ranges: - PT24H - P6M time_zones: - UTC metrics_views: first_day_of_week: 1 smallest_time_grain: month models: refresh: cron: 0 * * * * type: object explores: description: Defines project-wide default settings for explores. Unless overridden, individual explores will inherit these defaults. type: object metrics_views: description: Defines project-wide default settings for metrics_views. Unless overridden, individual metrics_views will inherit these defaults. type: object models: description: Defines project-wide default settings for models. Unless overridden, individual models will inherit these defaults. type: object title: Project-wide defaults type: object - description: | Primarily useful for [templating](/developers/build/connectors/templating), variables can be set in the `rill.yaml` file directly. This allows variables to be set for your projects deployed to Rill Cloud while still being able to use different variable values locally if you prefer. :::info Overriding variables locally Variables also follow an order of precedence and can be overridden locally. By default, any variables defined will be inherited from `rill.yaml`. However, if you manually pass in a variable when starting Rill Developer locally via the CLI, this value will be used instead for the current instance of your running project: ```bash rill start --env numeric_var=100 --env string_var="different_value" ``` ::: :::tip Setting variables through `.env` Variables can also be set through your project's `<RILL_PROJECT_HOME>/.env` file (or using the `rill env set` CLI command), such as: ```bash variable=xyz ``` Similar to how [connector credentials can be pushed / pulled](/developers/build/connectors/credentials#pulling-credentials-and-variables-from-a-deployed-project-on-rill-cloud) from local to cloud or vice versa, project variables set locally in Rill Developer can be pushed to Rill Cloud and/or pulled back to your local instance from your deployed project by using the `rill env push` and `rill env pull` commands respectively. ::: properties: env: description: | A map of key-value pairs for setting variables on your project. It accepts both user-defined variables (for use with templating) and reserved `rill.*` keys that configure project-wide settings. The full set of reserved keys is listed below. examples: - env: foo: bar rill.interactive_sql_row_limit: 5000 properties: rill.ai.completion_timeout_seconds: description: 'Maximum duration of a full AI completion request (which may include multiple LLM calls and tool uses), in seconds. Default: 300.' type: integer rill.ai.default_query_limit: description: 'Default row limit applied to AI tool queries when no limit is specified. Default: 25.' type: integer rill.ai.llm_timeout_seconds: description: 'Maximum duration of a single LLM completion request, in seconds. Default: 180. Note: when using Rill''s hosted AI service (i.e. not a self-configured LLM), the admin server enforces a hard upper bound of 10 minutes, so values above that have no effect.' type: integer rill.ai.max_query_limit: description: 'Maximum row limit allowed for AI tool queries. Default: 250.' type: integer rill.ai.max_time_range_days: description: 'Maximum time range allowed for AI tool queries, in days. Set to 0 for no limit. Default: 0.' type: integer rill.ai.require_time_range: description: 'Require AI tool queries to include a time range filter; reject queries without one. Default: true.' type: boolean rill.alerts.default_streaming_refresh_cron: description: 'Default cron expression for refreshing alerts that depend on streaming refs (for example, external tables in Druid where new data may arrive at any time). Default: `0 0 * * *` (every 24 hours).' type: string rill.alerts.fast_streaming_refresh_cron: description: 'Cron expression for refreshing streaming alerts on always-on OLAP connectors. Default: `*/10 * * * *` (every 10 minutes).' type: string rill.download_limit_bytes: description: 'Limit on the size of an exported file, in bytes. Default: 134217728 (128 MB).' type: integer rill.interactive_sql_row_limit: description: 'Row limit for interactive SQL queries; does not apply to SQL exports. Default: 10000.' type: integer rill.metrics.approximate_comparisons: description: 'Rewrite metrics comparison queries to use an approximate, faster form. Approximate comparisons may not return data points for all values. Default: true.' type: boolean rill.metrics.approximate_comparisons_cte: description: 'Rewrite metrics comparison queries to use a CTE for the base query. Default: false.' type: boolean rill.metrics.approximate_comparisons_two_phase_limit: description: 'Row-limit threshold under which metrics comparison queries use a two-phase strategy (base values first, comparison values second). Default: 250.' type: integer rill.metrics.druid_mvd_filtered_group_by: description: 'Narrow unnested (multi-value) dimensions to the filtered values when grouping in Druid, so results contain only the filtered values rather than every value co-occurring in matching rows. Default: false.' type: boolean rill.metrics.druid_mvd_filtered_search: description: 'Extends rill.metrics.druid_mvd_filtered_group_by to dimension search (ILIKE filters) using MV_FILTER_REGEX, so search results contain only values matching the search text. Requires Druid 35.0.0 or newer. Default: false.' type: boolean rill.metrics.exactify_druid_topn: description: 'Split Druid TopN queries into two queries to improve measure accuracy, at the cost of performance. Default: false.' type: boolean rill.metrics.timeseries_null_filling_implementation: description: 'Null-filling implementation for timeseries queries. One of `none`, `new`, or `pushdown`. Default: `pushdown`.' type: string rill.model.partitions_warn_on_failure: description: 'When true, partition execution failures are surfaced as non-blocking warnings instead of errors. Default: true in `prod`, false otherwise.' type: boolean rill.model.tests_warn_on_failure: description: 'When true, model test failures are surfaced as non-blocking warnings instead of errors. Default: true in `prod`, false otherwise.' type: boolean rill.model.timeout_override: description: 'Timeout for model reconciliation in seconds, used in validation mode. Default: 0 (no override).' type: integer rill.models.concurrent_execution_limit: description: 'Maximum number of concurrent model executions. Default: 5.' type: integer rill.models.default_materialize: description: 'Materialize models as tables by default instead of views. Default: false.' type: boolean rill.models.disable: description: 'When true, model execution is disabled. Useful for stopping any ingestion in Rill temporarily. Default: false.' type: boolean rill.models.materialize_delay_seconds: description: 'Delay before materializing models, in seconds. Default: 0.' type: integer rill.parser.skip_updates_if_parse_errors: description: 'Short-circuit project parser reconciliation when parse errors exist. Default: false.' type: boolean rill.strict_model_properties: description: 'Return an error when a model contains unmapped properties. Default: false.' type: boolean rill.strict_resolver_properties: description: 'Return an error when a resolver contains properties not recognized by its implementation. Default: false.' type: boolean type: object title: Setting variables type: object - description: | The public_paths and ignore_paths properties in the rill.yaml file provide control over which files and directories are processed or exposed by Rill. The public_paths property defines a list of file or directory paths to expose over HTTP. By default, it includes ['./public']. The ignore_paths property specifies a list of files or directories that Rill excludes during ingestion and parsing. This prevents unnecessary or incompatible content from affecting the project. :::tip Don't forget the leading `/` when specifying the path for `ignore_paths`. This path is relative to your project root. ::: properties: ignore_paths: description: A list of file or directory paths to exclude from parsing. Useful for ignoring extraneous or non-Rill files in the project examples: - ignore_paths: - /path/to/ignore - /file_to_ignore.yaml items: type: string type: array public_paths: description: List of file or directory paths to expose over HTTP. Defaults to ['./public'] items: type: string type: array title: Managing Paths in Rill type: object - description: | During development, it is always a good idea to check if your [access policies](/developers/build/metrics-view/security) are behaving the way you designed them to before pushing these changes into production. You can set mock users, which enables a drop-down in the dashboard preview to view as a specific user. :::info The View as selector is not visible in my dashboard, why? This feature is _only_ enabled when you have set a security policy on the dashboard. By default, the dashboard and its contents are viewable by every user. ::: properties: mock_users: description: A list of mock users used to test dashboard security policies within the project examples: - mock_users: - admin: true email: john@yourcompany.com name: John Doe - email: jane@partnercompany.com groups: - partners - email: anon@unknown.com - custom_variable_1: Value_1 custom_variable_2: Value_2 email: embed@rilldata.com name: embed items: properties: admin: description: Indicates whether the mock user has administrative privileges type: boolean email: description: The email address of the mock user. This field is required type: string groups: description: An array of group names that the mock user is a member of items: type: string type: array name: description: The name of the mock user. type: string required: - email type: object type: array title: Testing access policies type: object - properties: dev: description: Overrides any properties in development environment. type: object prod: description: Overrides any properties in production environment. type: object title: Common Properties type: object description: The `rill.yaml` file contains metadata about your project. id: rill-yaml.schema.yaml title: Project YAML type: object ```
Ver en GitHub