Droste
Ask questions about data too large for a context window.
Droste is an open source Recursive Language Model (RLM) engine. It gives a model a Python REPL over your data, so the model can search, filter, count, and delegate small pieces of interpretation without loading the full corpus into its context.
uvx droste "which customer had a failed charge, and why?" server.log
uvx droste "which plan has the highest refund rate vs its MRR?" shop.db
uvx droste "how do the authentication flows differ?" ./docs
Why Droste
Code handles work that should be exact, such as searching, counting, joining, and aggregating. Model calls handle the parts that require interpretation. Droste combines both while keeping the full dataset outside the model's context window.
The root model sees only what its code prints and the bounded results of any subcalls it makes. Runs have explicit limits for iterations, subcalls, time, and model output.
Use it
Install the command and sign in once:
uv tool install droste
droste login
Then ask a question about files, directories, SQLite databases, or piped text:
droste "what changed between these?" report.txt logs.txt
droste "which customers churned last month?" app.db
tail -5000 app.log | droste "why did it crash?"
For a one-off run, use uvx droste instead of installing it. The command also
supports an existing ModelRelay key or your own OpenAI-compatible or Anthropic
endpoint. See the quickstart for credentials, directories,
SQLite, and useful flags.
Good fits
- Exact counts, aggregates, and joins over logs, exports, or databases.
- Classification or review across many records using bounded model batches.
- Questions that need both computation and close reading.
If the data already fits comfortably in a context window, or the task is open-ended agent work rather than a question about a corpus, use a general agent instead. The quickstart includes examples for logs, archives, and SQLite.
Results
Published runs show the largest gains on tasks that require aggregation across scattered or oversized context.
| Benchmark | Direct baseline | Droste | Recorded cost |
|---|---|---|---|
| OOLONG, 131K tokens | 0.6020 | 0.6432 | $10.16 vs $26.18 |
| OOLONG-Pairs, 32K tokens | 0.034 | 0.80 | $2.14 vs $2.50 |
| BrowseComp-Plus, 6.0M to 11.1M tokens | Could not run | 0.9400 | $24.54 |
These are individual published runs, not universal quality or cost guarantees. See the results and caveats, or open the repository's benchmark guide for artifacts and reproduction steps.
Use it as a library
The same package is a dependency-free Python library. You can supply your own models and data providers, set hard compute budgets, and consume structured traces. Start with the embedding guide. Protocol and host implementers can use the technical reference.
Development
uv sync
uv run pytest
uv build
See CONTRIBUTING.md for the contribution workflow.
License
Apache-2.0. See LICENSE.
Metadata
Release files for droste 0.26.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| droste-0.26.0.tar.gz | 5.1 MB | Without provenance | Details for droste-0.26.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| droste-0.26.0-py3-none-any.whl | Python 3 | none | any | Details for droste-0.26.0-py3-none-any.whl |
Total release size: 5.4 MB
Release files / droste-0.26.0.tar.gz
| Download URL | droste-0.26.0.tar.gz |
|---|---|
| Size | 5.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6fcd9e86bf7053b5fc55d615bf1dd1b8cf9d928946c62a9c84b92e021b6bb8ee
|
|
BLAKE2b-256 checksum How to use checksums |
7b17ea68c1b9cdf1ca4be1b0428d6e2f9c1d41bd4c58a3df104f3f0bd9d26bb6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / droste-0.26.0-py3-none-any.whl
| Download URL | droste-0.26.0-py3-none-any.whl |
|---|---|
| Size | 319.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
06219b2707fbe696b9f1703a66590423a77ea27bd4b9d8a08bee4f89f06e57b0
|
|
BLAKE2b-256 checksum How to use checksums |
3977776bab46b732d436369af4937935514d7365958163f64b05e17cd38831ce
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for droste 0.26.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.