lean-ctx (Python SDK)
Context compression for AI agents — a thin, dependency-free client for the local lean-ctx daemon.
pip install lean-ctx-sdk
Drop-in compress(messages, model)
Compress a chat-style messages array before sending it to any model. Only text
payloads are rewritten through lean-ctx's deterministic funnel; images,
tool-call blocks and ids pass through untouched, and the output is byte-stable so
it stays friendly to provider prompt caching.
from lean_ctx import compress
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": large_log_or_file_dump},
]
messages = compress(messages, model="claude-sonnet-4")
# → send `messages` to your provider as usual
Works with both OpenAI-style (content: "string") and Anthropic-style
(content: [{type: "text", …}, {type: "tool_result", …}]) messages.
Token-savings stats
from lean_ctx import ProxyClient
result = ProxyClient().compress(messages, model="gpt-4o")
print(result.saved_tokens, result.saved_pct) # e.g. 1840 63.1
messages = result.messages
Configuration
The endpoint and session token are auto-discovered from the running daemon. Every step is overridable:
| Setting | Env var | Default |
|---|---|---|
| Proxy URL | LEAN_CTX_PROXY_URL |
http://127.0.0.1:<port> |
| Proxy port | LEAN_CTX_PROXY_PORT |
config.toml proxy_port, else UID-derived |
| Session token | LEAN_CTX_PROXY_TOKEN |
<data_dir>/session_token |
Or pass them explicitly (useful in CI / against a remote proxy):
compress(messages, base_url="http://127.0.0.1:4444", token="…")
If the daemon is not running, compress() raises LeanCtxConnectionError; an
unauthenticated request raises LeanCtxAuthError. Both subclass LeanCtxError.
Framework integrations
LiteLLM
Compress requests transparently with a CustomLogger (pip install lean-ctx-sdk[litellm]):
import litellm
from lean_ctx import LeanCtxLiteLLMHandler
litellm.callbacks = [LeanCtxLiteLLMHandler(model="gpt-4o")]
# every completion now sends compressed messages
For non-proxy code, compress_request_data(data) rewrites the messages of any
OpenAI-style request dict in place.
LangChain
from langchain_core.messages import HumanMessage, SystemMessage
from lean_ctx import compress_messages
messages = compress_messages(
[
SystemMessage(content="You are a helpful assistant."),
HumanMessage(content=large_log_or_file_dump),
],
model="gpt-4o",
)
In both adapters a compaction failure never breaks the call — the original messages are kept.
CLI helpers
LeanCtxClient wraps the lean-ctx binary for read / search / shell /
gain / benchmark. The LeanCtxRetriever (LangChain) and LeanCtxNodeParser
(LlamaIndex) retrieval adapters are available via the langchain / llamaindex
extras.
Learn more
- compress() SDK cookbook — Python + TypeScript recipes
- lean-ctx vs Headroom — comparison + reproducible benchmark
License
MIT
Metadata
Release files for lean-ctx-sdk 0.3.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 |
|---|---|---|---|---|
| lean_ctx_sdk-0.3.0.tar.gz | 14.8 kB | Without provenance | Details for lean_ctx_sdk-0.3.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| lean_ctx_sdk-0.3.0-py3-none-any.whl | Python 3 | none | any | Details for lean_ctx_sdk-0.3.0-py3-none-any.whl |
Total release size: 27.1 kB
Release files / lean_ctx_sdk-0.3.0.tar.gz
| Download URL | lean_ctx_sdk-0.3.0.tar.gz |
|---|---|
| Size | 14.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
bde30dc49394b0e0ebb2d3e94ef3c57a4be36212e652abae32f0672e3c7025c4
|
|
BLAKE2b-256 checksum How to use checksums |
bdf16d25ed3e80dc9bfe480eb2c1eea750431597a94eaa7662582be9e1dce4e7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.6
|
Release files / lean_ctx_sdk-0.3.0-py3-none-any.whl
| Download URL | lean_ctx_sdk-0.3.0-py3-none-any.whl |
|---|---|
| Size | 12.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0e5489a8dc8270f1cbd45fcffdaa16e08007a8cadd5d7d989eb86caa847219fa
|
|
BLAKE2b-256 checksum How to use checksums |
70e5cbd2d8bbc20e8f8a8cb46f992b5f9b2949d461841d5de4afbe52b8ba7f67
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.6
|
Security for lean-ctx-sdk 0.3.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.