Azdaja keeps complete source material in a local evaluator and gives language models a bounded working surface for code, semantic calls, and one validated result.
Install · Use · Receipts · Releases
Azdaja is a recursive language model layer, not a model or agent harness. It keeps the source in one persistent sandboxed Monty/Python evaluator at the root:
- Load the complete input into the evaluator once.
- Use code for exact parsing, filtering, grouping, and reduction.
- Send selected semantic work through
llmorllm_batch, verify coverage, and returnFINAL.
What makes it different:
- Context virtualization: the root works through variables and computed excerpts instead of receiving the complete source in every request.
- Deterministic reduction: Python handles exact operations before the model handles ambiguous language.
- Bare recursion: subcalls are model calls rather than new agent environments.
- Measured memory: the provider-free console scopes live sessions and local numeric source summaries to the canonical working directory by default, labels the configured default for new work, and marks model-boundary exposure or coverage as unmeasured instead of inventing a generic context score.
az list --globalandaz map --globalare explicit global views. - Tool adapters: one managed integration supports Jcode, Claude, Codex, Gemini, and OpenCode. Every profile is rendered from the same default skill contract with tool-specific activation, execution, and reload guidance.
The curl installer adds the standalone command, detects supported tool executables, and prompts you to choose integrations. It distinguishes a tool being found from an Azdaja integration being present or needing repair, shows exact destinations before mutation, and prints named download, verification, staging, and write phases. Pass --all for an unattended install of every integration. It never calls a model provider. It supports macOS 11+ on Apple Silicon and Intel, plus x86-64 Linux with glibc 2.35 or newer.
curl -fsSL https://azdaja.dev/install | shThe stable azdaja.dev/install URL serves the current published installer. Its versioned release payloads are fetched from azdaja.dev and verified against SHA256SUMS before installation.
Alternatively, install from source with Rust 1.95:
cargo install --git https://github.com/kubet/azdaja.git --tag v0.1.14 --lockedazdaja is the canonical command. The curl installer adds az only when that name is free; Cargo installs azdaja only.
az install finds supported tools automatically. To target one tool, run az install jcode; to install every integration, run az install all. Then run the exact az doctor command printed by install before reloading the tool. See edge cases and lifecycle details for platform checks, registry reloads, configuration paths, Cargo setup, and safe removal.
The Jcode integration also installs a byte-owned hook block in JCODE_HOME/config.toml. Broad repository reads receive a memory handoff: run the challenged azdaja solo ... --repo . command once after replacing <user task> with the current request, then continue from its answer. Do not retry the blocked broad read. Narrow reads, Git control, builds, tests, lint, and formatting remain available. Existing foreign hooks are never overwritten, and uninstall removes only the exact Azdaja-managed block.
Standalone binaries require exact co-distribution of LICENSE, matching SHA256SUMS, and the supported-target third-party notices.
Choose one removal scope:
az uninstall jcode
az uninstall standalone
az uninstall allRun azdaja with no arguments in a terminal to print a static provider-free snapshot for the current folder. Its scope row makes that boundary visible. Its new work row describes this invocation's configured default model, runner, and thinking level. It is not an observed universal route. Every live session separately shows the default model persisted when that session was created, so simultaneous sessions can differ, and individual mod
932A
el calls can still override the session default. Use az list --global or az map --global when you intentionally want the user-global state root.
Numeric source summaries are shown separately from live sessions. The repeated ← … → varied constellation uses only local aggregate numbers, never source text, and its avg variety label is a plain distributional summary rather than a quality score. Exact byte entropy is available only in measured details. Run az map for the optional full-screen view; narrow terminals fall back to the same static line-oriented snapshot.
Ask one question about one input:
az solo "question about this input" -f ./large.txtAsk one question across a repository. Azdaja builds a deterministic local JSON bundle, prunes build caches and credential-shaped files, keeps the complete included UTF-8 source in the evaluator, and fails instead of silently truncating its limits:
az solo "question about this repository" --repo ./projectOr use an explicit evaluator session:
sid=$(az start)
az load "$sid" ./large.txt ctx
printf '%s\n' 'FINAL(len(ctx))' | az exec "$sid"
az final "$sid"
az kill "$sid"Commands: help, solo, map, install, doctor, start, load, exec, final, list, kill, memory, and uninstall. Use az memory add decision "..." for an explicit project-scoped note, az memory list to inspect it, and --global only for the separate global ledger.
See the CLI reference for signatures, process custody, signal behavior, temporary files, and configuration errors.
A fixed 199-row Oolong diagnostic under the RAH protocol (arXiv:2606.13643) produced 185 valid predictions; the 14 failures stayed in the denominator as zeros. The terminal receipt records the frozen accounting, and the public manifest pins every fixture by hash.
| Source | System | Class | Score |
|---|---|---|---|
| RAH paper | RLM | Model recursion without agent tools | 64.38% |
| This repo | Azdaja | Bare RLM layer | 68.64% |
| RAH paper | Codex, No Retriever | Coding agent | 71.75% |
| RAH paper | RAH, GPT-5 | Recursive agent harness | 81.36% |
Single-arm diagnostic under the paper's protocol; paper controls were not rerun.
Within this four-row ladder, Azdaja is 4.26 percentage points above the paper's RLM reference and remains below the two agent configurations shown. How these numbers were earned — and everything that died along the way — is in the launch saga. The versioned receipts leaderboard keeps the claim scope, hashes, costs, and provider-free reproduction commands in one citable place.
- Same-model projection diagnostic: on one frozen synthetic 1.3 MiB classification task, GPT-5.6 Luna through Azdaja returned the same exact answer as the native harness while using 66.7% fewer uncached tokens and 54.8% less wall time on Codex, and 88.0% fewer uncached tokens and 63.7% less wall time on OpenCode. This was a candidate-only follow-up against hash-bound native rows, not a concurrent or repeated benchmark (plan, limits, and exact receipt).
- Constant root economy: across 198 measured RAH rows, the mean was 5,403 root tokens per item while representative bucket medians spanned 78,842 to 9,927,812 input characters;
loadreturned only character and line metadata, never source content (cost receipt). - Wall-clock shape: across 123 sealed diagnostic rows in eight input-size buckets from 32,768 to 4,194,304 tokens, bucket-median wall time was non-monotonic, with a descriptive slope of -0.43 seconds per input doubling (cost receipt).
- Zero exact-overlap hits: across 649 distinct scans with surviving structured assertions, checks for exact input substrings of at least 100 characters produced zero matches (scan receipt).
- Measured subscription route: the default Jcode/OpenAI path used subscription OAuth, requested no separate API key, and failed closed before a model turn when that route was unavailable (cost receipt).
- Model-authored code can select source material for a model call; bounded context is not information-flow control.
- The CLI reads user-supplied paths, and selected context can be sent to the configured provider.
- Native host tools keep the user's permissions; stronger containment requires a separate trusted inference broker.
- The Jcode memory handoff is a cooperative workflow guard, not a sandbox against a malicious same-user shell process.
- Monty 0.0.21 is experimental and snapshot-format-bound. Snapshots are unencrypted owner-only files, and evaluator memory has no configured ceiling.
- Use synthetic or sanitized issue reproductions. Never post raw inputs, traces, configuration, host paths, OAuth material, tokens, or secrets.
cargo test --all --locked -- --test-threads=1
cargo build --release --locked
AZDAJA_PRODUCT_BINARY=target/release/azdaja cargo test --release --locked --test product_50mb offline_scripted_harness_answers_three_real_world_50_mib_files_without_a_death -- --ignored --exact --test-threads=1
cargo clippy --all-targets --all-features --locked -- -D warningsAzdaja is MIT licensed. Licenses and attributions for dependencies reachable on the supported targets are reproduced in THIRD-PARTY-NOTICES.md, and the bundled Cormorant Light font retains its OFL. Release packaging and managed-file invariants are documented in Internals.