{
  "markdown": "# Distill\n\n[![CI](https://github.com/blisspixel/distillr/actions/workflows/ci.yml/badge.svg)](https://github.com/blisspixel/distillr/actions/workflows/ci.yml)\n[![PyPI](https://img.shields.io/pypi/v/distillr.svg)](https://pypi.org/project/distillr/)\n[![Python](https://img.shields.io/pypi/pyversions/distillr.svg)](https://pypi.org/project/distillr/)\n[![License: Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE)\n[![Python 3.12+](https://img.shields.io/badge/python-3.12%2B-blue.svg)](https://www.python.org/downloads/)\n\n> Distill turns a research goal into a persistent, verifiable body of evidence.\n> It finds papers, talks, and pages from operator-trusted sites, captures\n> supplied repos, podcasts, feeds, posts, and local files, analyzes them with\n> source receipts, verifies claims before write, and synthesizes a local\n> plain-Markdown corpus. Use it to understand a field, inspect the evidence,\n> ask cited questions, and keep the research current across repeated runs.\n\n*PyPI package [`distillr`](https://pypi.org/project/distillr/); CLI is `distill`\n(plus `distill-mcp`).*\n\n## Install and first run\n\n```bash\nuv tool install distillr\ndistill --cost-mode no-metered init\ndistill --cost-mode no-metered papers \"temporal knowledge graph\" --topic tkg --limit 5 --preview\n```\n\n`no-metered` only allows routes Distill can prove are not API-billed. Preview\nbuilds a current arXiv shortlist without ingesting. On a local Ollama or LM\nStudio route that spend is `$0.00` and the budget is wall clock: a two-paper\ningest can take an hour on a laptop, and that is the control, not a hang. Run\n`distill bench` once so preview can print how long the full ingest will take on\nthis machine. If local inference is up, use it to ingest more and stay more\ncurrent: ad hoc commands at the keyboard, `distill profile refresh --max-hours\n6 --yes` after hours so many topics keep feeding the markdown wiki. When API\nspend is OK, the same pipeline goes wide and fast. When the shortlist looks\nright:\n\n```bash\ndistill --cost-mode paid-ok papers \"temporal knowledge graph\" --topic tkg --limit 20\ndistill --cost-mode paid-ok papers \"temporal knowledge graph\" --topic tkg --limit 20 --workers 3\n```\n\nPaid-ok is how you do a lot quickly: preview the shortlist, then ingest a large\nset in minutes instead of hours. Paper analysis stays one-at-a-time by default.\nAfter reviewing the projected total, `--workers 2` or `--workers 3` analyzes\nindependent papers in a small bounded group. Discovery, artifact writes,\nverification, synthesis, and report sections remain serialized.\n\nHard dollar budgets cover registered token-priced calls. Gemini Deep Research\nhas no provider request-side dollar ceiling, so Distill refuses that agent\nbefore remote setup whenever a hard workflow or MCP budget is active.\n\n![distill papers CLI demo with synthetic paper titles, progress lines, cost summary, and Markdown corpus artifacts](docs/assets/cli-papers-demo.png)\n\n*Illustrative demo (synthetic titles and paths). Real runs use current arXiv\nresults and your configured model route. Distill estimates the selected route\nbefore spend; actual cost and duration depend on source size and model output.*\n\nAlternate installers, keys, local models, and updates:\n[`docs/install.md`](docs/install.md). Full command reference:\n[`docs/usage.md`](docs/usage.md).\n\nOpenRouter is available as an optional metered route when direct-provider quota\nor local inference is not suitable. It requires an explicit concrete\n`author/model` slug, requests Zero Data Retention routing by default, records\nOpenRouter's reported billed cost, and remains blocked by `no-metered`. It is\nnever selected automatically. See the [provider setup](docs/install.md#openrouter-optional-metered-route).\n\n## What you get\n\nOne local `library/` of plain Markdown: no database, no cloud lock-in. Same\npipeline shape for every source (capture → analyze → verify → synthesize), with\na write-time verify gate.\n\n| Source | Entry point |\n|---|---|\n| YouTube | `distill latest`, `distill video`, `distill discover` |\n| Websites | `distill site`, `distill site-batch` |\n| arXiv | `distill papers` |\n| X, repos, podcasts, newsletters, local files | `distill ingest <url-or-path>` |\n\nPlus `distill ask` (cited answers from the corpus), `distill audit` (free trust\nreport), and `distill report` (a corpus-first sequential report by default,\nwith explicit accordion and Deep Research profiles). MCP and recurring\nprofiles expose the same durable corpus to agents. Artifact layout and samples:\n[`docs/outputs.md`](docs/outputs.md). Real example corpus:\n[`examples/`](examples/README.md).\n\nThe product direction is an exceptional research desk, not a larger pile of\nfiles: better source curation, clearer disagreement and lineage, meaningful\nchange across refreshes, and guidance on what to read or investigate next. The\ndevelopment doctrine and feature-admission test are in\n[`docs/design/research-desk-doctrine.md`](docs/design/research-desk-doctrine.md).\n\nAgent distribution uses one canonical Agent Skill plus an\n[Agent Plugins 1.0.0](https://agent-plugins.org/specification) portable package\nand separate client compatibility surfaces. The specification is currently a\nWorking Draft. `distill export <topic> --format okf` produces an\n[OKF v0.2](https://github.com/GoogleCloudPlatform/knowledge-catalog/blob/main/okf/SPEC.md)\nprojection with portable provenance, bounded receipt copies, lifecycle fields,\nand digest-bound machine-verification events. The native `library/` remains the\nsource of truth. Exact standards boundaries and update policy:\n[`docs/interoperability.md`](docs/interoperability.md).\n\nHow Distill differs from Deep Research tools, notebooks, and Markdown wikis:\n[`docs/positioning.md`](docs/positioning.md).\n\n## Docs\n\n| Doc | For |\n|---|---|\n| [`docs/README.md`](docs/README.md) | Full documentation index |\n| [`docs/usage.md`](docs/usage.md) | Commands, flags, first recipes |\n| [`docs/install.md`](docs/install.md) | Install, providers, local models |\n| [`docs/cost.md`](docs/cost.md) | Cost model and guardrails |\n| [`docs/mcp.md`](docs/mcp.md) | MCP tools and agent paths |\n| [`docs/outputs.md`](docs/outputs.md) | What every artifact contains |\n| [`docs/architecture.md`](docs/architecture.md) | Data flow and routing |\n| [`docs/invariants.md`](docs/invariants.md) | Design charter |\n| [`docs/design/research-desk-doctrine.md`](docs/design/research-desk-doctrine.md) | Product doctrine and feature rubric |\n| [`docs/interoperability.md`](docs/interoperability.md) | Agent Plugins and OKF baselines |\n| [`docs/SECURITY.md`](docs/SECURITY.md) | Trust boundaries and disclosure |\n| [`docs/CONTRIBUTING.md`](docs/CONTRIBUTING.md) | Dev setup and quality gates |\n| [`docs/CHANGELOG.md`](docs/CHANGELOG.md) | What shipped |\n| [`ROADMAP.md`](ROADMAP.md) | Versioned next steps and 1.0 exit gates |\n\n## Status\n\nActive beta with a broad working surface: sources, discovery, verification,\nsynthesis, ask, audit, MCP, dashboard, profiles, and deferred workers. Every\nchange clears the same release gate: 95% branch coverage, Ruff, Pyright,\nimport-linter, Bandit, pip-audit, the supported Python matrix, and build\nprovenance. Covered v1 contract snapshots are freeze-ready under the published\ncompatibility policy. Pin versions if you integrate on MCP schemas or\nfrontmatter because uncovered pre-1.0 surfaces can still improve additively.\n\nVersion 1.0 is a future stability commitment, not a calendar date. Five paired\nLinux and macOS runs now characterize public-runner variance and support an\nadvisory regression policy. The remaining gates include cross-platform install,\ncold-start, export, live-journey, accessibility, and freeze-time security\nevidence. See the [`roadmap`](ROADMAP.md#100---stability-commitment--quality-bar)\nand [`comparable performance history`](docs/performance/comparable-history-0.19.70.md).\n\n## License\n\nApache 2.0. See [`LICENSE`](LICENSE).\n",
  "bytes": 7929,
  "sha": "5ace218aedb178dc1b121ed4dd023a951c2adffcf342db5934312a715b628c24",
  "repo_slug": "blisspixel/distillr",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_blisspixel_distillr_15c3e9f5/readme"
}