local-preview
A local-first preview-deployment orchestrator: every commit of a registered
git repository becomes a servable preview at its own subdomain
(<sha>-<repo>.preview.localhost:8080), built once, deduplicated by
content, and served from a single binary.
local-preview resolves each commit into a (frontend artifact, backend
artifact) pair by content-addressing the relevant subtrees. Commits that
don't touch the frontend (or backend) reuse the existing artifact — and the
already-running backend process. Backend state follows git lineage: a new
backend version forks its data from the nearest deployed ancestor, so
previews feel continuous on a straight line of commits while divergent
branches can never corrupt each other.
Install
uv tool install local-preview
This installs the binary to ~/.local/bin/preview.
Make sure to have that on your PATH.
Run
preview serve
The server listens on :8080. Open http://localhost:8080/ for the
dashboard.
Or with Docker Compose:
docker compose up -d
📖 Documentation
Full documentation lives at https://jmelahman.github.io/local-preview/:
- Quickstart — register a repo, deploy a commit, open the preview.
- Configuration — flags and env vars.
- REST API — endpoints exposed by the running server.
- CLI —
serve,repo,deploy,install-hook.
Metadata
Release files for local-preview 0.31.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| local_preview-0.31.2-py3-none-manylinux_2_17_x86_64.whl | Python 3 | none | Linux glibc 2.17+ x86-64 | Details |
| local_preview-0.31.2-py3-none-manylinux_2_17_aarch64.whl | Python 3 | none | Linux glibc 2.17+ ARM64 | Details |
| local_preview-0.31.2-py3-none-macosx_11_0_arm64.whl | Python 3 | none | macOS 11.0+ ARM64 | Details |
| local_preview-0.31.2-py3-none-macosx_10_12_x86_64.whl | Python 3 | none | macOS 10.12+ x86-64 | Details |
| local_preview-0.31.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 45.4 MB
Release files / local_preview-0.31.2-py3-none-manylinux_2_17_x86_64.whl
| Download URL | local_preview-0.31.2-py3-none-manylinux_2_17_x86_64.whl |
|---|---|
| Size | 9.3 MB |
| Tags | Linux glibc 2.17+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
75aad37f8d81af60e2c43230dbf71d93c0d6eca7d9c95e229958a76f056d7eca
|
|
BLAKE2b-256 checksum How to use checksums |
553e4cd4219e8cb33a4e7a540c7ac5fe584d684f3ba2797809e1ac544bde0994
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","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 / local_preview-0.31.2-py3-none-manylinux_2_17_aarch64.whl
| Download URL | local_preview-0.31.2-py3-none-manylinux_2_17_aarch64.whl |
|---|---|
| Size | 8.6 MB |
| Tags | Linux glibc 2.17+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
44a866d0948a9b4139c3bb0266cc9e2d93c06ab30519843e617c0dd89eb3a1f3
|
|
BLAKE2b-256 checksum How to use checksums |
2bf38911bf85982af83eb842901f3cc1c3dcc221997dc6a97d73fbcedce74033
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","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 / local_preview-0.31.2-py3-none-macosx_11_0_arm64.whl
| Download URL | local_preview-0.31.2-py3-none-macosx_11_0_arm64.whl |
|---|---|
| Size | 8.8 MB |
| Tags | Python 3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
2f5b945b5ca6726a361e54f5a03a7a349dfe6d15fdffc87fdbcff3d11186e839
|
|
BLAKE2b-256 checksum How to use checksums |
853edf7cb636d1b023b7fe960b1f12bb0ebdec2e9d1e6dcaa23ae1d8792c368c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","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 / local_preview-0.31.2-py3-none-macosx_10_12_x86_64.whl
| Download URL | local_preview-0.31.2-py3-none-macosx_10_12_x86_64.whl |
|---|---|
| Size | 9.4 MB |
| Tags | Python 3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
f6af447a3d6a478c62c30a40fd5c5d96f5a56e9fcb865a14286fcbf617f584f4
|
|
BLAKE2b-256 checksum How to use checksums |
fd7d9408e87d1440f00937e5785b07a61b387c4bc10acf59b4a95ba67120f753
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","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 / local_preview-0.31.2-py3-none-any.whl
| Download URL | local_preview-0.31.2-py3-none-any.whl |
|---|---|
| Size | 9.3 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
48e7da1a9e15a98bd750388ce90b678ffc476baa29583f7b3d876674e387775e
|
|
BLAKE2b-256 checksum How to use checksums |
447e883b2104b4168fcb7a88f81489bed1dfe380ee7a325371158a1ccaa8ce47
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","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}
|