Variables Reference
Applications ask rototo for variables. A variable gives a name to one runtime configuration decision: which value should this request, account, or service state receive from this workspace version?
Variable files live under variables/*.toml. The file stem is the variable id.
Minimal Primitive Variable
schema_version = 1
description = "Maximum active projects for an account"
type = "int"
[values]
standard = 3
expanded = 25
[resolve]
default = "standard"
[[resolve.rule]]
qualifier = "paid-account"
value = "expanded"
Fields
| Field | Required | Type | Meaning |
|---|---|---|---|
schema_version | Yes | integer | Variable format version. The only supported value is 1. |
description | No | string | Human description shown by inspect and editor tooling. |
type | Yes | string | Primitive type or resource:<resource-id>. |
values | Primitive only | table | Inline values keyed by value name. |
resolve | Yes | table | Default value and ordered qualifier rules. |
The older schema = "...json" field is rejected. Structured values should use
a resource and type = "resource:<resource-id>".
Supported Types
Primitive variable types are:
bool
int
number
string
list
Resource-backed variable types use:
resource:<resource-id>
For example:
type = "resource:account-limit-profile"
Primitive Values
Primitive variables must contain a [values] table. Each table key is a value
key. Each value must match the declared primitive type.
type = "string"
[values]
control = "standard"
priority = "priority"
Primitive variables without values are invalid. Resource-backed variables with
[values] are invalid.
Resource-Backed Variables
Resource-backed variables select object keys from the matching resource object directory:
schema_version = 1
description = "Account limit profile"
type = "resource:account-limit-profile"
[resolve]
default = "growth"
[[resolve.rule]]
qualifier = "enterprise-account"
value = "enterprise"
The default and rule value fields reference files under:
resources/account-limit-profile-objects/
Every selected object is validated against the resource schema before an application can consume it.
Resolve Block
Every variable must contain [resolve]:
[resolve]
default = "standard"
[[resolve.rule]]
qualifier = "paid-account"
value = "expanded"
default is required. It must reference a known primitive value key or a known
resource object key.
Rules are evaluated in file order. Each rule references one qualifier and one
value. The first rule whose qualifier resolves to true selects its value. If
no rule matches, the default value is selected.
Invalid Shapes
These shapes are invalid:
# Missing type
schema_version = 1
# Schema-backed variables are no longer supported
schema = "../schemas/value.schema.json"
# Resource-backed variables must not contain [values]
type = "resource:account-limit-profile"
[values]
growth = {}
# Rules must use [[resolve.rule]] tables
[resolve]
default = "standard"
rule = ["paid-account"]
Related Pages
See reference-variable-values for value validation, and
reference-variable-resolution for runtime selection semantics.