{"id":"f0ae3084-8f0a-46e1-8431-1fe5e6d74d17","slug":"azdaja","kind":"skill","name":"azdaja","summary":"Minimal harness-agnostic recursive language model layer — one binary, Python + llm()","owner":"kubet","repoUrl":"https://github.com/kubet/azdaja","license":"MIT","licenseTier":"permissive","trust":"community","stars":14,"match":null,"fewStars":false,"format":"skill","createdAt":null,"addedAt":"2026-10-14T06:08:43.672Z","logoUrl":"https://avatars.githubusercontent.com/u/41026612?u=88546d9b1968f008c4653b1b4f1a7ac878ec16ad&v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["memory-knowledge","developer-tools"],"tags":["jcode","recursive-language-models","rust","gemini-cli-extension","claude-code","codex-cli","context-engineering","context-window"],"runtime":"binary","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-14T07:12:14.147Z","sample":false,"url":"https://conduits.dev/tools/azdaja","language":"Python","transports":["stdio"],"install":{},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"<p align=\"center\"><img src=\"azdaja-logo.png\" alt=\"Azdaja logo\" width=\"120\"></p>\n<p align=\"center\"><img src=\"docs/demo.gif\" alt=\"The same task run twice: without Azdaja, 205 steps and 39.4M tokens; with Azdaja, 71 steps and 5.7M tokens\" width=\"880\"></p>\n\n```bash\ncurl -fsSL https://azdaja.dev/install | sh\n```\n\n# Azdaja\n\nAzdaja keeps complete source material in a local evaluator and gives language models a bounded working surface for code and semantic calls. It is a **recursive language model layer**, not a model or agent harness.\n\n[Install](#install) · [Use](#use) · [Results](#results) · [Jev](#optional-jev) · [Live proof](https://azdaja.dev/proof.html) · [Releases](https://github.com/kubet/azdaja/releases)\n\n- **Load once:** keep full inputs in a persistent Monty/Python evaluator, not every model prompt.\n- **Compute locally:** use code for parsing, filtering, joins and exact reduction.\n- **Recurse selectively:** send semantic work through `llm` / `llm_batch`, then return `FINAL`. Subcalls are model calls, not new agent environments.\n\n## Install\n\nmacOS 11+ on Apple Silicon and Intel, or x86-64 Linux with glibc 2.35+:\n\n```bash\ncurl -fsSL https://azdaja.dev/install | sh\n```\n\nChoose Jcode, Claude, Codex, Gemini or OpenCode when prompted. Installation verifies downloads and makes no model calls. The installer adds `az` as an alias when available.\n\nFrom source with Rust 1.95:\n\n```bash\ncargo install --git https://github.com/kubet/azdaja.git --tag v0.1.18 --locked --features typesafe\n```\n\nRemove Azdaja-managed installations:\n\n```bash\nazdaja uninstall all\n```\n\n[Install options](docs/install.md) · [LICENSE](LICENSE) · [supported-target third-party notices](THIRD-PARTY-NOTICES.md)\n\n## Use\n\n```bash\nazdaja solo \"Summarize the unresolved issues\" -f ./large.txt\nazdaja solo \"Find release blockers\" --repo ./project\n```\n\nFor explicit, persistent work:\n\n```bash\nsid=$(azdaja start)\nazdaja load \"$sid\" ./large.txt ctx\nprintf '%s\\n' 'FINAL(len(ctx))' | azdaja exec \"$sid\"\nazdaja final \"$sid\"\nazdaja kill \"$sid\"\n```\n\nRun `azdaja` for a provider-free local overview, or `azdaja map` for its interactive view. [Leave evidence for the next session](docs/agent-memory-handoff-walkthrough.md).\n\n## Results\n\n### RLM comparison\n\nHistorical 199-row Oolong diagnostic under the [RAH protocol](https://arxiv.org/abs/2606.13643). All 14 failed rows remain in the denominator as zeros.\n\n| Source | System | Class | Score |\n|---|---|---|---:|\n| RAH paper | RLM | Model recursion without agent tools | **64.38%** |\n| This repo | Azdaja | Bare RLM layer | **68.64%** |\n| RAH paper | Codex, No Retriever | Coding agent | **71.75%** |\n| RAH paper | RAH, GPT-5 | Recursive agent harness | **81.36%** |\n\nSingle-arm historical diagnostic, not a matched rerun of the paper's controls. [Receipt](bench/results/gpt-rah199-mortality-v3-terminal-public.json) · [Launch saga](docs/launch-saga.md) · [All measurements and limitations](BENCHMARKS.md).\n\n### Context and cost\n\n<p align=\"center\"><img src=\"docs/token-context-crossover.svg\" alt=\"Illustrative crossover between a whole-input prompt and a constant 64 KiB root envelope\" width=\"720\"></p>\n\nIllustration, not a benchmark. Recorded RAH runs averaged **5,403 root tokens** across 198 measured rows ([accounting](bench/results/cost-evidence-public.json)).\n\nOn one frozen 1.3 MiB task, the same-model projection diagnostic kept the exact answer with **66.7% fewer uncached tokens / 54.8% less time on Codex**, and **88.0% / 63.7% on OpenCode**. These were candidate-only follow-ups, not concurrent or repeated benchmarks. [Method and receipt](bench/delta/README.md).\n\nThe [live Fable suite](bench/results/live-fable-suite.md) returned **3/3 exact results**, one provider call per synthetic scenario. Separate [provider-free acceptance](bench/product_50mb/README.md) tests exercise the real CLI with scripted model responses, not live-model quality.\n\n## Optional Jev\n\n[Jev / TypeSafe](https://typesafe.ai) adds optional typed semantic work alongside generative calls:\n\n| Feature | What it does |\n|---|---|\n| `judge_many` | Returns Noul, Choice and Score judgments with raw distributions. Your harness chooses how to use uncertainty and alternatives. |\n| `judge_stats` | Reports attempts, tokens and timing separately from generative calls. Missing usage stays unknown. |\n| `jev batch` | Runs an explicit, budgeted work list with durable checkpoints. Resume reuses completed requests and refuses ambiguous automatic retries. |\n| Source review | Exports JSONL or a read-only HTML queue with full source windows, hashes and byte offsets. No automatic approval. |\n\nAttach your TypeSafe key once with a hidden prompt, without putting it in shell history:\n\n```bash\nbash -c 'read -rsp \"TypeSafe API key: \" key && echo >&2 && printf %s \"$key\" | azdaja jev attach --stdin'\n```\n\n`TYPESAFE_API_KEY` in the host environment also works without attachment. Check local setup with `azdaja jev status`.\n\nA usable key enables `exec` and explicitly executed batches. No key or `[judge] enabled = false` means off. Automatic `solo` use stays off. No automatic compaction or tool suppression is claimed. [Typed API](docs/typed-judgments.md) · [Batch and review commands](docs/jev-batch.md).\n\n## Boundaries and verification\n\nUse Azdaja only after explicit activation in your harness. Selected source can reach the configured provider. Monty is experimental, and Azdaja is not an OS security boundary. [Security](SECURITY.md) · [CLI](docs/cli.md).\n\nVerify recorded evidence offline with `./proof/reproduction/run.sh`. [Manifest](proof/reproduction/manifest.json) · [Offline verifier](proof/reproduction/verify.py). This makes no model calls and does not reproduce the original live runs.\n"}