
Important: Astra-Ares is an experimental reference implementation. It runs a separate, patched Codex CLI and is primarily intended for experimentation or for developers bringing adaptive reasoning effort into their own agent systems.
What Astra-Ares Does
Astra-Ares adds adaptive reasoning-effort selection to GPT-6 Astra while a Codex task is running. Instead of assigning one fixed reasoning level to an entire task, it uses an evaluator named Jev to choose how much reasoning Astra should apply to the next step.
Jev examines bounded task context, selects the next effort level, and decides whether that choice should remain active for 1, 2, 5, or 10 model generations. Codex then applies the selection through Astra’s native configuration mechanism before work continues.
Astra can change reasoning effort without invalidating the original prompt prefix used by its cache. Consequently, Ares keeps the same model, conversation, and direct OpenAI connection rather than inserting itself into Astra’s network path. Normal prompt-cache eligibility and retention rules still apply.
Key Features
- Adaptive reasoning: Jev chooses the effort needed for the next part of the task rather than relying on one fixed setting.
- Multi-generation leases: A decision can remain active for 1, 2, 5, or 10 generations, reducing unnecessary evaluator requests.
- Native Codex application: The patched CLI applies Astra’s settings between generations and confirms successful application.
- Bounded evaluator context: Jev receives the task, public progress, reasoning summaries, and a limited set of recent tool results.
- Direct Astra connection: Codex continues talking directly to OpenAI. Jev uses a separate configured provider.
- Isolated installation: Astra-Ares uses its own Codex profile and does not replace the existing
codexcommand or Codex desktop application. - Visible failure handling: Ares does not silently switch providers, substitute models, or invent an effort decision.
Before You Install
The first build requires several minutes and approximately 10 GB of free space. Install the following prerequisites:
- Node.js 22 or newer
- npm
- Git
- curl
- tar
- A native C/C++ build toolchain
- Rust through rustup
The setup process also installs the Rust toolchain pinned by the upstream Codex source. On macOS, install the Xcode Command Line Tools if they are missing:
xcode-select --install
macOS on Apple Silicon has been built and tested locally. Build paths exist for Intel macOS and Linux, but they have not yet been acceptance-tested. Windows is not supported because this integration relies on Unix sockets.
Step 1: Build and Install Astra-Ares
Clone the source repository, install its Node.js dependencies, run the automated setup, and create global command links:
git clone https://github.com/miuuyy/Astra-Ares.git
cd Astra-Ares
npm ci
npm run setup
npm link
The setup downloads a pinned Codex version, applies the included patch, and builds it automatically. You do not need to edit Codex manually.
The npm link command exposes two commands in your terminal: astra-ares and ares. The preview is distributed from source; there is currently no published npm package or prebuilt Ares download. Consult the project’s installation documentation for updates, build reuse, removal, and operation without a global link.
Step 2: Configure the Jev Provider
New installations use OpenRouter as the default Jev provider. Create an OpenRouter API key, ensure its account has funded credits, and start the configuration prompt:
ares configure
Paste the key into the hidden prompt. Astra-Ares stores it in your private user configuration outside the cloned repository.
The Jev credential is separate from the Codex account used to access Astra. If the patched CLI needs authentication, sign in with:
astra-ares login
Other Jev providers and environment-variable options are covered in the project’s configuration guide.
Step 3: Launch Codex with Adaptive Reasoning
Start the patched Codex terminal:
astra-ares
Open the native /model picker and select Astra-Jev. New Ares profiles select this entry by default. You can then submit a task and use the normal Codex workflow, including tools, approvals, cancellation, and history.
When Jev changes the effort level and Codex confirms it, the transcript displays a message similar to this:
Jev LOW → HIGH ✓ APPLIED
Step 3 · next 2 generation(s) · 321 ms
APPLIED is more than a recommendation notice: it means Codex confirmed that the settings were applied for the next generation. The notification appears after native application.
Basic Usage Examples
Open a Particular Repository
Use -C to begin work in a specific project directory:
astra-ares -C /path/to/project
Resume the Last Ares Session
astra-ares resume --last
Ares uses a separate Codex profile, so this command resumes the last session from that profile rather than a session belonging to the ordinary Codex installation.
Replace the Jev Key
ares configure
Disable Jev for a Session
Open /model and choose ordinary Astra or another model. Codex will continue operating without Jev routing.
How Adaptive Selection Works
- Codex reaches an eligible checkpoint before a model generation.
- Ares prepares bounded context containing the task, public progress, and recent tool activity.
- Jev selects a reasoning effort and a lease of 1, 2, 5, or 10 generations.
- Codex applies the selected settings using Astra’s native configuration mechanism.
- Astra generates a response and may invoke one or more tools.
- Ares requests another decision when the lease expires or an event invalidates it.
One step means one model generation, not one tool call. A single generation can produce several tool calls. Decisions occur before the next generation, after available tool results have entered the conversation.
Jev evaluates what reasoning is needed next in relation to the user’s goal. For example, reading a file does not automatically justify low effort because interpreting the file may be the difficult part.
Understanding Leases
If Jev chooses a lease of ten generations, Ares asks for a decision at step 1 and then again at step 11. Steps 2 through 10 reuse the accepted choice without making additional Jev requests.
A lease ends early when new user input arrives, a tool fails, the model changes, or the reasoning effort is changed manually. Jev is then consulted at the next eligible checkpoint. A tool failure requests reassessment; it does not trigger a hardcoded escalation.
What Context Jev Receives
Jev does not receive Astra’s entire unrestricted internal context. Its evaluator view includes:
- The original or current task and retained previous user requests
- Public progress, plans, and published reasoning summaries
- The last six tool calls and their paired results
- Up to 1,000 local tokens of combined result text for each tool call, using explicit head-and-tail truncation
- A complete evaluator request guarded by a 28,000 local-token limit
Private or encrypted reasoning is excluded. Oversized evaluator requests stop explicitly rather than being sent silently. The local tokenizer provides a budget estimate and is not necessarily identical to Jev’s tokenizer. These limits affect only Jev’s view; Astra retains its native conversation.
The bounded task context is sent to the configured Jev provider. Review the configuration and logging documentation before using sensitive project data.
Diagnostics and Troubleshooting
Check the Local Installation
ares doctor
This checks the installation and configuration locally without intentionally making the provider probe described below.
Test the Jev Provider
ares doctor --probe
The probe makes one small, billable Jev request. Use it when local checks pass but evaluator decisions fail.
Inspect Decision Logs
By default, run logs are stored at:
~/.local/share/astra-ares/runs/<run>/decisions.jsonl
These records can help identify failed provider requests, decision timing, and applied settings.
Interpret HTTP 429 Correctly
An HTTP 429 response indicates a rate or capacity rejection. It does not by itself prove that the evaluator context is too large. Transient HTTP errors receive no more than three attempts against the same provider within a 30-second deadline.
If all attempts fail, Ares visibly stops the current turn. It does not silently move to another provider, choose another model, or fabricate an effort level. See the repository’s troubleshooting guide for additional checks.
Advanced Tips
Balance Responsiveness and Evaluator Cost
A new Jev decision adds a provider round trip and local checkpoint processing. While a lease is active, checkpoints are handled locally without another Jev request. Longer leases can therefore reduce request frequency, although Jev—not the user—selects the duration described by the reference implementation.
Use Visible Confirmations When Validating Integration
When testing adaptive behavior, look for the APPLIED status rather than assuming that a Jev recommendation reached Astra. The confirmation is emitted only after Codex applies the native setting.
Remember the Current Measurement Limits
The project includes native fixture tests for settings application and prompt-prefix preservation. However, workload cache-hit rates and savings compared with fixed reasoning effort have not yet been measured. Treat efficiency claims as a design goal that should be validated on your own workloads.
Run the Development Test Suite
Contributors can install dependencies and run the standard tests with:
npm ci
npm test
Native integration fixtures additionally require Bun and the patched Codex binary:
JEV_TEST_BINARY="$HOME/.local/share/astra-ares/bin/codex" npm run test:native
Local fixture tests require no API keys. The upstream source checksums and patch version are pinned in patches/upstream.json.
Conclusion
Astra-Ares demonstrates how an agent can adjust GPT-6 Astra’s reasoning effort between generations while preserving the existing conversation, direct OpenAI connection, and original prompt prefix. Its automated setup makes the experiment approachable, but it remains an early technical preview built around a separate patched Codex CLI. Use its diagnostics, inspect its decision logs, and validate performance on your own workloads before treating it as an everyday development tool.
