{
  "markdown": "<p align=\"center\">\n  <img src=\"docs/assets/entroly_wordmark.svg\" width=\"820\" alt=\"Entroly\">\n</p>\n\n<h1 align=\"center\">Entroly — Cut AI context cost and prove nothing was lost.</h1>\n\n<p align=\"center\"><b>Every selection emits a receipt: what was kept, what was omitted, and the handle that recovers the exact original bytes.</b><br>\nCompression you can undo, on your own repository, in one command — without replacing your model or agent architecture.</p>\n\n<p align=\"center\"><code>pip install -U entroly && entroly go</code></p>\n<p align=\"center\">\n  <sub>Entroly is an open-source, local-first AI token-efficiency and Context Assurance layer: budgeted evidence selection, recoverable context compression, content-addressed evidence recovery, and auditable receipts. Works through proxy, MCP, plugin, wrapper, and SDK paths with Claude Code, Codex, OpenClaw, GitHub Copilot, Cursor, Aider, and OpenAI/Anthropic-compatible apps.</sub>\n</p>\n<p align=\"center\">\n  <a href=\"https://pypi.org/project/entroly/\"><img src=\"https://img.shields.io/pypi/v/entroly?color=blue&label=PyPI\" alt=\"Entroly on PyPI\"></a>\n  <a href=\"https://www.npmjs.com/package/entroly\"><img src=\"https://img.shields.io/npm/v/entroly?color=red&label=npm\" alt=\"Entroly on npm\"></a>\n  <a href=\"https://pypistats.org/packages/entroly\"><img src=\"https://img.shields.io/pypi/dm/entroly?color=blueviolet&label=PyPI%20downloads\" alt=\"Entroly on PyPI downloads\"></a>\n  <a href=\"https://www.npmjs.com/package/entroly\"><img src=\"https://img.shields.io/npm/dm/entroly?color=orange&label=npm%20downloads\" alt=\"Entroly on npm downloads\"></a>\n  <a href=\"LICENSE\"><img src=\"https://img.shields.io/badge/License-Apache_2.0-green\" alt=\"Apache-2.0 license\"></a>\n  <a href=\"benchmarks/results/receipt_fragment_fidelity_default.json\"><img src=\"https://img.shields.io/badge/Source_spans-5%2C117%2F5%2C117_verified-0A7B83\" alt=\"5,117 of 5,117 native source fragments independently verified\"></a>\n  <a href=\"benchmarks/results/receipt_public_integrity.json\"><img src=\"https://img.shields.io/badge/SDK_recovery-13%2F13_exact-blueviolet\" alt=\"13 of 13 public SDK recovery probes exactly matched their source spans\"></a>\n  <a href=\"https://github.com/juyterman1000/entroly\"><img src=\"https://img.shields.io/github/stars/juyterman1000/entroly?style=social\" alt=\"Entroly GitHub stars\"></a>\n</p>\n\n<p align=\"center\"><b>100,438 observed distribution events</b><br>\n<sub>PyPI installs, npm installs, release-binary downloads, and repository clones, summed across sources —\n<a href=\"docs/adoption-evidence.md\">how this is counted, and what it does not mean</a>.</sub></p>\n\n<p align=\"center\"><b>⭐ If Entroly is useful to you, please star the repository on GitHub.</b><br>\n<a href=\"https://github.com/juyterman1000/entroly\">⭐ Star Entroly on GitHub</a> — it helps the project grow and reach more developers.</p>\n\n<p align=\"center\">\n  <b>English · <a href=\"docs/i18n/README.zh.md\">简体中文</a> · <a href=\"docs/i18n/README.zh-TW.md\">繁體中文</a> · <a href=\"docs/i18n/README.ja.md\">日本語</a> · <a href=\"docs/i18n/README.ko.md\">한국어</a> · <a href=\"docs/i18n/README.es.md\">Español</a> · <a href=\"docs/i18n/README.hi.md\">हिन्दी</a> · <a href=\"docs/i18n/README.fr.md\">Français</a> · <a href=\"docs/i18n/README.de.md\">Deutsch</a> · <a href=\"docs/i18n/README.pt-BR.md\">Português</a> · <a href=\"docs/i18n/README.it.md\">Italiano</a> · <a href=\"docs/i18n/README.tr.md\">Türkçe</a> · <a href=\"docs/i18n/README.vi.md\">Tiếng Việt</a> · <a href=\"docs/i18n/README.id.md\">Bahasa Indonesia</a> · <a href=\"docs/i18n/README.pl.md\">Polski</a> · <a href=\"docs/i18n/README.nl.md\">Nederlands</a> · <a href=\"docs/i18n/README.th.md\">ไทย</a> · <a href=\"docs/i18n/README.sv.md\">Svenska</a> · <a href=\"docs/i18n/README.cs.md\">Čeština</a> · <a href=\"docs/i18n/README.tl.md\">Tagalog</a> · <a href=\"docs/i18n/README.ro.md\">Română</a></b>\n</p>\n\n## ⚡ Live Token Savings\n\n<p align=\"center\"><b>Tokens saved</b> · <b>Estimated cost avoided</b> · <b>Compression savings</b> · <b>Tool-schema deferral savings</b></p>\n\n| Live metric | Meaning | Source of truth |\n|---|---|---|\n| **Tokens saved** | Cumulative tokens reduced by the active Entroly workload | Local value ledger plus `entroly.proxy.tokens.saved` / `entroly_proxy_tokens_saved_total` |\n| **Estimated cost avoided** | Modeled USD value of provider-bound input reduction using configured pricing | Local value ledger; provider invoice remains billing truth |\n| **Compression tokens saved** | Canonical whole-request savings excluding measured tool-schema deferral | `entroly.proxy.tokens.compression_saved` / `entroly_proxy_compression_tokens_saved_total` |\n| **Tool-schema tokens deferred** | Savings from a caller explicitly limiting the active tool set with `X-Entroly-Active-Tools` | `entroly.proxy.tokens.tool_schema_saved` / `entroly_proxy_tool_schema_tokens_saved_total` |\n\n> **Live means measured by Entroly, not a fabricated global number.** Exact totals stay in each installation's local Value Receipt. Separately opted-in proxy installations may contribute a conservative community lower bound: every provider-bound delta is rounded down to whole 1,000-token units and whole cents before upload, with no prompt, content, model, price, or exact per-request value. It is not an exact worldwide total or provider invoice. Run `entroly value`, `entroly value --json`, or open `entroly dashboard` for your exact local cumulative totals. For the public-counter contract and proxy metrics, see [Live tokenomics](docs/live-tokenomics.md) and [Metrics & Monitoring](docs/grafana/README.md).\n\nTool schemas are never hidden by a relevance guess. To opt in for a request,\nsend a comma-separated active set such as\n`X-Entroly-Active-Tools: search_files,read_file`. Forced tool choices and\nunnamed provider tools remain available; an invalid or non-matching set leaves\nthe request unchanged.\n\n<p align=\"center\"><a href=\"docs/live-tokenomics.md\">Measurement contract</a> · <a href=\"docs/ai-efficiency.html\">AI efficiency hub</a> · <a href=\"docs/ai-cost-optimization.html\">Cost methodology</a> · <a href=\"docs/grafana/README.md\">Metrics & monitoring</a> · <a href=\"docs/telemetry-privacy.md\">Privacy-safe telemetry</a></p>\n\n---\n\n<p align=\"center\">\n  <b><a href=\"#-live-token-savings\">Token savings</a> · <a href=\"#integration-hub\">Integrations</a> · <a href=\"#what-is-entroly-in-plain-english\">What is it?</a> · <a href=\"#install\">Install</a> · <a href=\"#quickstart--by-how-you-work\">Quickstart</a> · <a href=\"#see-it-work-in-30-seconds\">See it work</a> · <a href=\"#benchmarks\">Benchmarks</a> · <a href=\"#common-questions\">Questions</a></b>\n</p>\n\n---\n\n## Integration hub\n\nUse Entroly at the SDK, framework, proxy, MCP, plugin or agent boundary. A\nlisted name is not automatically a claim that hosted subscription inference is\nintercepted; provider-bound savings exist only when the request traverses an\nEntroly-controlled route.\n\n| Direct, tested paths | Guided or bounded paths |\n|---|---|\n| [Vercel AI SDK middleware](docs/integration-hub.md#vercel-ai-sdk) · [OpenAI SDK](docs/integration-hub.md#openai-sdk) · [Anthropic SDK](docs/integration-hub.md#anthropic-sdk) | [Agno](docs/integration-hub.md#agno) · [Strands Agents](docs/integration-hub.md#strands-agents) · [CrewAI](docs/integration-hub.md#crewai) · [AutoGen](docs/integration-hub.md#autogen) |\n| [LangChain](docs/integration-hub.md#langchain) · [LiteLLM](docs/integration-hub.md#litellm) · [MCP](docs/integration-hub.md#mcp) | [Claude Code on Vertex AI](docs/integration-hub.md#claude-code-on-vertex-ai) · [Claude Code on Azure AI Foundry](docs/integration-hub.md#claude-code-on-azure-ai-foundry) |\n| [OpenClaw](docs/integration-hub.md#openclaw) · [OpenCode](docs/integration-hub.md#opencode) | [Claude Code in VS Code](docs/integration-hub.md#claude-code-in-vs-code) · [VS Code Copilot](docs/integration-hub.md#vs-code-copilot) · [Grok](docs/integration-hub.md#grok) |\n\n**[Open the complete verified integration and operations hub →](docs/integration-hub.md)**\n\n---\n## What is Entroly? (in plain English)\n\nAI coding assistants have a memory limit. Hand one your whole codebase and it\ngets slow, expensive, and distracted — like giving someone a 500-page manual\nwhen they only needed page 47.\n\n**Entroly finds page 47.**\n\nIt sits between your code and the AI, reads everything, and passes along only\nthe parts that matter for the question actually being asked. Three things make\nthat safe to do:\n|  |  |\n|---|---|\n| 💰 **Your bill goes down** | Fewer words sent to the AI means a smaller invoice. How much depends on the job — see the [real numbers](#benchmarks) below. |\n| 🔍 **Nothing is lost** | Whatever Entroly sets aside is kept and can be pulled back *exactly* as it was, character for character. |\n| 🧾 **You can check its work** | Every decision comes with a receipt: what was kept, what was left out, and why. |\n**Do I have to change my code?** No. Entroly works with the tools you already\nuse — Claude Code, Cursor, Copilot and 30+ others — and runs in the background.\n\n**Do I need to pay for anything to try it?** No. The two commands in the\n[Install](#install) section below run on your own machine, with no API key, and\nshow you real numbers on your own project before you connect anything paid.\n(They will install the native engine from PyPI if it is missing — see the note\nunder [Install](#install).)\n\n---\n## Install\n\n> **Not sure which one?** Pick **Python**. It's the complete version and what\n> most people use. The others are alternate ways to run the same engine.\n| Platform | Install | What you get |\n|---|---|---|\n| 🐍 **Python** (pip) — *recommended* | `pip install -U entroly` | Everything: the command-line tool, the server your AI editor talks to, and the code library |\n| 📦 **Node / npm** | `npm install -g entroly` | The same engine, nothing Python required |\n| 🦀 **Rust** (source build) | `cd entroly-core && cargo build --release --bin entroly-rs --features proxy` | One self-contained program, no Python or Node needed |\n| 🍺 **Homebrew** | `brew install juyterman1000/entroly/entroly` | The command-line tool on macOS/Linux |\n| 🐳 **Docker** | `docker pull ghcr.io/juyterman1000/entroly:latest` | Runs in a container, nothing installed on your machine |\n\n**Prefer a package runner instead of a global install?** These commands use\nthe same published artifacts in an isolated tool cache:\n\n```bash\n# Node / WASM runtime\nnpx -y entroly@latest --help\npnpm dlx entroly@latest --help\nbunx entroly@latest --help\n\n# Complete Python runtime\nuvx --from entroly entroly --help\npipx run --spec entroly entroly --help\n```\n\nThe Node commands provide the local WASM CLI. The Python commands provide the\ncomplete CLI, SDK, MCP, proxy, verification, and native-engine path described\nabove. Entroly's release workflow smoke-tests all five runners against the\nexact version before a release is considered complete.\n\n**Now check that it worked — free, no API key:**\n\n```bash\ncd /your/repo\nentroly verify-claims\nentroly simulate\n```\n\n<sub>Both run locally. Neither one calls an AI or costs anything.</sub>\n\n<sub>One exception to \"offline\": if the native engine is missing, Entroly installs\nit from PyPI before measuring, because without it selection cannot read your\nquery and any savings figure would be budget arithmetic rather than a measured\nresult. That is the only outbound call these commands make, it is a package\ninstall and nothing about your code leaves the machine, and it does not happen\nwhen the engine is already present. Set `ENTROLY_NO_SELF_HEAL=1` to disable it —\nEntroly then reports the figure explicitly labelled as unearned.</sub>\n\nExtras (`entroly[proxy]`, `entroly[native]`, `entroly[full]`), the standalone\nRust binary, and uninstall steps: [Engine & install options](docs/DETAILS.md#engine--install-options).\n\nContributing from source? Follow the reproducible\n[development setup](CONTRIBUTING.md#development-setup). Local installation and\nthe normal test suite need no API key; [`.env.example`](.env.example) documents\nonly optional workspace, offline, provider, and proxy settings.\n\n---\n## Quickstart — by how you work\n\n> **Just want it working?** `pip install -U entroly && entroly go` — that's the\n> whole thing. It finds your editor, sets itself up, and shows you a\n> before/after dashboard. The rest of this table is for specific setups.\n| Your situation | Do this | What it gets you |\n|---|---|---|\n| 🟢 **\"I just want it on.\"** *(pip / Python user)* | `pip install -U entroly && entroly go` | Auto-detects your editor, wraps your agent, opens a dashboard showing tokens before and after |\n| **\"I use Node, not Python.\"** *(npm user)* | `npm install -g entroly && entroly init` | Same engine, nothing Python required |\n| **\"I want one binary, no runtime.\"** *(Rust user)* | `cargo build --release --bin entroly-rs --features proxy` (from `entroly-core/`) | A single native program with no dependencies |\n| **\"I use Claude Code / Cursor / Windsurf / VS Code.\"** *(MCP user)* | `entroly attach create --client claude --project . --ttl 4h --install` (or `entroly init` for Cursor/VS Code) | Your editor gets compression, receipts, exact recovery, and evidence-backed work continuity as built-in tools — access expires on its own, and you change zero code |\n| **\"I'm building my own app in Python.\"** *(SDK user)* | `from entroly import compress, compress_messages, optimize` | Call it straight from your code, anywhere you assemble a prompt |\n| **\"I have an API key and my own app.\"** *(proxy user)* | `entroly proxy` → point `ANTHROPIC_BASE_URL` / `OPENAI_BASE_URL` / `GOOGLE_GEMINI_BASE_URL` at `localhost:9377` | Every request gets optimized on the way past — no code changes on your side |\n\n<sub>**Runaway-session rescue — automatic on the proxy, callable everywhere else.**\nWhen a long agent session approaches the provider's context limit, bulky tool\noutput is compacted in flight: no manual `/compact`, the prompt prefix stays\nbyte-stable so your warm provider cache survives, and every omitted span is\nrecoverable. The proxy does it for you because it sees the outbound request.\nAnywhere else — pip, SDK, a provider-SDK wrapper, or an MCP host that passes its\ntranscript — hand the conversation over and get the same policy:\n`from entroly import rescue_session`. `entroly capabilities` reports which\nprotections apply to how you are running. See\n[session rescue](docs/session-rescue.md).</sub>\n\n**Why bother:** less unnecessary context reaches the model (lower bill, less\ndistraction for the model), nothing is silently lost (every drop is\nrecoverable and receipted), and you can prove it — `entroly verify-claims`\nand `entroly simulate` show real numbers on your own repo before you connect\na paid key.\n\n```python\nfrom entroly import compress, compress_messages, optimize\ncompressed = compress(api_response, budget=2000)\nmessages   = compress_messages(messages, budget=30000)\ncontext    = optimize(fragments, budget=8000, query=\"fix the login bug\")\n```\n\n```bash\nentroly compress response.json --out small.json\nentroly recover sha256:0b957c79... --out restored.json\n```\n\nFull setup paths for every agent, IDE, and CI use case: [Get started in depth](docs/first-run-trust.md) · [Command reference](docs/DETAILS.md#command-reference).\n\n---\n## See it work in 30 seconds\n\nNot mocked recordings — each video is rendered from a checked-in command that\nverifies its source artifact before printing a number.\n\n<p align=\"center\">\n  <a href=\"docs/assets/proof_local.mp4\"><img src=\"docs/assets/proof_local.gif\" width=\"700\" alt=\"Entroly local verification: twelve checks pass without an API key\"></a>\n</p>\n<p align=\"center\"><code>entroly verify-claims</code> — import, compression, receipts, WITNESS checks, recovery, proxy routing, replay. No API key.</p>\n<p align=\"center\">\n  <a href=\"docs/assets/proof_model_recovery.mp4\"><img src=\"docs/assets/proof_model_recovery.gif\" width=\"700\" alt=\"Frozen model-recovery holdout: Entroly 24/24, published baseline 18/24\"></a>\n</p>\n<p align=\"center\">On a frozen 24-case holdout, Entroly answered <b>24/24</b>; a published baseline answered <b>18/24</b> at roughly 1.5x the effective context. <code>python scripts/readme_proof.py model-recovery</code></p>\n<p align=\"center\">\n  <a href=\"docs/assets/proof_restart_recovery.mp4\"><img src=\"docs/assets/proof_restart_recovery.gif\" width=\"700\" alt=\"Fresh-seed restart recovery: 66 of 66 payloads recovered byte-exactly\"></a>\n</p>\n<p align=\"center\">Omitted evidence recovered <b>byte-exact</b> after a process restart, 66/66 payloads. <code>python scripts/readme_proof.py restart-recovery</code></p>\n\nFull protocols, sample sizes, and every caveat: **[docs/BENCHMARKS.md](docs/BENCHMARKS.md)**.\n\n---\n## Benchmarks\n\nThe question that matters: **if you send less, does the AI start getting things\nwrong?** These are standard public tests, run with and without Entroly.\n\n*How to read this:* **Retention** is how well the AI still answered — 100% means\nit did just as well on far less text. **Token savings** is how much less was\nsent (and therefore paid for). Measured with `gpt-4o-mini`; intervals are Wilson 95% CIs.\n| Benchmark | Baseline | With Entroly | Retention | Token savings |\n|---|---|---|---|---|\n| NeedleInAHaystack | 100% | 100% | **100%** | **99.5%** |\n| LongBench (HotpotQA) | 64% | 66% | **103%** | **85.3%** |\n| Berkeley Function Calling | 100% | 100% | **100%** | **79.3%** |\n| SQuAD 2.0 | 80% | 72% | **90%** | **43.8%** |\n| GSM8K | 85% | 85% | **100%** | pass-through* |\n<sub>*pass-through: context already fit the budget, left unchanged. n=20–50 per row. Reproduce: `python benchmarks/run_readme_benchmarks.py` (needs `OPENAI_API_KEY`).</sub>\n\n**Being straight with you:** look at the SQuAD 2.0 row — accuracy went *down*\n(80% → 72%). Compression is a trade, not magic, and it doesn't win everywhere.\nThat's why `entroly simulate` exists: run it on your own project and see your\nown numbers before you commit to anything.\n\nHallucination detection (WITNESS, local, no API): **84.92%** accuracy / **0.7976 AUROC** on 20,000 [HaluEval-QA](https://github.com/RUCAIBox/HaluEval) decisions — within the reported uncertainty of `gpt-4o-mini` as an API judge on the same shared sample.\n\nFrozen evidence-selection benchmark (opt-in PRISM-R research prototype, not the default compressor): a disagreement guard kept the answer-bearing passage in 298 of 300 cases while selecting an average of 1.02 of 16 passages (paired exact McNemar p=0.21875 vs. BM25 alone) — this experiment measures retrieval of the known-answer passage, not generated-answer quality. Full protocol: [PRISM-R neural evidence frontier](docs/benchmarks/neural-evidence-frontier.md).\n\nRecovery, latency, and head-to-head frontier results are in **[docs/BENCHMARKS.md](docs/BENCHMARKS.md)** with raw artifacts linked. None of these numbers are a universal or production-savings guarantee for your workload — reproduce them on your own repo with `entroly simulate` and `entroly value`.\n\n---\n## Features\n\n- **Picks first, shrinks second** — it works out which files actually answer your question, *then* compresses them.\n- **Gives you the original back, exactly** — anything left out can be restored character-for-character and checked against a fingerprint.\n- **Shows its work** — a receipt for every decision: what was kept, what was left out and why, and what risk remains.\n- **Fact-checks answers** — compares what the AI said against the evidence it was given, on your machine, without paying for a second AI call.\n- **Doesn't wreck your caching** — keeps the unchanging parts of your prompt stable so your provider's discount for repeated text still applies.\n- **Rescues sessions before they crash** — when a conversation grows too big, it trims recoverable output instead of letting the provider reject the request mid-task.\n- **Can route cheap work to cheap models** — optional and fail-closed when uncertain.\n\nRuns as a **CLI**, **Python/TypeScript SDK**, **MCP server**, **HTTP proxy**, or **library import**. Full surface map: **[docs/product-surface.md](docs/product-surface.md)**. Architecture and Rust internals: **[docs/DETAILS.md](docs/DETAILS.md)**.\n\n---\n## Works with your stack\n| Agent / platform | Path | Status |\n|---|---|---|\n| Claude Code | Scoped MCP attachment; API-key proxy | Native |\n| Codex CLI | Scoped MCP attachment; API-key proxy | Native |\n| OpenClaw | Context-engine plugin + scoped MCP | Native |\n| Cursor / Windsurf / VS Code | Automatic MCP config | Automatic |\n| GitHub Copilot CLI | MCP (subscription) / proxy (BYOK) | Supported |\n| Cortex Code | SDK/library boundary only | Not validated as a wrap target |\n| Aider, OpenCode, and 30+ more | Session-scoped OpenAI-compatible proxy | One command |\n\nStatus describes integration depth, not a savings guarantee — provider-observed savings require requests to actually traverse an Entroly proxy route. Entroly does not claim interception of GitHub-hosted subscription inference on Copilot's native path. Full compatibility matrix: **[docs/agent-compatibility.md](docs/agent-compatibility.md)**.\n\n### Current model support\n\nEntroly carries verified public metadata for GPT-5.6 Sol, Terra, and Luna; Gemini 3.6 Flash; and Gemini 3.5 Flash-Lite, and it can discover installed NVIDIA Nemotron 3.5 Lightning Ollama tags. Gated or private-preview announcements are not promoted into the verified matrix without a usable public model ID and limits. For example, Gemini 3.5 Flash Cyber remains outside the generally available matrix because its documented CodeMender access is restricted to selected governments and trusted partners. See **[Verified model support](docs/model-support.html)** for model IDs, transport paths, limits, and availability boundaries.\n\n### Why does my AI coding agent miss files in a large codebase?\n\nBecause something decided which files it was allowed to see, and that decision is usually invisible. A codebase is larger than any context window, so a tool picks what fits — and if it assumes a smaller window than your model actually has, it drops evidence that would have fitted. The agent then says *\"I don't see where that is handled\"*, and it reads like a model failure when it was a budgeting one.\n\nEntroly makes that decision explicit: it records each model's published limits so it fills the window you are paying for, and every fragment it drops appears in a receipt with the reason. **On a 1.67M-token codebase, knowing the real limit is the difference between carrying 7% and 52% of the repository as evidence in one request.**\n\n### GPT-6 Astra and Muse Spark 1.3\n\n**Does Entroly support GPT-6 Astra? Yes.** Entroly fills up to **869,500 tokens** on GPT-6 Astra (`openai/gpt-6-astra`) and **865,076** on Muse Spark 1.3 (`meta/muse-spark-1.3`), instead of the 121,600-token default it applies to models it cannot identify. Both work through the proxy, MCP, plugin, and SDK paths with Claude Code, Codex, Cursor, and OpenAI-compatible apps — no separate configuration.\n\n| Model | Model ID | Context window | Max output | Tokens Entroly will fill |\n|---|---|---:|---:|---:|\n| GPT-6 Astra | `openai/gpt-6-astra` | 1,050,000 | 128,000 | **869,500** |\n| Muse Spark 1.3 | `meta/muse-spark-1.3` | 1,048,576 | 131,072 | **865,076** |\n| Muse Spark 1.3 Contributor | `meta/muse-spark-1.3-contributor` | 1,048,576 | 131,072 | **865,076** |\n\n**Why this matters:** when a context tool does not know a model's real limit, it assumes a small one and compresses harder than it needs to. Evidence gets dropped that would have fitted. Your agent then answers \"I don't see where that is handled\" — not because the model ran out of room, but because the tool guessed the room was smaller. Entroly records each model's published limits so that never happens silently, and every dropped fragment still appears in the receipt with the reason it was dropped.\n\n**What it does not do:** this does not make requests cheaper — long-context requests cost what the provider charges. It removes an artificial ceiling on evidence, so hard questions can draw on more of the codebase when they need to. Entroly reserves output tokens plus an uncertainty margin, which is why the usable figure sits below the raw window.\n\nBoth models resolve at **announced** trust from their public announcements, with tools, vision, and reasoning controls. Neither carries price metadata — the announcements describe pricing tiers without publishing rates, so Entroly reports no cost estimate for them rather than inventing one. Rates and `verified` trust follow when the first-party model pages publish them.\n\n### Kimi K3, GLM-5.3, and GLM-5.3-Flash\n\nEntroly carries published metadata and list pricing for Moonshot AI's **Kimi K3**\nand Z.ai's **GLM-5.3** and **GLM-5.3-Flash**, so Context Receipts, budget\nresolution, and cost accounting work on those routes without configuration.\n\n| Model | Context window | Input / output per 1M | Vision |\n|---|---|---|---|\n| `kimi-k3` | 1,048,576 | $3.00 / $15.00 | yes |\n| `glm-5.3` | 1,000,000 | $1.40 / $4.40 | no |\n| `glm-5.3-flash` | 1,048,576 | $0.15 / $0.50 | yes |\n\nThese are **announced** records, not verified ones: the figures come from\npublished provider specifications rather than a request Entroly has observed.\nAnnounced records are not promoted into the verified matrix, and OpenClaw's\nbudget resolution rejects them in favour of an explicit host budget or an\noperator `fallbackTokenBudget`. Set `ENTROLY_PRICING_FILE` to substitute\nnegotiated rates without waiting for a release.\n\n`glm-5.3` and `glm-5.3-flash` are a flagship and a cheap sibling on one\nprovider, which is the shape RAVS model routing looks for. Priced at the list\nrates above, routing a 100K-token request from `glm-5.3` to `glm-5.3-flash` is\nworth **$0.125**, and from `kimi-k3` **$0.285**. Routing stays behind an\nexplicit authorisation because it substitutes the model on a live request;\nEntroly measures what the swap would be worth first, so the decision is made\nagainst evidence rather than a guess.\n\nA million-token window does not remove the reason to select context. A million\ntokens of prompt costs a million tokens of prefill on every turn, and published\nlong-context evaluations report weaker retrieval for evidence buried in the\nmiddle of very long inputs. A large window is budget you now get to spend\ndeliberately.\n\n### NVIDIA Nemotron 3.5 Lightning with Ollama\n\nEntroly supports `nemotron-3.5-lightning` through its existing local Ollama discovery and OpenAI-compatible proxy path. This is a model-neutral integration: Entroly manages evidence selection, budgets, recovery handles, Context Receipts, and optional verification around the request; Ollama runs the model.\n\n```bash\nollama pull nemotron-3.5-lightning\npython -m entroly.models discover ollama --inspect-ollama-context\n# Set ENTROLY_OPENAI_BASE=http://127.0.0.1:11434 in your shell, then:\nentroly proxy\n```\n\nOllama lists the standard `nemotron-3.5-lightning` tag as a 30B mixture-of-experts model with 3B active parameters and a 1M context window. Its Apple-silicon `30b-mlx` tag is listed separately with a 256K window, so Entroly discovers the installed tag's metadata instead of assuming that every build has the same limit. Local Ollama inference can keep model prompts on the device; agent tools, configured remote providers, and other applications retain their own network and privacy boundaries. [Compatibility, setup, and official sources](docs/nemotron-3-5-lightning-ollama.html).\n\n---\n## When to use it · when to skip it\n\n**Great fit:** large repos where the agent only sees a few files at a time · chatty multi-turn agents · anywhere you want answers checked against evidence · cutting a real, growing AI bill.\n\n**Skip it:** tiny repos or short prompts that already fit the budget · judgment-heavy tasks where you always want the full flagship model.\n\n---\n## More commands\n\nFor evidence-led optimization rather than a synthetic savings estimate:\n\n```bash\nentroly learn --history --json\nentroly shrink -- pytest -q\nentroly trial --experiment checkout-fix --arm baseline -- codex exec \"fix the checkout test\"\nentroly trial --experiment checkout-fix --arm optimized -- codex exec \"fix the checkout test\"\nentroly trial --report checkout-fix\nentroly browser https://example.com --query \"billing settings\"\nentroly response set evidence --scope project\n```\n\nTrials run one explicitly selected arm at a time so a stateful or paid agent task is never repeated implicitly. Response contracts shape agent instructions; they do not truncate responses or count as measured savings. Browser and command reductions keep exact local recovery handles and pass through when their safety gates cannot be met.\n\nFor teams that need to say who an agent is and what it was allowed to do:\n\n```bash\nentroly govern status                          # identity, policies, audit chain\nentroly govern policy check write --risk high  # evaluate one authorization\nentroly govern audit verify                    # exit non-zero on a broken chain\n```\n\nAuthorization is deny-by-default and every denial names the policy and the reason it gave. `audit verify` checks that recorded entries were not altered after the fact — it does not prove every action was recorded, and `govern status` reports the state of the local control plane only, not an attestation that each agent action passed through it. Identity tokens are unsigned unless `ENTROLY_IDENTITY_KEY` is set, and the credential is never printed.\n\nAlso available: `entroly wrap`, `entroly unwrap`, `entroly serve`, `entroly daemon`, `entroly dashboard`, `entroly demo`, `entroly capabilities`, `entroly ingest`, `entroly select`, `entroly receipt`, `entroly explain`, `entroly context-commit`, `entroly proof`, `entroly benchmark`, `entroly cache`, `entroly ravs`, `entroly perf`, `entroly batch`. Full description: [command reference](docs/DETAILS.md#command-reference).\n\n---\n## Common questions\n\n<details>\n<summary><b>Will this change my code or my files?</b></summary>\n<br>\nNo. Entroly reads your files and decides what to send to the AI. It never edits, moves, or deletes anything in your project.\n</details>\n\n<details>\n<summary><b>Does my code get uploaded anywhere?</b></summary>\n<br>\nNo. All selecting, compressing, and checking happens on your own machine. Your code is never uploaded, and there are no analytics on by default. Entroly makes exactly one kind of outbound call of its own: if the native engine is missing it installs that package from PyPI, because without it selection cannot read your query. That is a package download — no code, prompts, or telemetry are sent — and `ENTROLY_NO_SELF_HEAL=1` turns it off. Otherwise the only thing that leaves your computer is the request you were already sending to your AI provider, just smaller.\n</details>\n\n<details>\n<summary><b>What if it leaves out something important?</b></summary>\n<br>\nNothing is thrown away. Anything left out is stored and can be restored exactly as it was — `entroly recover` gives you back the original, character for character, and it's verified against a fingerprint.\n</details>\n\n<details>\n<summary><b>How much money will this actually save me?</b></summary>\n<br>\nHonestly: it depends on your project. Run `entroly simulate` in your project — it's free, needs no API key, and estimates the reduction on your own files. If your prompts are already small, Entroly passes them through untouched.\n</details>\n\n<details>\n<summary><b>I'm not a developer. Can I use this?</b></summary>\n<br>\nIf you use an AI coding tool like Claude Code or Cursor, yes. Install it (`pip install -U entroly`), then run `entroly go` — it finds your editor, configures itself, and opens a dashboard.\n</details>\n\n<details>\n<summary><b>Something broke / I'm stuck.</b></summary>\n<br>\nRun `entroly doctor`. If that doesn't sort it, [open an issue](https://github.com/juyterman1000/entroly/issues) or ask in [Discussions](https://github.com/juyterman1000/entroly/discussions).\n</details>\n\n---\n## Docs & community\n\n- **[AI efficiency hub](docs/ai-efficiency.html)** — token economics, AI cost optimization, memory, hallucination reduction, model routing, adaptive context, and verified code intelligence.\n- **[AI cost optimization](docs/ai-cost-optimization.html)** — provider-bound input savings, billing boundaries, and workload-specific measurement.\n- **[Token economics](docs/token-economics.html)** — token saving, context compression, cache-aware context control, and more room in the context window.\n- **[Best token compression tools](docs/token-compression-tools.html)** — comparison across 6 token reduction surfaces, ratios, byte-exact recoverability, and benchmark results.\n- **[Memory OS](docs/memory-os.html)** — budget-aware working, episodic, and semantic memory.\n- **[Hallucination reduction](docs/hallucination-reduction.html)** — WITNESS evidence-support verification.\n- **[Guarded model routing](docs/model-routing.html)** — RAVS routing, uncertainty control, and fail-closed escalation.\n- **[Adaptive context](docs/adaptive-context.html)** — bounded self-improving context.\n- **[Verified Code Context](docs/verified-code-context.md)** — parser-backed repository intelligence, typed graphs, architecture, value flow, LSP enrichment, source verification, and refactoring contracts.\n- **[Full benchmark evidence](docs/BENCHMARKS.md)** — every number, protocol, artifact, and caveat.\n- **[Model-triggered recovery holdout](docs/benchmarks/model-triggered-recovery.md)** — frozen recovery protocol, evidence boundary, and reproduction details.\n- **[Context Commit conformance artifact](benchmarks/results/context_commit_conformance.json)** — checked-in conformance evidence for Context Commit contracts.\n- **[Product surface map](docs/product-surface.md)** — CLI, SDK, MCP, proxy, verification, memory, security.\n- **[Architecture & full spec](docs/DETAILS.md)** — Rust modules, compression, provenance, command reference.\n- **[Agent compatibility](docs/agent-compatibility.md)** — every supported client and its exact authentication boundary.\n- **[First-run trust guide](docs/first-run-trust.md)** — exactly what to run before wiring a paid model key.\n- **[For teams](docs/for-teams.md)** — ROI, security, deployment one-pager.\n- **[Limitations](docs/limitations.md)** — where Entroly helps, where it passes through, what it doesn't guarantee.\n- **[Public evidence policy](docs/public-evidence.md)** — claim tiers and package links.\n- **[Context Commits](docs/context-commits.md)** · **[Context Receipts](docs/DETAILS.md#context-receipts)** · **[Proof-guided recovery](docs/proof-guided-context-fixed-point.md)**\n- **[Cookbook](docs/cookbook/README.md)** — copy-paste recipes.\n- **[Discord](https://juyterman1000.github.io/entroly/docs/discord.html)** · **[Discussions](https://github.com/juyterman1000/entroly/discussions)** · **[Issues](https://github.com/juyterman1000/entroly/issues)**\n\n> Compressing a *bad* selection is still a bad selection. Entroly ranks first, then compresses — so the model gets structure, not just fewer tokens.\n\n<p align=\"center\"><sub>Apache-2.0 · local-first · no outbound analytics by default</sub></p>\n<p align=\"center\"><code>pip install entroly && entroly go</code></p>\n\n<!-- mcp-name: io.github.juyterman1000/entroly -->\n",
  "bytes": 35110,
  "sha": "6881ec46303fdb54bc036ecfb24879e6af8630cb82d65727618dc64ae7573bdc",
  "repo_slug": "juyterman1000/entroly",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_juyterman1000_entroly_5619e8e0/readme"
}