Skip to main content
Nodes come in four groups in the editor: triggers, checks, conditions and actions. A workflow needs exactly one trigger and at least one model selection.

Model trigger

Names the model that makes this workflow run. Exactly one per workflow. The match is exact. A request for any other model leaves the workflow alone.

Model selection

Terminal node. Names the model the request will actually run on. The first branch that reaches one of these wins, and the walk stops there.
The lookup is case sensitive on the provider segment. If your provider is named OpenAI rather than openai, selection fails and the request stays on its original model. Keep provider names lowercase.

Metric check

The most useful node, and the only one that branches. It aggregates your own recorded usage for a model over a window and compares it against a threshold. Each condition is a metric, an operator and a threshold over a time window. Operators are less than, less or equal, equal, greater or equal, greater than. Windows are 1 hour, 6 hours, 24 hours, 7 days or 30 days. The node emits success when every condition passes and failure otherwise, and you wire a different edge to each.
Wire both outputs. An edge leaving this node with no output assigned is never followed.

Quota check

Reads one of your quota rules and branches on whether it is exhausted. The meaning inverts with that setting. With fail, the node continues only while the quota still has room. With continue, it continues only once the quota is exhausted, which is how you build the fallback branch.

Quota rule event

Continues based on whether a named quota rule has reached its limit, using the usage already gathered for this request.

Image detection

Continues based on whether the request carries an image. Detection recognises OpenAI style image_url content parts. Anthropic style image blocks are not detected, so use this on the OpenAI endpoints.

Time and date conditions

Continues based on when the request arrived. Times are evaluated in the gateway’s own timezone, which is UTC. There is no timezone setting.

Condition

Combines the results of several upstream nodes into one decision. It does not re-evaluate anything. It reads what the named nodes already decided, which is what lets you express “if two of these three are true”.

Model inheritance

Every node except the trigger and the selection carries a model. By default it is inherited by walking backwards to the nearest trigger or selection, so a metric check placed after the trigger measures the triggering model without you saying so. Switch it to manual to measure a different one.

Nodes that are not working yet

These appear in the editor palette. They do not currently do what their name suggests, so leave them out until that changes.
A model error handler node does not just fail its own branch. It stops the whole workflow from validating, so every request that would have been routed quietly runs on its original model instead.