AgentsHybridFreeActiveMachine-verified· intermediate · ~15 min setup

Rebuild Fable 5's deep-research fan-out on your own keys (OrcaRouter)

Fan a research prompt out to a panel of models you choose, then fuse or judge the answers with an arbiter, in a routing DSL you version and control.

by Shilpa Mitra· verified today· v1.0.0

Run this workflow

CI-verified, 2/2 fixtures passing.

Build this with your agent

One copy-paste hands Claude Code, Codex, or Cursor the full recipe, steps included, nothing to fetch.

Intended Use

Anyone rebuilding a multi-model deep-research panel after losing a single model. CI runs OrcaRouter's DSL lint: routing.yaml parses, version is 1, the deep_research rule carries a parallel panel and an arbiter whose strategy is one of OrcaRouter's allowed values (best_of_n, synthesize, majority, first, tests_pass), and a default exists. No keys, no model calls. The actual deliberation is fenced.

Not for

  • Treating a panel as equal to Fable 5, on research it lands close, not equal; and it is not free, every parallel leg bills as its own call
  • Coding, where a synthesizer is the wrong judge (see the tests_pass recipe instead)

The Stack

Tested Against

docs.orcarouter.ai/routing/routing-dsl (2026-06)ruby@3.x (YAML stdlib)

Side effects & data flow

Network
none, local only
Writes
./routing.yaml
Credentials
none required

Prerequisites

  • An OrcaRouter account (hosted DSL, BYOK)
  • Provider API keys to actually run the panel

Steps

  1. 1

    Author the fan-out routing rule and lint it

    Pick the panel, pick the arbiter (synthesize to fuse, best_of_n to return the single best verbatim). Write routing.yaml with a deep_research rule that fans out to a parallel panel and resolves it with an arbiter. CI runs the DSL lint and checks the panel, a valid arbiter strategy, version 1, and a default; the panel and judge only run with your keys, so that step is fenced.

    cat > routing.yaml <<'YAML'
    version: 1
    rules:
      - id: deep_research
        when: task_class == "rag" || reasoning_cue_count > 2
        use:
          parallel:
            - { model: "anthropic/claude-opus-4.8" }
            - { model: "openai/gpt-4o" }
            - { model: "google/gemini-3.1-pro-preview" }
          arbiter:
            strategy: synthesize
            model: "anthropic/claude-opus-4.8"
            template: best_answer_v1
          max_latency_ms: 120000
    default:
      delegate: balanced
    YAML
    ruby -ryaml -e '
    c = YAML.safe_load(File.read("routing.yaml"))
    abort "BAD: version must be 1" unless c["version"] == 1
    abort "BAD: no default" unless c["default"]
    rule = (c["rules"] || []).find { |r| r["id"] == "deep_research" }
    abort "BAD: no deep_research rule" unless rule
    use = rule["use"] || {}
    panel = use["parallel"]
    abort "BAD: deep_research has no parallel panel" unless panel.is_a?(Array) && panel.length >= 2
    allowed = ["best_of_n", "synthesize", "majority", "first", "tests_pass"]
    arb = use["arbiter"] || {}
    abort "BAD: arbiter strategy not allowed" unless allowed.include?(arb["strategy"])
    puts "config OK: deep_research fans out to a " + panel.length.to_s + "-model panel with arbiter strategy " + arb["strategy"] + ", version 1, default present"
    '
  2. 2

    Run it on your keys (the model step, not checked by CI)

    Point your OpenAI-compatible client at OrcaRouter; the deep_research rule fans out and the arbiter fuses or picks. Every leg bills at provider cost, so use it where being wrong is expensive. The deliberation is fenced.

Eval, 2 fixtures

Last passed: verified today
  • fanout-okcontainstimeout 30s · max $0

    Expected: config OK: deep_research fans out to a 3-model panel with arbiter strategy synthesize, version 1, default present

  • clean-exitexit_codetimeout 30s · max $0

    Expected: 0

Results

The legitimate replacement for a hosted fusion plugin's research mode: a panel you pick plus an arbiter, billed at provider cost, versioned in your repo. OrcaRouter's own benchmark put a panel within ~1% of Fable 5 on research at roughly half the cost, self-reported and research-only.

Did this work for you?

Our CI checks the setup runs. You tell us if the whole thing worked. Tell us straight.

Liked this workflow?

Get new verified workflows in WebAfterAI, three issues a week (Tue, Thu, Sat).