The context compression layer for AI agents - typically 0-54% fewer tokens on real high-entropy content, up to 95% on repetitive logs/fixtures (best-case ceiling), reversible via CCR
Project description
███████╗ ██╗ ██╗ ██████╗ ██╗ ██╔════╝ ██║ ██║ ██╔══██╗ ██║ █████╗ ██║ ██║ ██████╔╝ ██║ ██╔══╝ ██║ ██║ ██╔══██╗ ██║ ██║ ╚██████╔╝ ██║ ██║ ███████╗ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚══════╝ The context compression layer for AI agents![]()
Typically 0–54% fewer tokens on real high-entropy content · up to 95% on repetitive logs/fixtures (honest read) · a Claude Code plugin · local-first · reversible
Install · Proof · Library · Community
Furl compresses everything your Claude Code agent reads — tool outputs, logs, web fetches, RAG chunks — before it reaches the model. Same answers, a fraction of the tokens. Every dropped byte stays retrievable on demand.
The name is nautical: to furl is to roll up a sail — Furl rolls long context up out of the model's way and keeps it on a line, ready to unfurl (retrieve) the instant you need it.
Install
Two commands inside Claude Code:
/plugin marketplace add omar-y-abdi/furl
/plugin install furl@furl
That's it — this installs the compression hook, the MCP tools, and the skill. No pip install, no setup: Furl fetches itself on first use. Requires uv on your PATH (same as the official serena plugin).
What you get
- Auto-compression hook — shrinks large
Bash/WebFetch/WebSearch/Task(sub-agent) outputs before they enter context. Fail-open: never breaks a tool call. It does not touch yourRead/Grep/Globfile reads — by design, so a laterEditstill sees exact file bytes; those reads (often a coding agent's largest context cost) pass through uncompressed (why). - Signal-aware offload + sliceable retrieval — a payload too big to compress inline (e.g. a 33 MB trace) comes back as a structured summary (schema, per-field value histograms, example rows) instead of a truncated head/tail, and the agent pulls a narrow slice on demand —
retrieve(hash, select_field="name", select_equals="DroppedFrame")or a numeric range — without materializing the whole thing. - MCP tools —
furl_compress,furl_retrieve,furl_stats,furl_purge(erase stored originals),furl_search(find by content substring),furl_list(list stored entries). A seventh tool,furl_read, exists but is off by default — enable withFURL_MCP_READ=1(see LIBRARY.md). - Skill — explains the
<<ccr:HASH>>retrieval flow and how to tune or disable it.
Tuning, disabling (FURL_HOOK_ENABLED=0), and the full reference: plugins/furl/README.md. Retrieval TTL differs by surface: the library defaults to 30 minutes, while this Claude Code plugin ships a 24 h window (FURL_CCR_TTL_SECONDS=86400) via its MCP env.
Proof
Token reduction on real captured data — reproducible, inputs committed under benchmarks/data/. Every number uses the engine's own tokenizer; needle recall is 100% (a known unique row is always recoverable, in the output or via CCR). Read every figure below as a best-case ceiling, not a typical — the honest read follows.
Best-case ceilings — low-entropy dev fixtures (the compressor's happy path):
| Dataset | Items | Before | After | Reduction | Info retention |
|---|---|---|---|---|---|
| code | 7 | 41,025 | 471 | 99% | 100% |
| multiturn | 135 | 14,866 | 2,073 | 86% | 100% |
| logs | 90 | 8,595 | 619 | 93% | 100% |
| search | 90 | 4,102 | 318 | 92% | 100% |
| repeated logs | 90 | 3,621 | 120 | 97% | 100% |
| disk | 9 | 694 | 279 | 60% | 100% |
Across the corpus: 95% fewer tokens (72,903 → 3,880) at 100% information retention. Full methodology and the 6-seed adversarial sweep: BENCHMARKS.md.
Honest read: the numbers above are best-case, low-entropy ceilings measured on the dev fixtures — two independent, out-of-sample audits show they degrade by 6–43pp on fresh high-entropy / near-unique / realistic data (exactly where real logs and listings live). On genuinely high-entropy content, honest lossless savings sit in the 0–54% band, not 60–95% (code 0%, search 40%, repeated_logs 54%); read every figure here as a ceiling, not a typical, and see the tier-aware breakdown in BENCHMARKS.md.
The code row's 99% is CCR-offload of a large non-file-read tool output (e.g. Bash dumping source text); an agent's own Read/Grep/Glob file access bypasses the compression hook by design and passes through unchanged, at 0%.
Also a Python library
The same engine drops into any Python app or MCP host: from furl_ctx import compress. Install, usage, pipeline internals, prompt-caching contract, and the full FURL_* config reference live in LIBRARY.md.
Community
Questions or bug reports → open a GitHub issue (the surest way to reach us). For chat, there's a Discord.
License
Apache 2.0 — see LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file furl_ctx-1.0.3.tar.gz.
File metadata
- Download URL: furl_ctx-1.0.3.tar.gz
- Upload date:
- Size: 783.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
212659e8a0ef2df47ffcc6db1af0c2cdd6a2b11c898921b2971c262fd7db25da
|
|
| MD5 |
d03bf84cdbc1867d6b6406f1b3fab368
|
|
| BLAKE2b-256 |
822573e4db3b94e1c703f1ef2ae2337b48afdf4ada22ec653a5b492320bfa06a
|
Provenance
The following attestation bundles were made for furl_ctx-1.0.3.tar.gz:
Publisher:
release.yml on omar-y-abdi/furl
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
furl_ctx-1.0.3.tar.gz -
Subject digest:
212659e8a0ef2df47ffcc6db1af0c2cdd6a2b11c898921b2971c262fd7db25da - Sigstore transparency entry: 2146706109
- Sigstore integration time:
-
Permalink:
omar-y-abdi/furl@dc6b668d4a02959be4939c8b1f7b511a59ca94df -
Branch / Tag:
refs/tags/v1.0.3 - Owner: https://github.com/omar-y-abdi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@dc6b668d4a02959be4939c8b1f7b511a59ca94df -
Trigger Event:
release
-
Statement type:
File details
Details for the file furl_ctx-1.0.3-cp310-abi3-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: furl_ctx-1.0.3-cp310-abi3-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 5.4 MB
- Tags: CPython 3.10+, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2bb920eebcf41c71ef3795c3685b327db7cd44ea7935f47fc95f38b18f35f5b2
|
|
| MD5 |
0a068ac30af2f4ab51a368d59df47d9a
|
|
| BLAKE2b-256 |
4b4e02bdfe3348b5f82f08c051c835274cbb9061d48060271831b1ea47ce174e
|
Provenance
The following attestation bundles were made for furl_ctx-1.0.3-cp310-abi3-manylinux_2_28_x86_64.whl:
Publisher:
release.yml on omar-y-abdi/furl
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
furl_ctx-1.0.3-cp310-abi3-manylinux_2_28_x86_64.whl -
Subject digest:
2bb920eebcf41c71ef3795c3685b327db7cd44ea7935f47fc95f38b18f35f5b2 - Sigstore transparency entry: 2146706118
- Sigstore integration time:
-
Permalink:
omar-y-abdi/furl@dc6b668d4a02959be4939c8b1f7b511a59ca94df -
Branch / Tag:
refs/tags/v1.0.3 - Owner: https://github.com/omar-y-abdi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@dc6b668d4a02959be4939c8b1f7b511a59ca94df -
Trigger Event:
release
-
Statement type:
File details
Details for the file furl_ctx-1.0.3-cp310-abi3-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: furl_ctx-1.0.3-cp310-abi3-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 5.3 MB
- Tags: CPython 3.10+, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
65444ba66fc180eb3c2f38165fb1ea24b7ed1bdf8e2bd5c0eb705bcc7b39a0b0
|
|
| MD5 |
eadc66bf39aea53970ed962541f94a65
|
|
| BLAKE2b-256 |
777baa89f0b4d10c73c4d5cc50545a9158631b165d935a7fa93d9402ab1f5b1c
|
Provenance
The following attestation bundles were made for furl_ctx-1.0.3-cp310-abi3-manylinux_2_28_aarch64.whl:
Publisher:
release.yml on omar-y-abdi/furl
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
furl_ctx-1.0.3-cp310-abi3-manylinux_2_28_aarch64.whl -
Subject digest:
65444ba66fc180eb3c2f38165fb1ea24b7ed1bdf8e2bd5c0eb705bcc7b39a0b0 - Sigstore transparency entry: 2146706124
- Sigstore integration time:
-
Permalink:
omar-y-abdi/furl@dc6b668d4a02959be4939c8b1f7b511a59ca94df -
Branch / Tag:
refs/tags/v1.0.3 - Owner: https://github.com/omar-y-abdi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@dc6b668d4a02959be4939c8b1f7b511a59ca94df -
Trigger Event:
release
-
Statement type:
File details
Details for the file furl_ctx-1.0.3-cp310-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: furl_ctx-1.0.3-cp310-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 5.2 MB
- Tags: CPython 3.10+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f3a5bb004b81fb1712fb734830d87435be9006e52ca0fe9965429b9cc0a4b595
|
|
| MD5 |
265395378a5df25f643e69e75abb0d81
|
|
| BLAKE2b-256 |
99d4c30ac51247b65f6d5dd939c458e837912e70a7e2f82c7b04eecc09dc3073
|
Provenance
The following attestation bundles were made for furl_ctx-1.0.3-cp310-abi3-macosx_11_0_arm64.whl:
Publisher:
release.yml on omar-y-abdi/furl
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
furl_ctx-1.0.3-cp310-abi3-macosx_11_0_arm64.whl -
Subject digest:
f3a5bb004b81fb1712fb734830d87435be9006e52ca0fe9965429b9cc0a4b595 - Sigstore transparency entry: 2146706113
- Sigstore integration time:
-
Permalink:
omar-y-abdi/furl@dc6b668d4a02959be4939c8b1f7b511a59ca94df -
Branch / Tag:
refs/tags/v1.0.3 - Owner: https://github.com/omar-y-abdi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@dc6b668d4a02959be4939c8b1f7b511a59ca94df -
Trigger Event:
release
-
Statement type:
File details
Details for the file furl_ctx-1.0.3-cp310-abi3-macosx_10_12_x86_64.whl.
File metadata
- Download URL: furl_ctx-1.0.3-cp310-abi3-macosx_10_12_x86_64.whl
- Upload date:
- Size: 5.3 MB
- Tags: CPython 3.10+, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fbcc8a12af581a234b6d56bbf4ff3d90888068fe60d1198ef5c9a14b2430f7dd
|
|
| MD5 |
832a7f00004ad430f8cb235d92ae2cb4
|
|
| BLAKE2b-256 |
9b91a4f006fd7cdd73c8c1203cf1f0d890f0248e183907f888dac18d9c039bcc
|
Provenance
The following attestation bundles were made for furl_ctx-1.0.3-cp310-abi3-macosx_10_12_x86_64.whl:
Publisher:
release.yml on omar-y-abdi/furl
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
furl_ctx-1.0.3-cp310-abi3-macosx_10_12_x86_64.whl -
Subject digest:
fbcc8a12af581a234b6d56bbf4ff3d90888068fe60d1198ef5c9a14b2430f7dd - Sigstore transparency entry: 2146706129
- Sigstore integration time:
-
Permalink:
omar-y-abdi/furl@dc6b668d4a02959be4939c8b1f7b511a59ca94df -
Branch / Tag:
refs/tags/v1.0.3 - Owner: https://github.com/omar-y-abdi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@dc6b668d4a02959be4939c8b1f7b511a59ca94df -
Trigger Event:
release
-
Statement type: