This release is a pre-release and may not be stable for production use.
pless
A searchable archive of your documents, on hardware you own.
pless sets up and operates a self-hosted Paperless-ngx
installation — on a Raspberry Pi, a cloud server, or a local VM — with two properties most
self-hosting guides skip:
- Encrypted at rest. Documents live on a LUKS2 volume whose key is never stored on the machine. A stolen box is a brick.
- Invisible on your LAN. After hardening, nothing listens on your local network. Paperless is bound to localhost and SSH answers only over Tailscale.
[!WARNING] Alpha.
plesscannot yet import documents or take backups — those are the next two milestones. Don't put your only copy of anything on it.
📖 Documentation →
Getting started, installation, maintenance and a cookbook live on the docs site.
Quick look
git clone https://github.com/kschulst/pless.git
cd pless
uv tool install --editable .
pless init --secrets
pless doctor
Then follow Installation.
Status
| Capability | Status |
|---|---|
| Provisioning, encrypted storage, deployment | ✅ Working |
| Tailscale access, LAN hardening, exposure audit | ✅ Working |
| Raspberry Pi target | 📋 Documented, awaiting hardware validation |
| Hetzner Cloud target | 📋 Code and unit tests, not validated live |
| Importing documents | ❌ Not built |
| Backup, restore, restore drills | ❌ Not built |
| Web setup wizard | ❌ Planned |
Verified end to end on Debian 13 and Ubuntu 24.04.
Development
uv sync
uv run pytest
uv run ruff check .
uv run ruff format .
zensical serve # docs at http://localhost:8000
See CONTRIBUTING.md for the full development guide, and
adr/ for why the architecture is the way it is.
Work in progress lives in issues.
Licence
MIT. See LICENSE.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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 pless-0.1.0a1.tar.gz.
File metadata
- Download URL: pless-0.1.0a1.tar.gz
- Upload date:
- Size: 46.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9a5d181f3645a8af80cd1c56abcc2ce9d1c8f0d8881f02a2201f89674497f4ce
|
|
| MD5 |
0da4e095e3c0b7d51ee4da3f08da36b1
|
|
| BLAKE2b-256 |
f609dc1866cd81961cde3fdd6f21083c42142f15ba96f4d90aba72c2865bbff0
|
Provenance
The following attestation bundles were made for pless-0.1.0a1.tar.gz:
Publisher:
release.yml on kschulst/pless
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pless-0.1.0a1.tar.gz -
Subject digest:
9a5d181f3645a8af80cd1c56abcc2ce9d1c8f0d8881f02a2201f89674497f4ce - Sigstore transparency entry: 2342166503
- Sigstore integration time:
-
Permalink:
kschulst/pless@816c99c45b0e855af4d8770765436cbc9f31d2f1 -
Branch / Tag:
refs/tags/v0.1.0a1 - Owner: https://github.com/kschulst
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@816c99c45b0e855af4d8770765436cbc9f31d2f1 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pless-0.1.0a1-py3-none-any.whl.
File metadata
- Download URL: pless-0.1.0a1-py3-none-any.whl
- Upload date:
- Size: 42.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
35ec154d024e3cb4f4d087b90a49924f9daf3587bdd2151a284d76e6253159af
|
|
| MD5 |
320f3f43363e6a6ef306b22cc93a84a1
|
|
| BLAKE2b-256 |
847309a0cde99bf4d9eb3a837d8f51ba2f4146dbfce23f2e9287365a7c610633
|
Provenance
The following attestation bundles were made for pless-0.1.0a1-py3-none-any.whl:
Publisher:
release.yml on kschulst/pless
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pless-0.1.0a1-py3-none-any.whl -
Subject digest:
35ec154d024e3cb4f4d087b90a49924f9daf3587bdd2151a284d76e6253159af - Sigstore transparency entry: 2342166525
- Sigstore integration time:
-
Permalink:
kschulst/pless@816c99c45b0e855af4d8770765436cbc9f31d2f1 -
Branch / Tag:
refs/tags/v0.1.0a1 - Owner: https://github.com/kschulst
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@816c99c45b0e855af4d8770765436cbc9f31d2f1 -
Trigger Event:
push
-
Statement type: