Skip to main content

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

Release License: Apache 2.0

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.

Furl in action

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 outputs before they enter context. Fail-open: never breaks a tool call.
  • 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 toolsfurl_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 with FURL_MCP_READ=1.
  • 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.

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

furl_ctx-1.0.2.tar.gz (780.2 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

furl_ctx-1.0.2-cp310-abi3-manylinux_2_28_x86_64.whl (5.4 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ x86-64

furl_ctx-1.0.2-cp310-abi3-manylinux_2_28_aarch64.whl (5.3 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ ARM64

furl_ctx-1.0.2-cp310-abi3-macosx_11_0_arm64.whl (5.2 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

furl_ctx-1.0.2-cp310-abi3-macosx_10_12_x86_64.whl (5.3 MB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

File details

Details for the file furl_ctx-1.0.2.tar.gz.

File metadata

  • Download URL: furl_ctx-1.0.2.tar.gz
  • Upload date:
  • Size: 780.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for furl_ctx-1.0.2.tar.gz
Algorithm Hash digest
SHA256 1f024d56fe824f5e8456d54bfc2d869d96d7de3969b9f3a932a457fd01a0f90b
MD5 4fb20003c94ce17fb9788c0e8501ab10
BLAKE2b-256 e4aaf1eed30e386ed8e1070a050f2ccb88c73f42b38cb8bbcefd5cfc53211e9b

See more details on using hashes here.

Provenance

The following attestation bundles were made for furl_ctx-1.0.2.tar.gz:

Publisher: release.yml on omar-y-abdi/furl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file furl_ctx-1.0.2-cp310-abi3-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for furl_ctx-1.0.2-cp310-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3d5e1f91194f2961ee36028b31453a51bc7a9ddaf63208b75614975916fe387e
MD5 438753fea2e5c4db8938168fb81e0702
BLAKE2b-256 1ea3b862a4acf671fe6356b97cb19393330fdc7d29f3676152cdde888d10b77e

See more details on using hashes here.

Provenance

The following attestation bundles were made for furl_ctx-1.0.2-cp310-abi3-manylinux_2_28_x86_64.whl:

Publisher: release.yml on omar-y-abdi/furl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file furl_ctx-1.0.2-cp310-abi3-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for furl_ctx-1.0.2-cp310-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8a217993a0e538348ce5bf22ce1b33d32a7b921cfa6c427fb5d603d531116032
MD5 e45bfa63a9cb77aa48e7bf64f7c7b540
BLAKE2b-256 b38eec5db19a435b888264c70206942fc56ef8f14052473c2ee4560d582d2c03

See more details on using hashes here.

Provenance

The following attestation bundles were made for furl_ctx-1.0.2-cp310-abi3-manylinux_2_28_aarch64.whl:

Publisher: release.yml on omar-y-abdi/furl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file furl_ctx-1.0.2-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for furl_ctx-1.0.2-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c36a46b1563e1a9b3434b1d41070dd09df8403a0ef16bde64e3dffaf730b3ce7
MD5 aa187cb9b7092fe3c551d1c5b510825e
BLAKE2b-256 8d4d58b76562e399ea6534ee9f776d5d45f49c6eb045a9b8f9a85d582a93fd8c

See more details on using hashes here.

Provenance

The following attestation bundles were made for furl_ctx-1.0.2-cp310-abi3-macosx_11_0_arm64.whl:

Publisher: release.yml on omar-y-abdi/furl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file furl_ctx-1.0.2-cp310-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for furl_ctx-1.0.2-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 bb909ad30eb01f8733176abb03936ca5cb5a84db621fe48bc3b0ebb90ce2799e
MD5 57945d808a3c767cc3ed57c5d3f3cddd
BLAKE2b-256 6c26e2a7a4514ba5c4808aff04f1509343fc04911753773ddcd1a399ab70cb43

See more details on using hashes here.

Provenance

The following attestation bundles were made for furl_ctx-1.0.2-cp310-abi3-macosx_10_12_x86_64.whl:

Publisher: release.yml on omar-y-abdi/furl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page