Skip to main content

Verploy

PyPI version Python versions License Coverage

Verploy is an opinionated Claude Code orchestration tool aiming to maximize developer productivity. Verploy treats manual verification, such as code review, as the primary bottleneck of development.

Quickstart

"Claude, set up https://github.com/Peter-Lavigne/verploy for my project, and explain how to use it."

Features

Verploy allows defining deploy-gating and fine-grained manual checks on a per-project basis. Manual checks are more effective when developers commit more working memory to them, so Verploy aims to minimize the number of agents running in parallel by making the CI/CD process as fast as possible.

To that end, additional features include:

  • Everything is local-first to minimize latency compared to remote agents and CI/CD systems
  • Multi-agent support, so the developer is never waiting for an agent to finish
  • A fast-forward-only workflow prevents silent merge conflicts
  • Worktree support enables agents to work independently
  • Works with Docker to sandbox agent execution and isolate deployment credentials

Installation and setup

Installation

Verploy is available as verploy on PyPI.

Because Verploy uses other tools you have installed, it's recommended to install it per-project instead of globally:

uv add --dev verploy

Stop hook

Verploy expects changes to be committed and worktrees to be rebased onto main before it runs. Add verploy-hook as a Claude Code Stop hook to enforce this automatically.

.claude/settings.json:

{
  "hooks": {
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "uv run verploy-hook",
            "timeout": 600
          }
        ]
      }
    ]
  }
}

The hook checks that there are no uncommitted changes, the branch is rebased onto main (in worktrees), and runs the verify script if one exists.

Scripts

Add a .verploy/ directory to your project with any of these executable scripts:

  • verify (optional) -- runs automated quality checks on Stop (e.g. linting, type checking, tests)
  • manual -- runs manual checks (e.g. human review, expensive tests)
  • deploy -- runs after pushing (e.g. publishing to PyPI)

Example .verploy/ scripts

.verploy/verify:

#!/bin/bash
set -euo pipefail

uv run ruff format .
uv run ruff check --fix .
uv run pyright
uv run pytest --cov --cov-fail-under=100

.verploy/deploy:

#!/bin/bash
set -euo pipefail

uv build --no-sources
uv publish

.verploy/manual:

#!/bin/sh
read -p "Review the code. Is it acceptable? (y/n) " answer
[ "$answer" = "y" ]

Usage

uv run verploy

License

Licensed under the Apache License 2.0. See LICENSE.

Metadata

Release files for verploy 0.0.33

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

Source distribution (sdist)

Source distribution for verploy 0.0.33
File Size Uploaded
verploy-0.0.33.tar.gz 8.9 kB Details

Built distribution (wheel)

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

Total release size: 19.1 kB

Release files / verploy-0.0.33.tar.gz

Download URL verploy-0.0.33.tar.gz
Size 8.9 kB
Tags Source
SHA-256 checksum
How to use checksums
3ce87834318548a0e72f1ebe1dadafbc4aef286c91483ab25bb78105b3cf17d5
BLAKE2b-256 checksum
How to use checksums
5591fcb71157b1d661a4a16ff8e2233dbb1398eb329663e86f87a589e0836163
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","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":null}

Release files / verploy-0.0.33-py3-none-any.whl

Download URL verploy-0.0.33-py3-none-any.whl
Size 10.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9d2e9e6e0442ffaf0e32dbaa2e72bae01a497e2741b4765e4c33e019b8383676
BLAKE2b-256 checksum
How to use checksums
791680a56623c63b80c35284ae8cf4d8d2ef60bfb177f63aeab0c9bb7a1c5ded
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","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":null}
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