How to use different models in one workflow
One workflow can run cheap turns on a small model and expensive turns on a large one. Orbital resolves harness, model, effort, connection and provider independently for every agent node, so overriding effort keeps the inherited model.
The run’s New run page chooses the default harness. Supported names are claude, codex and opencode. Effort accepts minimal, low, medium, high, xhigh, max and ultra, but each harness accepts only its own subset, and an unsupported combination is rejected before any turn starts rather than failing halfway through a run.
Name the configuration once with a profile
Section titled “Name the configuration once with a profile”A graph attribute such as profile_review="harness=codex effort=high" declares a named profile. profile="review" then selects it, either on the graph as the default or on a single agent node. The fields are harness, model, effort, connection and provider. Unknown, duplicated or malformed fields are errors, and an unused profile produces a warning.
Profiles suit a handful of named roles: a planning profile, a review profile, a repair profile. Reach for them when the same combination appears on more than one node.
Select by class with a stylesheet
Section titled “Select by class with a stylesheet”model_stylesheet holds CSS-like rules, for example * { effort: medium; } .review { effort: high; }. A selector matches all nodes, a node kind, a class or a node ID with #, and specificity rises in that order. Later rules of equal specificity win. Unknown properties fail loading; unmatched rules warn.
Give nodes a class and the stylesheet keeps the model decision in one place instead of scattered across twenty node declarations. The complete attribute wrapper combines a profile and a stylesheet class in one runnable graph.
Resolution order
Section titled “Resolution order”For each setting, Orbital reads the node’s harness-specific value, the node’s unqualified value, the node’s profile, the stylesheet’s harness-specific value, the stylesheet’s unqualified value, the graph’s harness-specific value, the graph’s unqualified value, the graph’s default profile, and finally the harness default.
Harness-specific attributes such as claude_model, codex_effort and opencode_provider are accepted on graphs, agent nodes and stylesheet rules. Their names and values are validated even when that harness is not the selected one, so a typo surfaces at validation rather than on the turn that needs it. Every attribute lists them all.
Imported graph settings describe that graph’s standalone use and never become parent defaults. Put shared turn configuration in the parent. See sub graphs.
Permissions default to auto-accept; full requests unrestricted approval. That is harness configuration, not an instruction inside a prompt. Choose the least permission your workflow needs and confirm the selected harness supports it. The transcript records the resolved turn settings, which is the fastest way to check that a stylesheet did what you meant.
Follow installation to authenticate a harness before testing a model selection.