DEV Community

Cover image for Your Sol Quota Is Dying on File Reads. Luna Should Be Doing That.
Eric Kang
Eric Kang

Posted on AI-assisted

Your Sol Quota Is Dying on File Reads. Luna Should Be Doing That.

Codex reaches for GPT-6 Sol. Sometimes the next step is a file read, a search, or a first pass through the code. Luna can often do that work while Sol stays available for the harder decisions.

There are three ways to make that split. The quick fix changes the default. A better split gives Luna the small jobs. The most flexible version asks a decision model when a task changes halfway through.

This is about the allowance in your ChatGPT plan, not your API bill. OpenAI lists Luna at $0.10 per million input tokens for standard short-context API requests, but API pricing does not tell you how many Codex turns your plan has left. Check your own usage screen for that.

OpenAI reports DeepSWE v1.1 scores of 66.6% for Luna at max effort and 68.8% for Sol at max effort. Those are OpenAI's evaluation results, not a test we ran or a promise that Luna will pass your checks.

The quick fix: change the default

Open Codex and select gpt-6-luna. To keep it as your default, put this in your Codex config:

model = "gpt-6-luna"
Enter fullscreen mode Exit fullscreen mode

This takes seconds. It also sends planning and architecture work to Luna, including work you may still want Sol to handle. That is why the default switch is the blunt option.

The better split: Luna scouts, Sol keeps the main thread

Keep the main task on Sol. Give reads, searches, and the first look at a code path to a read-only Luna subagent. A personal custom agent file at ~/.codex/agents/scout.toml can look like this:

name = "scout"
description = "Read-only first pass for files, searches, and code paths."
model = "gpt-6-luna"
model_reasoning_effort = "high"
sandbox_mode = "read-only"
developer_instructions = """
Read and summarize the relevant files. Report evidence and uncertainty.
Do not edit files or make deployment decisions.
"""
Enter fullscreen mode Exit fullscreen mode

Then ask Codex to use scout for that first pass. The Codex subagents guide explains custom agent files and how to inspect spawned agents. This split is better than a global default, but the rule is still one you wrote ahead of time. A failing test that reveals a shared authentication dependency will not reclassify itself.

The best version: ask JEV about the next step

BeatAPI's Free JEV API accepts the state your workflow already has and returns a typed decision. It does not write a patch, grant deployment, or replace a human review. Your code decides what to do with the answer.

Call jev-1.13-free on POST /v1/systemone. The current free-call contract says input and output are $0, including at zero balance; before the first top-up, the account allows one successful request per minute. That is enough to wire a checkpoint, not a production throughput guarantee.

{
  "model": "jev-1.13-free",
  "state": {
    "task": "Fix the failing test",
    "observed_result": "The failure now traces through a shared authentication module",
    "current_model": "gpt-6-luna"
  },
  "questions": {
    "route": {
      "type": "choice",
      "instructions": "Which model should handle the next coding step?",
      "criteria": {
        "luna": "The remaining change is contained and can be checked locally",
        "sol": "The next step requires tracing or changing shared behavior"
      }
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

Read answers.route.choice, answers.route.probabilities, and answers.route.confidence. Every answer sits under its question name. The JSON above is a request example, not a recorded result for this task. If the answer is missing or below your threshold, collect more evidence and keep the next action conservative.

jev-router shows a narrower, turn-level routing pattern inside Codex. It needs that project's own key; a BeatAPI key does not drop into it. If a failure appears halfway through a turn, collect the new state and ask the Free JEV API again. More source-linked routing patterns are in Awesome JEV.

Use the default switch for a quick experiment. Use a Luna scout when the main thread should stay on Sol. Use a Free JEV API checkpoint when the next step should be judged from new evidence. The request contract and free-call details are available before you wire it into an agent.

Top comments (0)