Pyve — Wrangle your virtual environments

A single, declarative entry point for all your project's environments.

One pyve.toml, any stack. Pyve auto-detects, pins versions, activates, and tears down across Python (venv/micromamba) and Node (pnpm/npm/yarn) — composed into one direnv activation, one .gitignore, and one health report.

Quick Start

# Install Pyve via Homebrew
brew install pointmatic/tap/pyve

# Initialize your project environment
cd ~/my-project
pyve init

# Run commands inside the environment
pyve run python --version
pyve run pytest tests/

Features

Everything you need to manage your project's environments, in one tool.

One-Command Setup

Initialize language versions, environments, direnv, and .gitignore in a single pyve init.

🌐

Polyglot by Design

One pyve.toml declares every stack. Python and Node today, more through a plugin contract — composed into one activation and one health report.

🔄

The Right Backend

venv or micromamba for Python; pnpm, npm, or yarn for Node — auto-detected from your project files.

Deterministic Execution

Run commands inside the project environment with pyve run — no manual activation, no shell state.

🚫

Clean Teardown

pyve purge removes all artifacts while preserving your secrets and user data.

CI/CD Ready

Non-interactive flags (--no-direnv, --auto-bootstrap, --strict) for reproducible pipelines.

🔍

Environment Diagnostics

pyve check reports health with CI-safe exit codes; pyve status snapshots what a project is.

🔧

Named Environments

Declare run / test / utility envs by name. pyve test runs in an isolated test env that survives force re-init.

Upgrade & Rebuild

pyve upgrade re-resolves dependencies without touching the env; pyve init --force rebuilds from the declaration and restores recorded state.

📦

Zero Dependencies

Pure Bash script — no runtime dependencies, no daemons, no background processes.

Why Pyve?

Make things easy and natural, but avoid being invasive.

One declarative manifest (pyve.toml) for every environment
Polyglot — Python and Node in one repo, composed cleanly
The right backend per stack — venv / micromamba / pnpm / npm / yarn
Automatic version management via asdf / pyenv / nvm / fnm / volta
direnv integration for seamless shell activation
Named environments by purpose (run / test / utility / temp)
CI/CD-ready with non-interactive flags
Clean teardown with pyve purge — preserves your secrets
In-place upgrades & state-restoring rebuilds (pyve upgrade / init --force)
Zero runtime dependencies — pure Bash, no daemons

Pyve is a focused command-line tool that gives every project a single, declarative entry point for setting up and managing its environments across language ecosystems on macOS and Linux. A root-level pyve.toml names each environment and its purpose; language plugins (Python and Node today, more through a stable contract) materialize them through their own backends and compose into one direnv activation, one .gitignore, and one health report. It supports interactive workflows with auto-activation and non-interactive CI/CD pipelines via explicit execution with pyve run.