Metadata-Version: 2.4
Name: verploy
Version: 0.0.11
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)

The fastest CI/CD system for agentic engineering.

`verploy verify` rebases worktrees and runs automated verifications. Coding agents run this from worktrees and docker containers.

`verploy deploy` builds on `verploy verify`, adding manual verification, fast-forward merging, and automated deployment. Users run this.

Rationale:
- Local-first workflows significantly reduce per-prompt latency compared to using remote agents and GitHub's CI/CD
- Manual verification should be programmatically defined on a per-project basis
- Worktree support enables agents to work independently
- Rebase conflict handling discourages agents from modifying git
- Docker containers are necessary to sandbox autonomous agents
- Agents should not have access to on-device 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

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

- `verify` -- runs verification checks (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)

## Usage

```bash
uv run verploy verify
uv run verploy deploy
```

## Example interaction: Automated rebase with Claude Code

```
❯ Run `uv run verploy verify` to check your changes

● Bash(uv run verploy verify)
  ⎿  Error: Exit code 1
     Committing worktree changes...
     Rebasing onto main...
     ╭───────────────────── Traceback (most recent call last) ──────────────────────╮
     │ /home/peter/src/verploy/.claude/worktrees/readme/src/verploy/verploy.py:75   │
     │ in verify_cmd                                                                │
     │                                                                              │
     │    72 @app.command("verify")                                                 │
     │    73 def verify_cmd(ctx: typer.Context) -> None:  # pragma: no cover        │
     │    74 │   worktree, repo_dir = ctx.obj                                       │
     … +72 lines (ctrl+o to see all)

● Rebase conflict. Let me find and resolve the conflict markers.

  Searched for 2 patterns (ctrl+o to expand)

● Main is at version 0.0.8 with the old description. I'll take the latest version from main
   and keep our updated description.

  Read 1 file (ctrl+o to expand)

● Update(pyproject.toml)
  ⎿  Removed 5 lines
       1  [project]
       2  name = "verploy"
       3 -<<<<<<< HEAD
       3  version = "0.0.8"
       5 -description = "A local-first CI/CD tool for agentic engineering."
       6 -=======
       7 -version = "0.0.6"
       4  description = "The fastest CI/CD system for agentic engineering."
       9 ->>>>>>> 770fd1f (Commit)
       5  readme = "README.md"
       6  authors = [{ name = "Peter Lavigne" }]
       7  requires-python = ">=3.12"

● Conflict resolved — kept version 0.0.8 from main with our new description. Let me re-run
  verify.

● Bash(uv run verploy verify)
  ⎿     Building verploy @ file:///home/peter/src/verploy/.claude/worktrees/readme
     warning: `build_system.requires = ["uv-build>=0.10.4,<0.11.0"]` does not contain
     the current uv version 0.11.7
     … +20 lines (ctrl+o to expand)

● All checks passed — linting, type checking, and tests (100% coverage). Changes are
  verified and ready to deploy.
```

## License

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