Skip to content

Installation Guide

Complete step-by-step guide for setting up the provide-workspace workspace.

Prerequisites

Before starting, ensure you have all required tools installed.

Installation Steps

Step 1: Clone the Workspace Repository

Clone the provide-workspace repository to your local machine:

git clone https://github.com/provide-io/provide-workspace.git
cd provide-workspace

This creates the workspace root directory.

Step 2: Bootstrap the Workspace

The bootstrap script clones all 13+ provide.io ecosystem repositories:

./scripts/bootstrap.sh

What it does:

  • Clones all ecosystem repositories as sibling directories
  • Uses gh (GitHub CLI) if available, falls back to git clone
  • Creates this directory structure:
parent-directory/
โ”œโ”€โ”€ provide-workspace/        # โ† You are here
โ”œโ”€โ”€ provide-foundation/      # Cloned by bootstrap
โ”œโ”€โ”€ provide-testkit/         # Cloned by bootstrap
โ”œโ”€โ”€ pyvider/                 # Cloned by bootstrap
โ”œโ”€โ”€ pyvider-cty/             # Cloned by bootstrap
โ”œโ”€โ”€ pyvider-hcl/             # Cloned by bootstrap
โ”œโ”€โ”€ pyvider-rpcplugin/       # Cloned by bootstrap
โ”œโ”€โ”€ pyvider-components/      # Cloned by bootstrap
โ”œโ”€โ”€ flavorpack/              # Cloned by bootstrap
โ”œโ”€โ”€ wrknv/                   # Cloned by bootstrap
โ”œโ”€โ”€ plating/                 # Cloned by bootstrap
โ”œโ”€โ”€ tofusoup/                # Cloned by bootstrap
โ”œโ”€โ”€ supsrc/                  # Cloned by bootstrap
โ”œโ”€โ”€ provide-foundry/         # Cloned by bootstrap
โ””โ”€โ”€ ... (additional repos)

Duration: 5-10 minutes depending on network speed

Alternative: Use Symbolic Links

If you already have repositories cloned elsewhere, you can use symbolic links:

# Bootstrap will skip cloning for existing directories
ln -s /path/to/existing/pyvider ../pyvider
./scripts/bootstrap.sh

The script is idempotent - safe to run multiple times.

Step 3: Install Dependencies

The setup script installs all packages in editable mode:

./scripts/setup.sh

What it does:

  • Detects if uv or pip is available
  • Creates a shared virtual environment at .venv/
  • Installs all packages in dependency order with editable installs
  • Configures the environment for cross-package development

Duration: 3-5 minutes

Output:

Setting up provide.io development workspace...
Detected uv - using modern Python package manager
Creating virtual environment at .venv/
Installing packages in dependency order...

Foundation Layer:
โœ“ provide-foundation
โœ“ provide-testkit

Framework Layer:
โœ“ pyvider-cty
โœ“ pyvider-hcl
โœ“ pyvider-rpcplugin
โœ“ pyvider
โœ“ pyvider-components

Tools Layer:
โœ“ flavorpack
โœ“ wrknv
โœ“ plating
โœ“ tofusoup
โœ“ supsrc

Setup complete! Activate the environment:
    source .venv/bin/activate

Step 4: Activate the Environment

Activate the shared virtual environment:

source .venv/bin/activate

You should see (.venv) in your shell prompt:

(.venv) user@host:~/provide-workspace$

Add to Your Shell Profile (optional but recommended):

# Add to ~/.bashrc or ~/.zshrc
alias activate-provide='source /path/to/provide-workspace/.venv/bin/activate'

Then use activate-provide from anywhere to activate the environment.

Step 5: Validate Your Setup

Run the validation script to verify everything is working:

./scripts/validate.sh

What it checks:

  • Python version (โ‰ฅ3.11)
  • Virtual environment activation
  • Package imports for all ecosystem packages
  • Environment variable configuration

Expected Output:

Validating provide.io development workspace...

Python Version Check:
โœ“ Python 3.11.5

Virtual Environment Check:
โœ“ Virtual environment is active

Package Import Checks:
โœ“ provide.foundation
โœ“ provide.testkit
โœ“ pyvider.cty
โœ“ pyvider.hcl
โœ“ pyvider.rpcplugin
โœ“ pyvider
โœ“ pyvider.components
โœ“ flavor
โœ“ wrknv
... (all packages)

All checks passed! โœ“

Your provide.io development workspace is ready.

If any checks fail, see Validation for troubleshooting.

Verification

After installation, verify the setup:

# Check that packages are installed in editable mode
pip list | grep provide
# Should show paths like: /Users/you/provide-workspace/provide-foundation

# Test an import
python3 -c "import pyvider; print(pyvider.__version__)"

# Run a simple test
cd pyvider/
uv run pytest tests/ -k "test_version"

Next Steps

Your provide-workspace workspace is now ready!

Learn the Basics

Start Developing

Pick a package and dive in:

# Example: Work on pyvider
cd pyvider/
code .  # Open in VS Code

# Make changes, run tests
uv run pytest

Build Documentation

View the complete ecosystem documentation:

cd provide-foundry/
make docs-serve
# Visit http://localhost:11000

Reinstalling

If you need to start over:

Clean Reinstall

# Remove virtual environment
rm -rf .venv/

# Reinstall
./scripts/setup.sh

Full Reset

# Remove all cloned repositories (CAUTION)
cd ..
rm -rf provide-*/  pyvider*/  flavor*/  wrknv  plating  tofusoup  supsrc

# Start fresh
cd provide-workspace/
./scripts/bootstrap.sh
./scripts/setup.sh

Updating

To update all repositories to latest:

# Update provide-workspace itself
git pull

# Update all ecosystem packages
for dir in ../*/; do
  (cd "$dir" && git pull)
done

# Reinstall dependencies if needed
./scripts/setup.sh

Troubleshooting

See Common Issues for solutions to common problems:

Alternative Installation Methods

Using Existing Repositories

If you already have some repositories cloned:

# Create symlinks for existing repos
ln -s /path/to/existing/repo ../repo-name

# Bootstrap will skip existing directories
./scripts/bootstrap.sh

# Setup as normal
./scripts/setup.sh

Minimal Installation

To install only specific packages (advanced):

# Bootstrap only certain repos
REPOS="provide-foundation pyvider" ./scripts/bootstrap.sh

# Install only those packages
./scripts/setup.sh

Note: Dependencies must be satisfied, so this requires understanding package relationships.

Getting Help

If you encounter issues:

  1. Check Troubleshooting
  2. Review package-specific CLAUDE.md and README.md files
  3. Open an issue in provide-workspace
  4. Ask in GitHub Discussions