This release has been yanked by its maintainers, and will be ignored by installers, except when explicitly specified.
Consider using release 1.0.1 instead.
Laidline
Laidline is a marking kit for generative AI providers. Every image, audio clip, video or long text your system produces leaves signed (a C2PA manifest, shown to readers as Content Credentials, signed with your own key), watermarked (open models, so anyone can check the result) and logged (a tamper-evident evidence log). Detection is free for everyone, and the EU AI Act Article 50 paperwork is pre-filled from the log. Laidline runs inside your own workers: media, models and keys stay on your infrastructure.
What it marks
- Image: PixelSeal by default, TrustMark selectable, with keyed payloads.
- Audio: AudioSeal, in any container PyAV reads, with streaming sessions for voice agents.
- Video: VideoSeal on a GPU, keyframe TrustMark on a CPU.
- Text: SynthID-style and KGW watermarks, applied through the vLLM and transformers plugins.
laidline detect returns graded evidence for any of them. It never says "human-made".
Install
Laidline needs Python 3.12 or newer. Install the extras for what you mark:
| Extra | What it enables | Command |
|---|---|---|
| (none) | the core: configuration, signing with a local key, the evidence log, the laidline CLI |
pip install laidline |
image |
mark and detect images | pip install "laidline[image]" |
audio |
mark and detect audio | pip install "laidline[audio]" |
video |
mark and detect video (add audio for the soundtrack) |
pip install "laidline[video,audio]" |
text |
detect text watermarks | pip install "laidline[text]" |
server |
laidline serve: the sidecar with native routes and an OpenAI-compatible proxy |
pip install "laidline[server]" |
ingest |
laidline ingest: the storage hook for S3, R2 and local directories |
pip install "laidline[ingest]" |
kms |
sign with AWS KMS or Vault/OpenBao Transit | pip install "laidline[kms]" |
evidence |
S3 and Postgres evidence sinks | pip install "laidline[evidence]" |
gcs |
Google Cloud Storage ingest | pip install "laidline[gcs]" |
lambda |
the AWS Lambda entry for the storage hook | pip install "laidline[lambda]" |
all |
every extra except lambda |
pip install "laidline[all]" |
Combine extras in one line: pip install "laidline[image,audio,server]".
The media extras pull in PyTorch, and the default build from PyPI includes CUDA (about 3.2 GB to download, even on a host without a GPU). On a CPU-only host, install the CPU build first and the extras after it:
pip install torch torchvision --index-url https://download.pytorch.org/whl/cpu
pip install "laidline[image,audio,server]"
Model weights download on first use. laidline models fetch downloads them ahead of time. The
install guide covers install sizes and GPU setup.
Hello world
pip install "laidline[image]"
laidline init --system-name my-image-model --org "Example Org" # writes laidline.yaml, a payload key and a development certificate
laidline mark in.png # writes in.marked.png and prints its asset id
laidline detect in.marked.png # graded evidence, never "human-made"
The same from Python, in your own worker:
from laidline import Marker
marker = Marker.from_config("laidline.yaml") # load once per process
marked = marker.mark_image("in.png", fmt="png")
open("out.png", "wb").write(marked.data)
Until you register, your marks carry a trial issuer number and the shared pool key. They read as a grade D shared mark: the watermark is found, but it does not identify you. Registering gives you a private mark and a certificate bound to your name; Going to production walks through it, with a key in your KMS and a trust-list certificate.
Plugins and tools
Each plugin is its own package and installs laidline with the extras it needs:
laidline-comfyui: a ComfyUI save node that marks every image it writes.laidline-diffusers:attach(pipe, marker)marks every image a diffusers pipeline returns.laidline-vllm: the vLLM logits processor for the text watermark.laidline-transformers: ageneratehelper that adds the text watermark.laidline-pipecat: a Pipecat processor that marks speech from your TTS service.laidline-livekit: a LiveKit Agents wrapper that marks speech from your TTS node.laidline-bench: the robustness and latency benchmarks, run withlaidline bench.
Integrations says which one fits where your outputs are produced.
Cost
Detection and verification are free, always. Marking is free up to 1,200 credits a month (one image is one credit), and nothing stops at the cap. Plans, credits and what happens above the free amount are on Licensing.
Licence
Laidline is source-available under the Laidline Source-Available Licence: you can read, run, modify and self-host it, but not use it to build a competing product or hosted service. It is not open source. Model weights download under their own licences; the third-party licences page lists them.
Documentation
Start with the quickstart. The overview is the full tour, configuration lists every setting and grading explains how to read a detect result.
Metadata
Release files for laidline 1.0.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 |
|---|---|---|---|---|
| laidline-1.0.0.tar.gz | 725.1 kB | Without provenance | Details for laidline-1.0.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| laidline-1.0.0-py3-none-any.whl | Python 3 | none | any | Details for laidline-1.0.0-py3-none-any.whl |
Total release size: 1.6 MB
Release files / laidline-1.0.0.tar.gz
| Download URL | laidline-1.0.0.tar.gz |
|---|---|
| Size | 725.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8c67cb85665d764a378cfa3d5cecf534f754a8e4b0e2005f709d261b9c9a8642
|
|
BLAKE2b-256 checksum How to use checksums |
c36363ae36a04b40411c25be9e24fc05a3b43b48226ee8f1e23077fe8cc8fe43
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.7
|
Release files / laidline-1.0.0-py3-none-any.whl
| Download URL | laidline-1.0.0-py3-none-any.whl |
|---|---|
| Size | 851.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1cc839f43869362759a5d742cc5d331c779033d0d46569d1fafbbde30f08f04f
|
|
BLAKE2b-256 checksum How to use checksums |
7d122a6520c18153b1afab41bf74bdda9317e3f2c367a97f0cdfc2b302a24cfb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.7
|
Security for laidline 1.0.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.