Upgrading prAxIs OS
Keep your prAxIs OS installation up-to-date with new features, standards, and improvements.
Quick Upgradeโ
There are two ways to upgrade prAxIs OS:
1. Workflow Approach (Recommended)โ
The simplest way for most users:
# In Cursor, say:
"Run the prAxIs OS upgrade workflow"
The AI will use the praxis_os_upgrade_v1 workflow to safely upgrade your installation with automatic backup and validation.
Total Time: ~3-4 minutes
2. Standalone Scriptโ
For direct command-line upgrades:
# Download and run directly (recommended - always latest)
curl -sSL https://raw.githubusercontent.com/honeyhiveai/praxis-os/main/dist/scripts/upgrade-praxis-os.py | python3 - /path/to/your/project
# Or download first, then run
curl -O https://raw.githubusercontent.com/honeyhiveai/praxis-os/main/dist/scripts/upgrade-praxis-os.py
python3 upgrade-praxis-os.py /path/to/your/project
# Upgrade from local praxis-os source (for development)
python3 upgrade-praxis-os.py /path/to/your/project --source /path/to/praxis-os
# Skip dependency updates (faster, for testing)
python3 upgrade-praxis-os.py /path/to/your/project --skip-deps
Total Time: ~2-3 minutes
Upgrade Workflow (Recommended)โ
The praxis_os_upgrade_v1 workflow provides a safe, automated upgrade process.
The workflow is being updated to leverage the new standalone script capabilities. Check the Standalone Script section below for the latest upgrade features.
Start the Workflowโ
# Via MCP tools
pos_workflow(
action="start",
workflow_type="praxis_os_upgrade_v1",
target_file="ouroboros",
options={
"source_path": "/path/to/praxis-os", # Or GitHub URL
"dry_run": false,
"auto_restart": true
}
)
What Gets Upgradedโ
The workflow updates:
-
Universal Standards (
.praxis-os/standards/universal/)- Concurrency patterns
- Architecture patterns
- Testing strategies
- Failure modes
- Security patterns
- MCP tool guides
- Operating model
- Update procedures
-
Workflows (
.praxis-os/workflows/)spec_creation_v1spec_execution_v1praxis_os_upgrade_v1- Any new workflows
-
MCP Server (
.praxis-os/ouroboros/)- Server code
- Dependencies
- Bug fixes
- New features
-
Configuration
.gitignoreentries (auto-updates from standards)- Version tracking
What's Preservedโ
Your customizations are never overwritten:
- โ
User Specs (
.praxis-os/specs/) - Completely untouched - โ
Development Standards (
.praxis-os/standards/development/) - Your language-specific standards - โ
Project Configuration -
.cursorrules,mcp.json
Upgrade Processโ
Phase 0: Pre-Flight Checks (30s)โ
Validates everything before starting:
- Source repository exists and is valid
- Target installation is healthy
- Sufficient disk space (~500MB)
- No concurrent upgrades running
- Git status is clean (if in git repo)
Phase 1: Backup & Preparation (20s)โ
Creates safety net:
- Timestamped backup:
.praxis-os.backup.YYYYMMDD_HHMMSS/ - Checksum manifest for validation
- Upgrade lock to prevent concurrent upgrades
Phase 2: Content Upgrade (60s)โ
Updates standards, usage, workflows:
- Dry-run first (preview changes)
- Actual upgrade with
rsync - Updates
.gitignorefrom standards - Verifies checksums
Safety: User-writable directories use rsync -av (NO --delete flag) to preserve your files.
Phase 3: MCP Server Upgrade (60s)โ
Updates server code and dependencies:
- Copies new MCP server code
- Updates Python dependencies
- Runs post-install steps (Playwright, etc.)
- Restarts MCP server (Cursor must be restarted)
After Phase 3, you must restart Cursor to reload the MCP server. The workflow automatically saves its state and resumes after restart.
Phase 4: Post-Upgrade Validation (30s)โ
Verifies everything works:
- MCP tools registered correctly
- RAG search operational
- Browser tools functional
- Workflow execution working
Phase 5: Cleanup (15s)โ
Finishes up:
- Releases upgrade lock
- Archives old backups (if any)
- Generates upgrade report
- Updates version tracking
Rollbackโ
If anything goes wrong, automatic rollback restores from backup:
Automatic Rollbackโ
If any phase fails (2, 3, or 4), the workflow automatically:
- Stops immediately
- Restores from
.praxis-os.backup.*/ - Releases upgrade lock
- Reports what failed
Target rollback time: < 30 seconds
Manual Rollbackโ
If you need to manually rollback:
# Stop MCP server (restart Cursor)
# Restore from backup
rm -rf .praxis-os
mv .praxis-os.backup.YYYYMMDD_HHMMSS .praxis-os
# Restart Cursor to reload MCP server
Version Trackingโ
prAxIs OS tracks what's installed:
# Check current version
cat .praxis-os/VERSION.txt
# Shows:
# version_installed=2025-10-08T12:00:00Z
# version_updated=2025-10-08T14:30:00Z
# commit=a1b2c3d
# source=/path/to/praxis-os
Upgrade Frequencyโ
When to Upgradeโ
Upgrade when:
- ๐ New features are released (check GitHub releases)
- ๐ Bug fixes for issues you're experiencing
- ๐ New standards for technologies you use
- ๐ New workflows that match your needs
When NOT to Upgradeโ
Skip upgrading when:
- โฐ In the middle of critical work
- ๐ฌ Running important tests/experiments
- ๐ Working on complex specs (finish first)
Standalone Script (Advanced)โ
The scripts/upgrade-praxis-os.py script provides direct command-line access to the upgrade system.
When to Use the Scriptโ
Use the standalone script when:
- ๐ค CI/CD pipelines - Automated upgrades in deployment scripts
- ๐ง Manual control - You want direct control over the upgrade process
- โก Speed - Skip workflow overhead (~1 minute faster)
- ๐งช Testing - Dry-run upgrades before workflow execution
Script Usageโ
# Download and run directly (recommended - always latest)
curl -sSL https://raw.githubusercontent.com/honeyhiveai/praxis-os/main/dist/scripts/upgrade-praxis-os.py | python3 - /path/to/your/project
# Or download first, then run with options
curl -O https://raw.githubusercontent.com/honeyhiveai/praxis-os/main/dist/scripts/upgrade-praxis-os.py
python3 upgrade-praxis-os.py /path/to/your/project --source /path/to/praxis-os # Local source
python3 upgrade-praxis-os.py /path/to/your/project --skip-deps # Skip pip install
Note: The script is self-contained (stdlib only) and can be run immediately without any dependencies.
What the Script Doesโ
The script performs the same operations as the workflow:
- Validation - Pre-flight checks (Python version, disk space, etc.)
- Backup - Creates timestamped backup with checksums
- Content Upgrade - Updates standards, workflows, usage docs
- MCP Server Upgrade - Updates ouroboros code
- Dependency Update - Runs
pip install -r requirements.txt(unless--skip-deps) - Verification - Validates checksums and structure
- Cleanup - Archives old backups, generates report
Script vs. Workflowโ
| Feature | Standalone Script | Workflow |
|---|---|---|
| Speed | ~2-3 minutes | ~3-4 minutes |
| Backup | โ Automatic | โ Automatic |
| Rollback | โ Automatic | โ Automatic |
| MCP Restart | โ ๏ธ Manual | โ Automatic |
| Resume After Restart | โ No | โ Yes |
| AI Guidance | โ No | โ Yes |
| CI/CD Friendly | โ Yes | โ No |
- Workflow: Best for interactive upgrades in Cursor with AI assistance
- Script: Best for automated deployments, CI/CD, or when you want direct control
CLI Optionsโ
python scripts/upgrade-praxis-os.py --help
Available options:
target_dir(required) - Path to project directory containing.praxis-os/--source PATH- Path to local praxis-os source (default: clone from GitHub)--skip-deps- Skippip install -r requirements.txt(faster, content-only upgrade)
Examplesโ
# Upgrade from GitHub latest (most common)
cd /path/to/your/project
python scripts/upgrade-praxis-os.py .
# Upgrade from local development copy
python scripts/upgrade-praxis-os.py . --source ~/dev/praxis-os
# Content-only upgrade (skip dependency installation)
python scripts/upgrade-praxis-os.py . --skip-deps
# Upgrade multiple projects
for project in project-a project-b project-c; do
python scripts/upgrade-praxis-os.py "$project"
done
Troubleshooting Script Upgradesโ
"Target directory does not exist"
Fix: Provide absolute or correct relative path
python scripts/upgrade-praxis-os.py /full/path/to/project
"Not a praxis-os installation"
Fix: Directory must contain .praxis-os/ directory
ls .praxis-os # Should exist
"Upgrade failed: checksums don't match"
Fix: Corruption detected, rollback automatic
# Backup is at: .praxis-os.backup.YYYYMMDD_HHMMSS/
# Restoration happens automatically on failure
Manual Upgrade (Legacy)โ
If you need manual control:
1. Backup Current Installationโ
cp -r .praxis-os .praxis-os.backup.$(date +%Y%m%d_%H%M%S)
2. Pull Latest Sourceโ
# If you have local clone
cd /path/to/praxis-os
git pull origin main
# Or fresh clone
git clone https://github.com/honeyhiveai/praxis-os.git /tmp/praxis-os-latest
3. Update Contentโ
# Update standards (prAxIs OS owned)
rsync -av --delete praxis-os/universal/standards/ .praxis-os/standards/universal/
# Update workflows
rsync -av --delete praxis-os/universal/workflows/ .praxis-os/workflows/
4. Update MCP Serverโ
# Copy server code
rsync -av --delete praxis-os/dist/ouroboros/ .praxis-os/ouroboros/
# Update dependencies
cd .praxis-os
./venv/bin/pip install -r ouroboros/requirements.txt
# Restart Cursor
5. Update .gitignoreโ
# Check for new required entries
# See: .praxis-os/standards/universal/installation/gitignore-requirements.md
Troubleshootingโ
"Upgrade failed in Phase 2"โ
Cause: File conflicts or permission issues
Fix:
- Check error message in upgrade report
- Manually resolve conflicts
- Re-run workflow
"MCP server won't start after upgrade"โ
Cause: Dependency mismatch or Python version
Fix:
# Rebuild virtualenv
rm -rf .praxis-os/venv
cd .praxis-os
python -m venv venv
./venv/bin/pip install -r ouroboros/requirements.txt
# Restart Cursor
"Workflow says concurrent upgrade running"โ
Cause: Previous upgrade didn't complete
Fix:
# Remove stale lock
rm -f .praxis-os/.upgrade_lock
# Re-run workflow
"Backup directory is huge"โ
Cause: Backups include vector index cache
Fix:
# Check backup size
du -sh .praxis-os.backup.*
# Safe to delete after 7 days of stable operation
rm -rf .praxis-os.backup.20251001_*
Note: Backups are NOT committed to git (in .gitignore)
What's New in Each Versionโ
v1.5.0 (October 8, 2025)โ
Added:
.gitignoremanagement (prevents 2.7GB of ephemeral files)- Workflow execution via
pos_workflowMCP tool current_dateMCP tool for preventing date errors- Installation step 04: gitignore configuration
- Single source of truth for gitignore requirements
Fixed:
- CRITICAL: Removed dangerous
--deletefrom user-writable directories - Phase 2 now safely preserves user documentation
Changed:
- Installation steps: 5 โ 6 (added gitignore)
- Upgrade Phase 2: 3 โ 4 tasks
- Total upgrade time: 3min 20s โ 3min 35s
v1.4.0 (October 7, 2025)โ
Added:
- Modular MCP server architecture
- Selective tool loading (performance optimization)
- Tool count monitoring (warns at >20 tools)
Changed:
- Configuration management with validation
- Dependency injection throughout
- Entry point simplified
Earlier Versionsโ
See CHANGELOG.md for complete history.
Best Practicesโ
Before Upgradingโ
- โ Commit your work - Clean git status
- โ Finish active specs - Complete what you're working on
- โ
Note your version - Check
VERSION.txtbefore upgrade - โ Read release notes - Know what's changing
After Upgradingโ
- โ Restart Cursor - Reload MCP server
- โ
Test MCP tools - Quick
search_standardsquery - โ Verify workflows - Check workflow list
- โ Review changes - See upgrade report
- โ Delete backup after 7 days - If no issues
Regular Maintenanceโ
- ๐ Check for updates monthly
- ๐งน Clean old backups quarterly
- ๐ Review upgrade reports
- ๐ Monitor MCP server logs
Related Documentationโ
- Installation - Initial setup
- MCP Tools - Available tools after upgrade
- Workflows - Workflow system overview