Skip to content

Workspace Setup

Setting up a unified development environment for the provide.io ecosystem.

Overview

The Workspace section covers tools and approaches for managing multi-package development in the provide.io ecosystem.

provide-workenv

provide-workenv is the official workspace manager that coordinates all 13+ ecosystem repositories for unified development.

Key Features

Single-Command Setup
Clone all repositories, install dependencies, and configure your environment with three commands.
Coordinated Development
Work across multiple packages with editable installs and shared virtual environment.
Meta-Repository Pattern
Each package stays in its own repository while the workspace provides coordination.
Reference Implementation
Demonstrates best practices for using wrknv to manage multi-repository workspaces.

Quick Start

git clone https://github.com/provide-io/provide-workenv.git
cd provide-workenv
./scripts/bootstrap.sh
./scripts/setup.sh
source .venv/bin/activate

Get Started with provide-workenv →

Why Workspace Management?

The Challenge

The provide.io ecosystem consists of 13+ packages across three architectural layers: - Foundation Layer (provide-foundation, testkit) - Framework Layer (pyvider, pyvider-cty, pyvider-hcl, pyvider-rpcplugin, components) - Tools Layer (flavorpack, wrknv, plating, tofusoup, supsrc)

Working across these packages manually requires: - Cloning 13+ repositories - Installing dependencies in correct order - Managing virtual environments - Coordinating changes across packages

The Solution

provide-workenv automates workspace setup and coordination:

# Without workspace manager
git clone https://github.com/provide-io/provide-foundation.git
git clone https://github.com/provide-io/provide-testkit.git
git clone https://github.com/provide-io/pyvider-cty.git
# ... 10+ more clones ...
cd provide-foundation && python3 -m venv .venv && source .venv/bin/activate && pip install -e "."
cd ../provide-testkit && pip install -e "."
# ... manual setup for each package ...

# With workspace manager
git clone https://github.com/provide-io/provide-workenv.git
cd provide-workenv
./scripts/bootstrap.sh && ./scripts/setup.sh
source .venv/bin/activate

When to Use Workspace Setup

Use provide-workenv When:

✅ New to the ecosystem (easiest onboarding) ✅ Cross-package development ✅ Building providers that use multiple pyvider packages ✅ Contributing to multiple packages ✅ Testing integration between packages ✅ Building documentation ✅ Full ecosystem exploration

Use Individual Packages When:

✅ Working on single package only ✅ Using published packages (not developing them) ✅ Building applications on top of the framework ✅ Limited disk space or bandwidth

Workspace Architecture

provide-workenv uses a meta-repository pattern:

parent-directory/
├── provide-workenv/          # Workspace manager
│   ├── .venv/                # Shared virtual environment
│   ├── scripts/              # bootstrap, setup, validate
│   └── wrknv.toml            # Workspace configuration
├── provide-foundation/       # Foundation layer
├── provide-testkit/
├── pyvider/                  # Framework layer
├── pyvider-cty/
├── pyvider-hcl/
├── pyvider-rpcplugin/
├── pyvider-components/
├── flavorpack/               # Tools layer
├── wrknv/
├── plating/
├── tofusoup/
└── supsrc/

Each package: - Maintains its own git repository - Has independent history and releases - Can be worked on individually - Is installed in the shared .venv in editable mode

Learn about Meta-Repository Pattern →

wrknv Integration

provide-workenv is built on wrknv, the work environment management tool. It serves as a reference implementation showing how to use wrknv for multi-repository workspaces.

wrknv (the tool) : provide-workenv (the workspace) :: Make (the tool) : Makefile (the configuration)

You can use wrknv to create your own multi-repository workspaces following the provide-workenv pattern.

Learn about wrknv →

Next Steps