Skip to main content

local-preview

Test status Deploy Status Docs Go Reference PyPI

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:

docker compose up -d --build

Develop

# Backend on :8080 (wgo restarts on save; plain `go run` works too)
wgo run . serve

# Frontend on :5173, proxying /api to the backend
cd web && npm install && npm run dev

Docs site

The docs/ VitePress site deploys to GitHub Pages automatically: pushes to master that touch docs/** run .github/workflows/docs.yml, which builds the site and publishes it through the Pages Actions deploy (no gh-pages branch). Run it locally with:

cd docs && npm install && npm run docs:dev   # http://localhost:5175

See CLAUDE.md for the full development reference (tests, lint, E2E, docs conventions).

📖 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.
  • CLIserve, repo, deploy, install-hook.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

local_preview-0.1.1-py3-none-manylinux_2_17_x86_64.whl (5.5 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

local_preview-0.1.1-py3-none-manylinux_2_17_aarch64.whl (5.1 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

local_preview-0.1.1-py3-none-macosx_11_0_arm64.whl (5.3 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

local_preview-0.1.1-py3-none-macosx_10_12_x86_64.whl (5.6 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

local_preview-0.1.1-py3-none-any.whl (5.5 MB view details)

Uploaded Python 3

File details

Details for the file local_preview-0.1.1-py3-none-manylinux_2_17_x86_64.whl.

File metadata

  • Download URL: local_preview-0.1.1-py3-none-manylinux_2_17_x86_64.whl
  • Upload date:
  • Size: 5.5 MB
  • Tags: Python 3, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.2 {"installer":{"name":"uv","version":"0.12.2","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}

File hashes

Hashes for local_preview-0.1.1-py3-none-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 9316b22c3595b9502055132ede184244951353c182307c668f7573c955ab9f08
MD5 61bb52d1edc1bf98f56d702c538743e4
BLAKE2b-256 6775c8d78741cafc4217d14d8ff649b1884ccd467088fbaff0d0d964c1aa3c3b

See more details on using hashes here.

File details

Details for the file local_preview-0.1.1-py3-none-manylinux_2_17_aarch64.whl.

File metadata

  • Download URL: local_preview-0.1.1-py3-none-manylinux_2_17_aarch64.whl
  • Upload date:
  • Size: 5.1 MB
  • Tags: Python 3, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.2 {"installer":{"name":"uv","version":"0.12.2","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}

File hashes

Hashes for local_preview-0.1.1-py3-none-manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 24e77051186f711cf93cb269ace2d4148e8423dcb33cc6c0cca9dd50ef348bb7
MD5 56eab1bdc471bf2b26101187a9a921c2
BLAKE2b-256 f1e072c7b7bbb23075c373755d112cb98aed7c0c9f36a2dfe797b9f71299dcd3

See more details on using hashes here.

File details

Details for the file local_preview-0.1.1-py3-none-macosx_11_0_arm64.whl.

File metadata

  • Download URL: local_preview-0.1.1-py3-none-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 5.3 MB
  • Tags: Python 3, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.2 {"installer":{"name":"uv","version":"0.12.2","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}

File hashes

Hashes for local_preview-0.1.1-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 237bc606c31392516794e0c57d8b81050084ef7c1c45928ee5e94adcd621ecb1
MD5 26ba12d7c911ebe9b489004311e789d6
BLAKE2b-256 b060b510a69af234f05996ef8b178177d61307c39599ea6cee8cdc28cc9a96d5

See more details on using hashes here.

File details

Details for the file local_preview-0.1.1-py3-none-macosx_10_12_x86_64.whl.

File metadata

  • Download URL: local_preview-0.1.1-py3-none-macosx_10_12_x86_64.whl
  • Upload date:
  • Size: 5.6 MB
  • Tags: Python 3, macOS 10.12+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.2 {"installer":{"name":"uv","version":"0.12.2","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}

File hashes

Hashes for local_preview-0.1.1-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 4207d0f9a66f0ff16c3d5cf32433ca9403abf0b861f9aa7ae19038003234a2ab
MD5 7ce0b48f660fde511bce3e0ef049e179
BLAKE2b-256 d263360cd759adbdded9743b428ae05e8eb7ece8b9c4742b7529e5bd6398d38b

See more details on using hashes here.

File details

Details for the file local_preview-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: local_preview-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 5.5 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.2 {"installer":{"name":"uv","version":"0.12.2","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}

File hashes

Hashes for local_preview-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c985083256e4b224c0554c557605bde1618cdcbbfda5961cd236ed66a14daffb
MD5 325e8d3349ecb85ffaa8140bca01fdc8
BLAKE2b-256 367f54df740b9b2cc9146c05892c0a7a2a5b1b343f22c268a172b758cfdfa7b5

See more details on using hashes here.

Release history Release notifications | RSS feed

0.23.0

5 files

0.22.0

5 files

0.21.0

5 files

0.20.0

5 files

0.19.0

5 files

0.18.2

5 files

0.18.1

5 files

0.18.0

5 files

0.17.1

5 files

0.17.0

5 files

0.16.0

5 files

0.15.0

5 files

0.14.3

5 files

0.14.2

5 files

0.14.1

5 files

0.14.0

5 files

0.13.2

5 files

0.13.1

5 files

0.13.0

5 files

0.12.0

5 files

0.11.1

5 files

0.11.0

5 files

0.10.2

5 files

0.10.1

5 files

0.10.0

5 files

0.9.0

5 files

0.8.2

5 files

0.8.1

5 files

0.8.0

5 files

0.7.0

5 files

0.6.0

5 files

0.5.0

5 files

0.4.0

5 files

0.3.0

5 files

0.2.2

5 files

0.2.0

5 files

0.1.8

5 files

0.1.7

5 files

0.1.4

5 files

0.1.3

5 files

0.1.2

5 files

This release

0.1.1 This release

5 files

0.1.0

5 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page