Metadata-Version: 2.4
Name: verploy
Version: 0.0.21
Summary: The fastest CI/CD system for agentic engineering.
Author: Peter Lavigne
License-Expression: Apache-2.0
License-File: LICENSE
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Dist: pl-run-program>=0.0.30
Requires-Dist: pl-user-io>=0.0.18
Requires-Dist: typer==0.21.1
Requires-Dist: pl-mocks-and-fakes>=0.0.30
Requires-Dist: pl-tiny-clients>=0.0.42
Requires-Python: >=3.12
Project-URL: Homepage, https://github.com/Peter-Lavigne/verploy
Project-URL: Repository, https://github.com/Peter-Lavigne/verploy
Description-Content-Type: text/markdown

# Verploy

[![PyPI version](https://img.shields.io/pypi/v/verploy)](https://pypi.org/project/verploy/)
[![Python versions](https://img.shields.io/pypi/pyversions/verploy)](https://pypi.org/project/verploy/)
[![License](https://img.shields.io/pypi/l/verploy)](./LICENSE)
[![Coverage](https://img.shields.io/badge/coverage-100%25-brightgreen)](https://github.com/Peter-Lavigne/verploy)
<!-- Coverage is enforced by pytest --cov-fail-under=100 -->

The fastest CI/CD system for agentic engineering.

Users run `verploy`, which runs manual verification, fast-forward merges worktrees, pushes, and deploys.

## Features

- Uses a local-first workflow to significantly reduce per-prompt latency compared to using remote agents and GitHub's CI/CD
- Manual verification is programmatically defined on a per-project basis
- Worktree support enables agents to work independently
- Works with Docker to sandbox agent execution and isolate deployment credentials

## Installation

Verploy is available as [`verploy`](https://pypi.org/project/verploy/) on PyPI.

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

```bash
uv add --dev verploy
```

## Setup

### 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](https://docs.anthropic.com/en/docs/claude-code/hooks) to enforce this automatically.

`.claude/settings.json`:
```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`:
```bash
#!/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`:
```bash
#!/bin/bash
set -euo pipefail

uv build --no-sources
uv publish
```

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

## Usage

```bash
uv run verploy
```

## License

Licensed under the Apache License 2.0. See [LICENSE](./LICENSE).
