Skip to main content

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: a generate helper 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 with laidline 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.1

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

Source distribution (sdist)

Source distribution for laidline 1.0.1
File Size Uploaded Provenance Actions
laidline-1.0.1.tar.gz 725.4 kB Without provenance Details for laidline-1.0.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for laidline 1.0.1
File Interpreter ABI Platform Actions
laidline-1.0.1-py3-none-any.whl Python 3 none any Details for laidline-1.0.1-py3-none-any.whl

Total release size: 1.6 MB

Release files / laidline-1.0.1.tar.gz

Download URL laidline-1.0.1.tar.gz
Size 725.4 kB
Tags Source
SHA-256 checksum
How to use checksums
3c9448f6bea8ff4048cfdb2e5c58e7d421fae650b5928a5e77dcf5a3c554cea1
BLAKE2b-256 checksum
How to use checksums
401a3fcb4d78f3c898c394fcf9e381955a03729f49f1d975617d0a8769339f76
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.1-py3-none-any.whl

Download URL laidline-1.0.1-py3-none-any.whl
Size 852.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3b194f8acf1578d66cbc3ae2149ab17307cfca41a40803e4a7059e70666fc854
BLAKE2b-256 checksum
How to use checksums
4146854d81f98b86c68605debdc7373007bf41d959dabdd3eaf8835efccff76d
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.1

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

1.0.1 This release

2 release files No provenance

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