Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

PLLM

A high-performance private LLM multi-party inference runtime and autonomous research harness.

Get started · Learn · Research · Architecture · Security

PLLM is a Rust-first, Python-friendly system for private large language model inference. It separates client data from remote computation across explicit client, preparation, and inference roles. The same package provides a bounded research workflow for independently implementing, testing, benchmarking, and reviewing private-inference methods.

The project is built for high performance, but no universal speed or cost claim follows from that goal. Results depend on the model, protocol, hardware, network, and workload. See the evidence records for measured results and their limits.

Why PLLM

Ordinary hosted inference gives one provider the prompt, context, model state, and generated output. PLLM explores a different boundary: keep plaintext and private state in the client-controlled environment, and distribute protected computation across parties that are not assumed to share their views.

If this boundary can be made efficient and deployable, it could broaden the supply of useful AI compute. Buyers could compare independent, regional, and sovereign providers by price, location, latency, availability, and energy source without granting each provider access to plaintext language. These are intended economic and safety outcomes, not established production results.

Two connected systems

Multi-party inference runtime

Rust executes quantized integer matrix kernels, codecs, masking, and reconstruction. Python owns model orchestration, client and provider roles, checkpoint import, and the Responses API.

The current public-weight path prepares one-time matrix corrections before a request. Prompt text, token IDs, private activation scales, attention state, sampling, and decoded output stay inside the client boundary. Preparation and inference hold the public transformer body, but receive different protocol values at different times.

OFFLINE, before READY

Client                         Preparation                    Inference
authorize inventory      ───▶ verify commitments         ───▶ register inventory
stage seed + row count   ───▶ derive one-time masks
                              compute W*r-s              ───▶ store corrections
Client ◀────────────────────── acceptance acknowledgements ─ Inference
Client ─────────────────────── seal inventory ─────────────▶ READY

ONLINE, after reservation

Client                         Preparation                    Inference
ticket + x-r ───────────────────────────────────────────────▶ consume once
       ◀──────────────────────────────────────────────────── W*x-s
add s and decode                idle                           public-body GEMM

Preparation is not part of the online request path. Starting a response reserves one-time rows. Completion, cancellation, or failure burns every unused row in that reservation.

Autonomous research harness

PLLM also supports a reproducible research loop:

  1. Lock the paper, source revision, artifact hash, and license.
  2. Reimplement the method independently in PLLM's Rust and Python stack.
  3. Test semantic fidelity, numeric behavior, and privacy assumptions separately.
  4. Benchmark matched plans and preserve negative results.
  5. Produce reviewable evidence and citation records without publishing claims automatically.

Upstream research implementations are specification and oracle inputs. They are not vendored, linked, or used as PLLM runtime dependencies. Automated assessment can organize evidence, but a person must review publication claims.

Trust boundary

The prepared public-weight path assumes honest-but-curious, non-colluding roles:

  • Preparation must follow the protocol, erase expanded masks, and not collude with inference. Self-hosting preparation keeps that trust inside the client boundary.
  • Inference does not receive plaintext activations, but it is assumed to perform the documented computation. Authentication alone does not prove correct model execution.
  • Timing, public model identity, tensor shapes, traffic shape, and approximate sequence length can remain visible.
  • Two services controlled by one operator do not provide meaningful non-collusion.

This is not a malicious-security claim or a security certification. Read SECURITY.md before moving a workload across machines.

Get started

PLLM supports Python 3.11 through 3.13. Install the command from PyPI with uv:

uv tool install pllm.run
pllm --version
pllm --help
pllm components list

For the Python SDK, add the same package to a project:

uv add pllm.run
uv run python -c "import pllm; print(pllm.__version__)"

The CLI inspects configurations and research records, runs benchmarks, and starts the gateway, inference, and preparation roles. To exercise all roles on one machine, run the development dashboard:

pllm dev dashboard --tiny --no-open

--tiny uses generated weights to test transport behavior. Its output is not meaningful language and its measurements are not a production benchmark. Omit --tiny to use the default public checkpoint.

For the next steps, use the authored guides:

Python API

The public package exposes planning, compilation, benchmark, assurance, and runtime APIs. This example only lowers and inspects a semantic model plan; it does not download weights or perform inference:

import pllm
from pllm.profiles import MaskedLinearCpu

config = {
    "model_type": "qwen2",
    "hidden_size": 896,
    "intermediate_size": 4864,
    "num_hidden_layers": 24,
    "num_attention_heads": 14,
    "num_key_value_heads": 2,
    "vocab_size": 151936,
    "max_position_embeddings": 32768,
    "hidden_act": "silu",
    "rms_norm_eps": 1e-6,
    "rope_theta": 1000000,
    "tie_word_embeddings": True,
}

plan = pllm.lower_model(
    config,
    batch=1,
    max_input_tokens=128,
    max_new_tokens=32,
)
coverage = plan.coverage(MaskedLinearCpu(pllm.Model("Qwen/Qwen2.5-0.5B-Instruct")))
print(plan.digest)
print(coverage.to_dict())

Checkpoint resolution uses the separate typed loader and can perform network and disk work:

model = pllm.Model.hf(
    "Qwen/Qwen2.5-0.5B-Instruct",
    revision="7ae557604adf67be50417f59c2c2f167def9a775",
)
manifest = pllm.load_model(model)
print(manifest.checkpoint_digest)

Semantic lowering, complete compiler coverage, runtime execution, model quality, privacy evidence, and deployment support are separate claims.

Development

uv sync --extra he --extra sdk
cargo test
cargo clippy --workspace --all-targets -- -D warnings
uv run pytest
uv run ruff check python/pllm scripts tests
uv build

After changing Rust code:

uv run maturin develop --release
PLLM_REQUIRE_RUST=1 uv run pytest -m rust

Documentation regeneration and checks:

npm --prefix docs ci
uv run python scripts/docs_regen.py
uv run python scripts/docs_regen.py --check
npm --prefix docs run typecheck
npm --prefix docs run build

See RELEASING.md for release instructions.

Repository boundaries

python/pllm is the only installed Python namespace. crates/pllm-core has no Python dependency; crates/pllm-python exposes pllm._native. The Fumadocs site under docs/, papers under paper/, historical measurements under docs/evidence/, and research records under docs/data/research/ are not included in the wheel.

Code is licensed under Apache 2.0. Model checkpoints have separate licenses.

Metadata

Release files for pllm.run 0.1.0a2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pllm.run 0.1.0a2
File Size Uploaded Provenance
pllm_run-0.1.0a2.tar.gz 875.9 kB Without provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for pllm.run 0.1.0a2
File
pllm_run-0.1.0a2-cp311-abi3-win_amd64.whl CPython 3.11 abi3 Windows x86-64 Details
pllm_run-0.1.0a2-cp311-abi3-manylinux_2_28_x86_64.whl CPython 3.11 abi3 Linux glibc 2.28+ x86-64 Details
pllm_run-0.1.0a2-cp311-abi3-manylinux_2_28_aarch64.whl CPython 3.11 abi3 Linux glibc 2.28+ ARM64 Details
pllm_run-0.1.0a2-cp311-abi3-macosx_11_0_arm64.whl CPython 3.11 abi3 macOS 11.0+ ARM64 Details
pllm_run-0.1.0a2-cp311-abi3-macosx_10_12_x86_64.whl CPython 3.11 abi3 macOS 10.12+ x86-64 Details

Total release size: 10.8 MB

Release files / pllm_run-0.1.0a2.tar.gz

Download URL pllm_run-0.1.0a2.tar.gz
Size 875.9 kB
Tags Source
SHA-256 checksum
How to use checksums
283a0da93722d90daecce2d54c1c9d85e74e99d453fb1972bcb5f737cbc89b8f
BLAKE2b-256 checksum
How to use checksums
f77349e16b1cf33d17e27adf5f41b10300c78e129daa3f7cfc31be0e82dc07e5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / pllm_run-0.1.0a2-cp311-abi3-win_amd64.whl

Download URL pllm_run-0.1.0a2-cp311-abi3-win_amd64.whl
Size 2.1 MB
Tags CPython 3.11 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
3f5d6c7f99f760fe99e45cd8956b681c22ca5068a12d014c62ead22ff0cfd9ce
BLAKE2b-256 checksum
How to use checksums
4dcec5b8602ea7f50e70bf5f0968ea90baced682b9369d507eb9afd0263da22d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / pllm_run-0.1.0a2-cp311-abi3-manylinux_2_28_x86_64.whl

Download URL pllm_run-0.1.0a2-cp311-abi3-manylinux_2_28_x86_64.whl
Size 2.1 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
6dc06afe3d12c416a4a707ccf9ddfe4251948b7896e3f08f1aa85cc8193d5271
BLAKE2b-256 checksum
How to use checksums
5b458caa4695f944b490eedb7ae0468d81739175682bafc065c9286d93b89844
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / pllm_run-0.1.0a2-cp311-abi3-manylinux_2_28_aarch64.whl

Download URL pllm_run-0.1.0a2-cp311-abi3-manylinux_2_28_aarch64.whl
Size 1.9 MB
Tags CPython 3.11 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
8ab3aae1520b6c45bdf1d6e2a60bbb4be73b51d1a23d2745110901f54a04962f
BLAKE2b-256 checksum
How to use checksums
54d08c7954b00f3e00b502e4676edba9f97ea5e9d9ef64bba081395196396cc3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / pllm_run-0.1.0a2-cp311-abi3-macosx_11_0_arm64.whl

Download URL pllm_run-0.1.0a2-cp311-abi3-macosx_11_0_arm64.whl
Size 1.9 MB
Tags CPython 3.11 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
0b3c9c34f64d5cc83fb078b91fd9541cd87a757b93a90ad0b2a54f0e2f2f9366
BLAKE2b-256 checksum
How to use checksums
2c691462bd40487e78569c8ba7303959fd57593a0a9a230de726683a91ad08d2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / pllm_run-0.1.0a2-cp311-abi3-macosx_10_12_x86_64.whl

Download URL pllm_run-0.1.0a2-cp311-abi3-macosx_10_12_x86_64.whl
Size 2.0 MB
Tags CPython 3.11 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
b5595ff58e5c06f7935f0fe00b79d5124c468d10d164ea0b8454d9c4db703a93
BLAKE2b-256 checksum
How to use checksums
68d64442b3901be91d06f37d926724de5228a444db7b1fc57389cd37c4d758e5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for pllm.run 0.1.0a2

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.

Release history Release notifications | RSS feed

This release
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page