Static, deterministic LLM prompt/payload compression that cuts input tokens 30-90% with zero extra model calls.
Project description
llmtrim-uniffi
UniFFI bindings over llmtrim-core: one Rust
definition, idiomatic in-process bindings for Python, Ruby, Swift and Kotlin. The
compression runs natively in the caller's process (no server, no async).
API
A deliberately flat surface over the engine:
fn compress(
input: String, // a provider-shaped request body (JSON)
provider: Option<Provider>, // OpenAi | Anthropic | Google, or None to auto-detect
preset: Option<String>, // "aggressive" | "agent" | "code" | "rag" | "safe" | …
// None = config from the environment / config file
) -> Result<CompressOutput, LlmtrimError>
CompressOutput carries the compressed request_json, the resolved provider/model,
the tokenizer label/exactness, and the before/after/frozen input-token counts. Embedders
that need the full rehydration plan or per-stage reports should depend on llmtrim-core
directly in Rust.
In-process vs. the proxy
llmtrim has two integration routes:
- The proxy (
HTTPS_PROXY=127.0.0.1:8788 llmtrim) intercepts your existing traffic and compresses it in flight. Nothing in your code changes, but the client has to route through the proxy and trust its CA. - These bindings compress in your process. You call
compress()on the request body, then send the result with your own HTTP client. No proxy, no CA, no env-var setup.
Use the in-process path when the proxy can't run:
- Sandboxed / serverless functions where you can't set a process-wide
HTTPS_PROXYor run a side process. - Certificate-pinned clients that reject a MITM CA, so the proxy's interception fails.
- Anywhere you'd rather not add a network hop or an extra moving part.
It replaces a per-framework adapter: instead of wiring a hook into each SDK, you compress
the body once and POST it yourself. Runnable end-to-end examples (compress, then send with
your own client) are in examples/.
Python
# Build a self-contained wheel (cdylib + generated glue):
crates/llmtrim-uniffi/scripts/build-wheel.sh --release
pip install target/wheels/llmtrim-*.whl
import llmtrim, json
req = json.dumps({"model": "gpt-4o",
"messages": [{"role": "user", "content": "…"}]})
out = llmtrim.compress(req, llmtrim.Provider.OPEN_AI, "aggressive")
print(out.input_tokens_before, "->", out.input_tokens_after)
# send out.request_json to the provider
Why
build-wheel.shand not plainmaturin build: maturin'sbindings = "uniffi"auto-packaging is sensitive to the maturin↔uniffi version pair. With maturin 1.14 + uniffi 0.31 it builds the native library into the wheel but omits the generated Python glue (empty package__init__.py). The script runs maturin, then injects the freshly generated bindings and repacks the wheel with valid RECORD hashes. Remove it once the auto path packages cleanly.
Ruby / Swift / Kotlin
All targets generate from the same built library, no extra Rust. The generated glue is a build artifact (its checksums are pinned to the library ABI), so it is regenerated per release rather than committed:
crates/llmtrim-uniffi/scripts/generate-bindings.sh out/ # python, ruby, swift, kotlin
Generation needs an unstripped library. Library-mode
uniffi-bindgenreads metadata symbols from the cdylib, but the workspace release profile setsstrip = true. The script therefore generates from the (unstripped) debug build; the native library you ship can be a strippedcargo build --release -p llmtrim-unifficdylib; the glue loads it by name.
Ruby (verified). This is the raw generated binding (module LlmtrimFfi), for a
source build with libllmtrim_ffi.so on the load path. The published gem aliases it to
Llmtrim (require "llmtrim" then Llmtrim.compress(...)); see
packaging/ruby.
require_relative "llmtrim_ffi"
require "json"
out = LlmtrimFfi.compress(
JSON.generate({model: "gpt-4o", messages: [{role: "user", content: "…"}]}),
LlmtrimFfi::Provider::OPEN_AI, "aggressive")
puts "#{out.input_tokens_before} -> #{out.input_tokens_after}"
Swift emits llmtrim_ffi.swift + an FFI header and modulemap; Kotlin emits
uniffi/.../llmtrim_ffi.kt (which loads the cdylib via JNA). CI compiles and runs a smoke
for both: Swift on macOS (swiftc against the modulemap), Kotlin on a JVM (kotlinc +
JNA), so a binding break is caught in all four languages (see tests/swift, tests/kotlin
and the bindings* jobs in .github/workflows/ci.yml).
Publishable packages
Each ships the compiled engine bundled, so consumers need no Rust toolchain:
| Target | Build | Package | Verified |
|---|---|---|---|
| Python (PyPI) | scripts/build-wheel.sh |
wheel | locally |
| Ruby (gem) | scripts/build-gem.sh |
packaging/ruby/ |
locally |
| Kotlin/JVM (Maven) | scripts/build-maven.sh |
packaging/kotlin/ |
locally |
| Swift (SwiftPM) | scripts/build-xcframework.sh |
packaging/swift/ |
macOS CI only |
Each packaging/<lang>/README.md has the usage + publish details.
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 Distributions
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 llmtrim-0.3.2-py3-none-win_amd64.whl.
File metadata
- Download URL: llmtrim-0.3.2-py3-none-win_amd64.whl
- Upload date:
- Size: 8.0 MB
- Tags: Python 3, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9914797286a7539098618b6cfe096be3e0a1f17d9f0d9bbc03489f1673470979
|
|
| MD5 |
8251f437fd13e6347ad7e46edc565681
|
|
| BLAKE2b-256 |
a2ecc24eee6ca51bcd8145489fa17fb2af94dd995b73510950d6b4f02b91d0a4
|
Provenance
The following attestation bundles were made for llmtrim-0.3.2-py3-none-win_amd64.whl:
Publisher:
release-bindings.yml on fkiene/llmtrim
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
llmtrim-0.3.2-py3-none-win_amd64.whl -
Subject digest:
9914797286a7539098618b6cfe096be3e0a1f17d9f0d9bbc03489f1673470979 - Sigstore transparency entry: 1915531526
- Sigstore integration time:
-
Permalink:
fkiene/llmtrim@c3a0c383cfa6ef8265ab5152f0f7b9a708681bcc -
Branch / Tag:
refs/tags/v0.3.2 - Owner: https://github.com/fkiene
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-bindings.yml@c3a0c383cfa6ef8265ab5152f0f7b9a708681bcc -
Trigger Event:
push
-
Statement type:
File details
Details for the file llmtrim-0.3.2-py3-none-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: llmtrim-0.3.2-py3-none-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 7.9 MB
- Tags: Python 3, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b02b2b8704841f3e05d8fd3f536ddf24e3a04d4d2d1d2d35fb30bc0110fb18d2
|
|
| MD5 |
1e6b53e4f3e2ae05ae873f79860d00d7
|
|
| BLAKE2b-256 |
7a44ecededc12112fbec0d72a417eb06bd7fe2249c9acff8499abc6f7b40ee6c
|
Provenance
The following attestation bundles were made for llmtrim-0.3.2-py3-none-manylinux_2_34_x86_64.whl:
Publisher:
release-bindings.yml on fkiene/llmtrim
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
llmtrim-0.3.2-py3-none-manylinux_2_34_x86_64.whl -
Subject digest:
b02b2b8704841f3e05d8fd3f536ddf24e3a04d4d2d1d2d35fb30bc0110fb18d2 - Sigstore transparency entry: 1915532054
- Sigstore integration time:
-
Permalink:
fkiene/llmtrim@c3a0c383cfa6ef8265ab5152f0f7b9a708681bcc -
Branch / Tag:
refs/tags/v0.3.2 - Owner: https://github.com/fkiene
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-bindings.yml@c3a0c383cfa6ef8265ab5152f0f7b9a708681bcc -
Trigger Event:
push
-
Statement type:
File details
Details for the file llmtrim-0.3.2-py3-none-manylinux_2_34_aarch64.whl.
File metadata
- Download URL: llmtrim-0.3.2-py3-none-manylinux_2_34_aarch64.whl
- Upload date:
- Size: 7.8 MB
- Tags: Python 3, manylinux: glibc 2.34+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
86d5b297f7598f60c210bd6f18ab9aa1ef5714e8c5b02d45cdb0cadc99367144
|
|
| MD5 |
b99851577979fdf5d88d5eb821e6454a
|
|
| BLAKE2b-256 |
7f5efa93706ae8035aed8778968f84b9f1b1ec3bc4618c40aa2f6e189ec1da46
|
Provenance
The following attestation bundles were made for llmtrim-0.3.2-py3-none-manylinux_2_34_aarch64.whl:
Publisher:
release-bindings.yml on fkiene/llmtrim
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
llmtrim-0.3.2-py3-none-manylinux_2_34_aarch64.whl -
Subject digest:
86d5b297f7598f60c210bd6f18ab9aa1ef5714e8c5b02d45cdb0cadc99367144 - Sigstore transparency entry: 1915531738
- Sigstore integration time:
-
Permalink:
fkiene/llmtrim@c3a0c383cfa6ef8265ab5152f0f7b9a708681bcc -
Branch / Tag:
refs/tags/v0.3.2 - Owner: https://github.com/fkiene
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-bindings.yml@c3a0c383cfa6ef8265ab5152f0f7b9a708681bcc -
Trigger Event:
push
-
Statement type:
File details
Details for the file llmtrim-0.3.2-py3-none-macosx_11_0_arm64.whl.
File metadata
- Download URL: llmtrim-0.3.2-py3-none-macosx_11_0_arm64.whl
- Upload date:
- Size: 7.9 MB
- Tags: Python 3, 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 |
8c4e7afde8d9c4224663db5c311f95151987b599bc4858d7d66cc1331592ead7
|
|
| MD5 |
e7eae92cb400013fb0627440f637b96b
|
|
| BLAKE2b-256 |
7ffd7ef0a878bd6a79cb4b592a949d20f93d3d8cb4448bdb3cc2cebf0f4442d3
|
Provenance
The following attestation bundles were made for llmtrim-0.3.2-py3-none-macosx_11_0_arm64.whl:
Publisher:
release-bindings.yml on fkiene/llmtrim
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
llmtrim-0.3.2-py3-none-macosx_11_0_arm64.whl -
Subject digest:
8c4e7afde8d9c4224663db5c311f95151987b599bc4858d7d66cc1331592ead7 - Sigstore transparency entry: 1915531633
- Sigstore integration time:
-
Permalink:
fkiene/llmtrim@c3a0c383cfa6ef8265ab5152f0f7b9a708681bcc -
Branch / Tag:
refs/tags/v0.3.2 - Owner: https://github.com/fkiene
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-bindings.yml@c3a0c383cfa6ef8265ab5152f0f7b9a708681bcc -
Trigger Event:
push
-
Statement type:
File details
Details for the file llmtrim-0.3.2-py3-none-macosx_10_12_x86_64.whl.
File metadata
- Download URL: llmtrim-0.3.2-py3-none-macosx_10_12_x86_64.whl
- Upload date:
- Size: 7.8 MB
- Tags: Python 3, 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 |
2a6e3417d090088c8e71fd5c9c877b6e4637267f11fb7091157fa85751b6e31b
|
|
| MD5 |
bf89774071d2f2221b4f9a34f6e0704d
|
|
| BLAKE2b-256 |
bc3f830fcb3932506079201b2cc5baa45b2be53dfe1198dd17d3ffdb112cca40
|
Provenance
The following attestation bundles were made for llmtrim-0.3.2-py3-none-macosx_10_12_x86_64.whl:
Publisher:
release-bindings.yml on fkiene/llmtrim
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
llmtrim-0.3.2-py3-none-macosx_10_12_x86_64.whl -
Subject digest:
2a6e3417d090088c8e71fd5c9c877b6e4637267f11fb7091157fa85751b6e31b - Sigstore transparency entry: 1915531825
- Sigstore integration time:
-
Permalink:
fkiene/llmtrim@c3a0c383cfa6ef8265ab5152f0f7b9a708681bcc -
Branch / Tag:
refs/tags/v0.3.2 - Owner: https://github.com/fkiene
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-bindings.yml@c3a0c383cfa6ef8265ab5152f0f7b9a708681bcc -
Trigger Event:
push
-
Statement type: