ADE harnesses: picking what a session runs on
SkillAI & modelsLets your agent run chats, CLI sessions, or subagents on a specific model provider, saved preset, or API key.
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; ahel provides instructions and does not run this skill.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the ADE harnesses: picking what a session runs on skill
About this skill
Use this skill when you need to run a chat, a CLI session, or a subagent on a specific setup, a saved Custom provider (a "harness preset" internally), one of this machine's provider accounts, or one stored API key, instead of whatever ADE would pick by default. Covers listing what is available (`a
What this skill tells your AI
The instructions your AI receives, as published by arul28/ade in apps/desktop/resources/agent-skills/ade-harnesses/SKILL.md and read by ahel’s review.
ADE separates the harness (which agent runs: Claude Code, Codex, Droid, OpenCode, …) from the model provider (where it gets its intelligence: a native sign-in, a provider signed in to OpenCode — OpenCode Go, Zen, or any provider connected there — a stored API key, or a subscription borrowed through ADE's proxy). Any routable harness can run any model its sources serve: ADE points the harness straight at the source when they speak the same API, and translates through its local proxy when they do not.
A harness preset — shown in the app as Custom (Settings › Providers › Custom) — is one saved pairing of the two, with the model, the thinking level and the subagent pins attached. It has an id, and that id is the only thing a launch needs. The permission tier is not part of a preset: it is chosen at launch, the same way it is for every other provider.
See what this machine can run
ade chat models --text # every model, grouped by provider
ade chat models --provider claude --text
ade providers accounts list --text # Claude/Codex accounts on this machine
ade providers accounts list --provider codex --text
Presets and accounts also ride the AI status payload, which is the one call that answers what a session can run on without three round trips:
ade actions run ai getStatus --text
Read harnessPresets[] ({id, name, harness, model, source}) and
providerAccounts[] ({id, provider, label, isDefault, signedIn}). Neither
carries a key or a config path — only the ids the flags below take.
See what each harness can reach
ade harness routes --harness claude --text # every model Claude Code can run, by source
ade harness routes --text # the same for every routable harness
Rows tagged via ADE proxy are translated (the proxy starts on demand). Check
one pairing with a one-token request before relying on it — the verdict is
remembered, so later launches route around a protocol the model refused:
ade harness test --harness claude --via opencode-go --model deepseek-v4.1-flash --text
Launch on a specific setup
| you want | flag |
|---|---|
| any reachable model, no saved preset | --provider <harness> --via <source> --model <id> |
| a saved custom setup (harness preset) | --preset <preset-id> |
| one stored API key, no preset | --credential <credential-id> |
| a specific Claude/Codex account | --instance <account-id> |
# A chat on a saved preset — model, effort and subagent pins all come from
# the preset, so nothing else needs stating.
ade chat create --lane <lane> --preset hp_opus_work
# A tracked CLI terminal on the same preset.
ade new chat --mode cli --lane <lane> --provider claude --preset hp_opus_work
# A key saved on a provider page, with no preset around it.
ade chat create --lane <lane> --provider claude --credential openrouter
# A specific account, without a preset.
ade chat create --lane <lane> --provider claude --instance work
# OpenCode Go's DeepSeek inside Claude Code, chat or CLI, no preset.
ade chat create --lane <lane> --provider claude --via opencode-go --model deepseek-v4.1-flash
ade new chat --mode cli --lane <lane> --provider codex --via opencode-go --model glm-5.3
--via takes opencode-go, opencode (Zen), opencode:<provider>, or
key:<provider>[:<credentialId>]. Subagents follow the main model unless a
preset pins them.
Run a custom setup in your own terminal
eval "$(ade harness env <preset-id> --text)" && claude --model <model>
The output holds the provider token. It is printed for eval and never
written anywhere; do not paste it into a chat or a file.
--preset and --credential are mutually exclusive: each names a whole setup,
and passing both would leave ADE guessing which one you meant.
Run subagents on a different preset
A subagent is a chat, so it takes the same flag. Spawn one on a cheaper or faster preset than the parent and keep working:
ade chat create --lane <lane> --preset hp_haiku_cheap \
--type subagent --permission-mode full-auto \
--prompt "Find every caller of resolveLaunchBrain and report the list."
For a harness that takes one, you do not have to spawn a separate chat at all: a preset can name its subagents' model and thinking level (Settings › Providers › Custom › Subagents), which apply to every subagent the chat spawns natively, with no extra flag. Claude Code, Codex CLI, Grok and OpenCode take a subagent model; Claude Code and Codex CLI take a level too. Claude Code, Grok and OpenCode also let you pin individual named roles (Explore, Plan, general-purpose) under Subagent naming. A harness the preset's wizard says runs subagents on the main model takes neither.
What does not take a preset
Three CLIs read their identity from their own sign-in and accept no key or
endpoint from the launch: Cursor, Copilot, Kimi. A preset on one of
them in CLI mode is dropped and the native CLI starts — a working session on
the harness's own account, with the reason recorded. (Grok used to be here; it
now runs routed models from an ADE-owned GROK_HOME.)
OpenCode's free Zen models only answer inside OpenCode itself, so they are never offered in another harness.
Two more have no key path at all, in either mode:
- Pi reads its endpoints and model ids from its own
models.json. Add the provider in Pi; a preset key has nowhere to go. - Cursor holds one key at a time in its own store, so a per-preset key would change every other Cursor session on the machine.
When a preset cannot be honoured, the chat says which capability was dropped and runs on the harness's own sign-in. It never fails the launch.
Signals
- GitHub stars
- 111
- Forks
- 13
- Last commit
- Oct 2026
Advanced
- Item type
- skill
- Key
ade-harnesses- Source
- github.com/arul28/ade
More in AI & models
Skill · anthropics
More in AI & modelswayfinder
Skill · mattpocock
More in AI & modelswizard
Skill · mattpocock
More in AI & modelsalgorithmic-art
Skill · anthropics
More in AI & modelscode-review-and-quality
Skill · addyosmani
More in AI & modelsai-first-engineering
Skill · affaan-m
More in AI & models