<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ethan+</title>
    <description>The latest articles on DEV Community by Ethan+ (@ethanplusai).</description>
    <link>https://dev.to/ethanplusai</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4122866%2Fae90885c-3521-4326-b7e2-1a0576600478.png</url>
      <title>DEV Community: Ethan+</title>
      <link>https://dev.to/ethanplusai</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ethanplusai"/>
    <language>en</language>
    <item>
      <title>How I Cut GPT-6 Astra Usage by ~95% Without Losing Quality</title>
      <dc:creator>Ethan+</dc:creator>
      <pubDate>Mon, 21 Sep 2026 15:03:51 +0000</pubDate>
      <link>https://dev.to/ethanplusai/how-i-cut-gpt-6-astra-usage-by-95-without-losing-quality-352m</link>
      <guid>https://dev.to/ethanplusai/how-i-cut-gpt-6-astra-usage-by-95-without-losing-quality-352m</guid>
      <description>&lt;p&gt;The first week Astra came out, the usage was incredibly efficient. I ran something like 500M tokens and never got close to the weekly limit on the 20x plan. Then that stopped. I started hitting the ceiling constantly, and burned through four resets to cover the next 500M tokens.&lt;/p&gt;

&lt;p&gt;Nothing about my work had changed. What changed was how much Astra I was spending on things that did not need Astra.&lt;/p&gt;

&lt;p&gt;Here's what a long coding session actually is. Maybe 10% of it is architecture, interface design, security calls, and judging whether the result is right. The other 90% is discovery and typing: read the repo, write the function, run the test, read the failure, fix it, run it again. Astra is worth every credit for the first 10%. The other 90% is busy work you're paying a premium to watch.&lt;/p&gt;

&lt;p&gt;So I built a package that splits the session along that line. Astra keeps scope, design, the hard calls, and final acceptance. DeepSeek V4.1 Flash takes discovery, implementation, testing, and debugging. Both run inside Codex as native subagents, with no second CLI and no API client of my own.&lt;/p&gt;

&lt;p&gt;It's open source:&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/ethanplusai" rel="noopener noreferrer"&gt;
        ethanplusai
      &lt;/a&gt; / &lt;a href="https://github.com/ethanplusai/astra-flash-orchestrator" rel="noopener noreferrer"&gt;
        astra-flash-orchestrator
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Astra plans and reviews; DeepSeek Flash builds. A native Codex workflow with phased tasks, verification, safe installation and reversible setup.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Astra Flash Orchestrator&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Save Astra for the decisions that need it. Let DeepSeek V4.1 Flash do the volume.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/ethanplusai/astra-flash-orchestrator/docs/assets/astra-savings-v2.svg"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fethanplusai%2Fastra-flash-orchestrator%2FHEAD%2Fdocs%2Fassets%2Fastra-savings-v2.svg" alt="Astra Flash Orchestrator measured efficiency"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A personal Codex skill designed to preserve Astra usage without giving up Astra's
judgment. Astra stays responsible for planning, architecture, high-stakes
decisions and final review. DeepSeek V4.1 Flash takes the high-volume work
repository discovery, implementation, testing, debugging and routine verification.&lt;/p&gt;
&lt;p&gt;Bring an existing plan or start with a feature request. The workflow turns it
into coherent implementation bundles, sends those bundles to Flash, then returns
the completed patch and evidence to Astra for one focused acceptance pass.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Status:&lt;/strong&gt; early release. Offline installation tests pass, and the workflow has completed a measured local field build. Results below describe that run, not guaranteed savings. A new installation still needs runtime routing verification on its first authorized task. Installation never runs paid inference.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Measured efficiency&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;In one substantial field build, Astra Flash Orchestrator used &lt;strong&gt;98.9%&lt;/strong&gt;…&lt;/p&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/ethanplusai/astra-flash-orchestrator" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Across a full build it cut my Astra usage by roughly 95%, and the quality went up rather than down.&lt;/p&gt;

&lt;h2&gt;
  
  
  Swapping the model is not the answer
&lt;/h2&gt;

&lt;p&gt;The obvious move is to point the expensive model at a cheaper one and call it orchestration. I tried that repeatedly and it barely worked.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reusing my existing skills with cheaper models.&lt;/strong&gt; Pointing Astra at the smaller OpenAI models through skills I already had got me maybe 10% back, and introduced new problems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Trying every obvious worker.&lt;/strong&gt; Sol, Luna, Opus, and Sonnet each had something going for them. None moved the number enough to matter, and some cost me time in rework.&lt;/p&gt;

&lt;p&gt;The pattern in both failures was the same, and it had nothing to do with the worker. I was still asking Astra to supervise. It dispatched, waited, re-read, re-reviewed. &lt;strong&gt;A cheaper worker saves you nothing if the expensive model stays parked in the loop watching it work.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What the package does differently
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. A worker that can hold a long assignment.&lt;/strong&gt; DeepSeek V4.1 Flash produced immediately better output than the other cheap options, comparable to Opus 5 for the same work. It writes solid code and stays on a long task without wandering off. That alone got me about 60%.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. A root that gets out of the way.&lt;/strong&gt; Astra does one planning batch, one dispatch, one wait, and one batched acceptance review. No progress polling, no narrating each tool call, no re-reading the worker's transcript. Flash owns discovery, implementation, its own test-and-fix cycles, and routine browser checks, then hands back a finished patch with evidence.&lt;/p&gt;

&lt;p&gt;That second change is where 60% became the rest. The workflow is the product. The model underneath is replaceable.&lt;/p&gt;

&lt;p&gt;In daily terms: a 7-hour build under the current setup used about &lt;strong&gt;2%&lt;/strong&gt; of my weekly usage. A 5-hour build done the old way used over &lt;strong&gt;28%&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the full build looked like
&lt;/h2&gt;

&lt;p&gt;The complete run was &lt;strong&gt;23 hours 3 minutes&lt;/strong&gt; of active task runtime. The main 18.5-hour stretch on the current setup took &lt;strong&gt;four prompts from me&lt;/strong&gt; across fifteen worker sessions.&lt;/p&gt;

&lt;p&gt;What it produced (generated files, migrations, and docs excluded):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Files added&lt;/th&gt;
&lt;th&gt;Files modified&lt;/th&gt;
&lt;th&gt;Lines added&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Product source&lt;/td&gt;
&lt;td&gt;177&lt;/td&gt;
&lt;td&gt;205&lt;/td&gt;
&lt;td&gt;45,590&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tests&lt;/td&gt;
&lt;td&gt;106&lt;/td&gt;
&lt;td&gt;81&lt;/td&gt;
&lt;td&gt;29,944&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Total&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;283&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;286&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;75,534&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Volume proves nothing on its own, so here's the quality side:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;6,875 tests passing, 80 skipped, &lt;strong&gt;0 failing&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;88 browser QA captures&lt;/li&gt;
&lt;li&gt;32 of 38 roadmap packets accepted&lt;/li&gt;
&lt;li&gt;111 of 121 acceptance criteria passing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Anything that needed a live provider, production access, or a decision I hadn't authorized stayed explicitly blocked. The workflow doesn't quietly mark those done.&lt;/p&gt;

&lt;p&gt;The DeepSeek side of the entire run came to &lt;strong&gt;$19.32&lt;/strong&gt; at published rates.&lt;/p&gt;

&lt;h3&gt;
  
  
  The number moved
&lt;/h3&gt;

&lt;p&gt;When I first posted about this, the measurement said 98.9% less Astra input per 1,000 lines. Across the full run it settled at &lt;strong&gt;94.2%&lt;/strong&gt;, with total compute per 1,000 lines &lt;strong&gt;91.5–92.9% lower&lt;/strong&gt; than the all-Astra baseline. The measured phase also produced &lt;strong&gt;119% more&lt;/strong&gt; implementation and test lines than that baseline.&lt;/p&gt;

&lt;p&gt;The ratio came down because the later hours were review, integration, and interface correction, exactly the work that pulls Astra back in. A headline number taken at the easy part of a build isn't the number you'll live with, so I'd rather publish this one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the price gap is so extreme
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Per 1M tokens&lt;/th&gt;
&lt;th&gt;Astra (estimator)&lt;/th&gt;
&lt;th&gt;DeepSeek V4.1 Flash&lt;/th&gt;
&lt;th&gt;Astra premium&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Uncached input&lt;/td&gt;
&lt;td&gt;$10.00&lt;/td&gt;
&lt;td&gt;$0.15–$0.30&lt;/td&gt;
&lt;td&gt;33–67x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cached input&lt;/td&gt;
&lt;td&gt;$1.00&lt;/td&gt;
&lt;td&gt;$0.003–$0.006&lt;/td&gt;
&lt;td&gt;167–333x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Output&lt;/td&gt;
&lt;td&gt;$50.00&lt;/td&gt;
&lt;td&gt;$0.60–$1.20&lt;/td&gt;
&lt;td&gt;42–83x&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Look at the cached input row. In a long agentic session, almost all your input is cached context being reread every turn. That's the biggest line item in a build, and it's up to 333x more expensive on Astra.&lt;/p&gt;

&lt;p&gt;Astra has no public API price, so those figures are an estimator applied consistently for comparison, not a receipt.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the split works
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Astra  -&amp;gt;  scope, design, task briefs across phases
Flash  -&amp;gt;  discover, implement, test, report each task
Astra  -&amp;gt;  review, verify, accept or request fixes
       -&amp;gt;  integrate, checkpoint, next task
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Astra keeps everything that benefits from a frontier model: what to build, how it's structured, what the interfaces are, and whether the returned work meets the spec. Architecture, auth, tenancy, payments, and secrets never get handed down.&lt;/p&gt;

&lt;p&gt;Flash gets one coherent assignment at a time and owns it end to end.&lt;/p&gt;

&lt;p&gt;Then Astra reviews the &lt;strong&gt;actual patch, not the worker's summary&lt;/strong&gt;. It runs the checks itself against a baseline captured before the worker started. Only Astra can accept. After two failed correction cycles it re-scopes instead of burning money on a loop.&lt;/p&gt;

&lt;p&gt;That review gate is why quality holds.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it installs
&lt;/h2&gt;

&lt;p&gt;There's no new runtime. Codex already knows how to run a child agent on a different model. This points it at the right one and gives Astra a process.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Codex Router&lt;/strong&gt; brings external models into Codex natively. Your native GPT models, sign-in, and settings are untouched.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Connect DeepSeek or OpenRouter&lt;/strong&gt; through the Router's own prompt. The package never asks for, reads, or stores a key.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The skill&lt;/strong&gt; installs to &lt;code&gt;~/.agents/skills/astra-flash-orchestrator/&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Flash role&lt;/strong&gt; installs to &lt;code&gt;$CODEX_HOME/agents/astra_flash_builder.toml&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A workflow policy&lt;/strong&gt; is appended to &lt;code&gt;$CODEX_HOME/AGENTS.md&lt;/code&gt; between markers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Direct DeepSeek is the default. OpenRouter, opencode Go, Command Code, Nous Research, and Ollama Cloud work by passing an explicit route.&lt;/p&gt;

&lt;p&gt;The installer is the part I spent the most time on, because the failure I cared about was silently breaking someone's Codex setup. It runs read-only checks first, defaults to a dry run, backs up everything with a receipt, rolls back on any failed write, and can undo cleanly. It never spends money on test calls.&lt;/p&gt;

&lt;h3&gt;
  
  
  Setup
&lt;/h3&gt;

&lt;p&gt;You need Codex with native subagents, Astra as your root model, Python 3.11+, and Codex Router configured with a Flash route.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/ethanplusai/astra-flash-orchestrator.git
&lt;span class="nb"&gt;cd &lt;/span&gt;astra-flash-orchestrator
python3 &lt;span class="nt"&gt;-B&lt;/span&gt; install.py          &lt;span class="c"&gt;# dry run, changes nothing&lt;/span&gt;
python3 &lt;span class="nt"&gt;-B&lt;/span&gt; install.py &lt;span class="nt"&gt;--apply&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For a different provider:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python3 &lt;span class="nt"&gt;-B&lt;/span&gt; install.py &lt;span class="nt"&gt;--worker-route&lt;/span&gt; openrouter/deepseek-v4.1-flash &lt;span class="nt"&gt;--apply&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python3 &lt;span class="nt"&gt;-B&lt;/span&gt; skill/astra-flash-orchestrator/scripts/doctor.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Fully quit and reopen Codex before your first task, since the model catalog is cached at launch.&lt;/p&gt;

&lt;p&gt;Your first task looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$astra-flash-orchestrator Use the existing plan in docs/plan.md to implement
this feature. Keep Astra focused on planning and final review. Use one installed
Flash builder for a coherent implementation and verification bundle. Do not poll
the worker; review its completed patch and evidence in one batched pass.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then verify routing yourself: the root thread should show Astra, and the child request should be attributed to DeepSeek in your Router's request metadata.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'm not claiming
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;This is field evidence from one project, not a controlled trial.&lt;/strong&gt; It shows a real effect, not a proven cause.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your savings will differ.&lt;/strong&gt; Different repo, different task mix, different result.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The dollar figures are an estimator,&lt;/strong&gt; not an OpenAI receipt.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Delegation sends your task context to DeepSeek.&lt;/strong&gt; Keep production data and secrets out of briefs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A subagent is not a sandbox.&lt;/strong&gt; It inherits your existing sandbox and approvals.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'm still testing and changing this. If it breaks on your setup, &lt;a href="https://github.com/ethanplusai/astra-flash-orchestrator/issues" rel="noopener noreferrer"&gt;open an issue&lt;/a&gt;. Feedback from other people's configurations is the most useful thing I can get right now.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Astra does the thinking. Flash does the typing. Your weekly limit stops deciding how much you get built.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Full write-up with complete methodology: &lt;a href="https://ethanplus.ai/blog/how-i-cut-my-astra-usage" rel="noopener noreferrer"&gt;ethanplus.ai&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>opensource</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
