Balancing the Anvil
These are the models on the anvil, the frontier. Each runs with a simple riff-*, so you can focus on the model and the work at hand.
Model Coverage
| Model | Claude | Junie | Codex | Antigravity |
|---|---|---|---|---|
| Anthropic / Claude | ||||
| Fable 5 | default harnessriff-fable | alternate harness | unavailable | unavailable |
| Opus 5 | default harnessriff-opus | alternate harness | unavailable | unavailable |
| Sonnet 5 | default harnessriff-sonnet | alternate harness | unavailable | unavailable |
| Haiku 4.5 | default harnessriff-haiku | unavailable | unavailable | unavailable |
| OpenAI / GPT | ||||
| GPT-5.6 Sol | unavailable | alternate harness | default harnessriff-sol | unavailable |
| GPT-5.6 Terra | unavailable | alternate harnessriff-junie | default harnessriff-terra | unavailable |
| GPT-5.6 Luna | unavailable | alternate harness | default harnessriff-luna | unavailable |
| Google / Gemini | ||||
| Gemini 3.1 Pro | unavailable | alternate harness | unavailable | default harnessriff-gemini-pro |
| Gemini 3.6 Flash | unavailable | alternate harness | unavailable | default harnessriff-gemini-flash |
Effort per Model
| Model | Vendor Default | Anvil Target | Change |
|---|---|---|---|
| Anthropic / Claude | |||
| Fable 5 | high | high | unchanged |
| Opus 5 | high | xhigh | raised |
| Sonnet 5 | high | xhigh | raised |
| Haiku 4.5 | unavailable | ||
| OpenAI / GPT | |||
| GPT-5.6 Sol | low | low | unchanged |
| GPT-5.6 Terra | medium | medium | unchanged |
| GPT-5.6 Luna | medium | medium | unchanged |
| Google / Gemini | |||
| Gemini 3.1 Pro | high | high | unchanged |
| Gemini 3.6 Flash | medium | medium | unchanged |
Cost
Every tier keeps the JetBrains IDEs; each step up the ladder adds more capability to the anvil. Two ladders climb the same seven tiers, one focused on Anthropic and the other on OpenAI. They are alternatives, not stages. Pick the ladder focused on the model you reach for most, since the money buys depth in one vendor rather than savings.
*Anthropic Claude Pro bills at $20 per month or $200 per year. This anvil example assumes the annual rate, which saves $40.
*JetBrains All Products Pack is $299 the first year, $239 the second, then $179 onwards. This anvil example qualifies for the $179 rate.
| Vendor | Plan | Monthly | Yearly |
|---|---|---|---|
| AI Pro | +$20 | +$240 | |
| AI Ultra | +$100 | +$1,200 | |
| JetBrains | AI Ultimate | +$25 | +$300 |
*Google AI Pro costs $19.99 per month and AI Ultra $99.99, rounded here to $20 and $100 for simplicity.
*JetBrains AI Ultimate is billed yearly at $300.
The riff bill of rights
What is a riff-*? A short shell command, named after a musical riff, a phrase you play again and again. A riff bakes in your model of choice and any additional arguments you want. You can have as many as you like; think of them as shortcuts you reach for often.
- It is a bare shell command whose name starts with
riff-. - Launches from your home directory are prevented and redirected into a sandbox.
- Your original directory is restored when you are done.
- The CLI runs in the foreground, and its exit code should return to the calling shell.
riff-* setup in bash# the shared engine every riff launcher calls: run the CLI (blocking), then
# restore your working directory when the CLI exits, via a trap
_riff() {
local bin="${1}" origin="${PWD}"; shift
# never turn an agent loose in your home dir (ssh keys, dotfiles, creds); sandbox it
# defaults to ~/sandbox; override with AI_SHELL_SANDBOX
if [[ "${PWD}" == "${HOME}" ]]; then cd "${AI_SHELL_SANDBOX:-${HOME}/sandbox}" || return; fi
# ~~~~~ make it yours here: customizations, tab title, color, whatever ~~~~~
trap 'trap - RETURN; cd "${origin}"' RETURN # back to where you started when the CLI exits
"${bin}" "${@}" # keep last so a Ctrl-C still runs the cleanup
}
# each riff launcher is just a thin declaration: a client, a model, and any flags you want
riff-opus() { _riff claude --model opus --effort xhigh; }
riff-sol() { _riff codex --model gpt-5.6-sol --config "model_reasoning_effort='low'"; }
riff-gemini-pro() { _riff agy --model "Gemini 3.1 Pro (High)"; }