How to install Ruvon¶
This guide covers installing Ruvon for different scenarios.
Package structure¶
Ruvon ships as three separate wheels so each deployment target only installs what it needs:
| Package | Contents | Install command |
|---|---|---|
ruvon-sdk |
Core engine + CLI | pip install ruvon-sdk |
ruvon-edge |
Edge agent (ruvon_edge) |
pip install ruvon-edge |
ruvon-server |
Cloud control plane (ruvon_server) |
pip install ruvon-server |
ruvon-edge and ruvon-server each declare ruvon-sdk as a dependency, so installing either sub-package also installs the core.
Prerequisites¶
- Python 3.10 or higher
- pip package manager
- (Optional) Docker for containerized setup
Installation paths¶
Choose the installation path that fits your needs:
Path 1: Edge device install¶
Best for: POS terminals, ATMs, kiosks, and other resource-constrained hardware
# Minimal (offline payment, SAF queue, SQLite — ~25 MB on disk)
pip install ruvon-edge
# With WebSocket commands + system health metrics (~40 MB)
pip install 'ruvon-edge[edge]'
Path 2: Cloud server install¶
Best for: Running the REST API + Celery workers in production
# REST API server
pip install 'ruvon-server[server,auth]'
# Celery workers
pip install 'ruvon-server[celery]'
# Everything (API + workers + auth)
pip install 'ruvon-server[all]'
Path 3: Core SDK only (SQLite)¶
Best for: Learning, prototyping, SDK development without server or edge agent
Install the SDK with SQLite support (no external database required):
# Clone repository
git clone https://github.com/your-org/ruvon-sdk.git
cd ruvon-sdk
# Install in development mode
pip install -e ".[postgres,performance,cli]"
pip install -e "packages/ruvon-edge[edge]"
pip install -e "packages/ruvon-server[server,celery,auth]"
Verify installation:
# Test CLI
ruvon --help
# Test SDK import
python -c "from ruvon.builder import WorkflowBuilder; print('✅ Ruvon SDK ready!')"
Configure SQLite persistence:
Path 2: Docker with PostgreSQL¶
Best for: SDK development with production-like database
Start PostgreSQL in Docker:
Install SDK:
Initialize database with Alembic migrations:
cd src/ruvon
export DATABASE_URL="postgresql://ruvon:ruvon_secret_2024@localhost:5433/ruvon_cloud"
alembic upgrade head
Verify connection:
from ruvon.implementations.persistence.postgres import PostgresPersistenceProvider
import asyncio
async def test():
p = PostgresPersistenceProvider('postgresql://ruvon:ruvon_secret_2024@localhost:5433/ruvon_cloud')
await p.initialize()
workflows = await p.list_workflows()
print(f'✅ PostgreSQL ready! Found {len(workflows)} workflows')
await p.close()
asyncio.run(test())
Path 3: Full stack with Docker Compose¶
Best for: Edge device development, full cloud control plane
Start all services:
Verify services:
docker compose ps
# Expected: postgres (healthy), ruvon-server (healthy)
curl http://localhost:8000/health
# Expected: {"status": "healthy"}
The database is automatically seeded with demo workflows and edge devices.
Ports:
- 8000 - Ruvon API server
- 5433 - PostgreSQL database
Optional dependencies¶
Celery for distributed execution¶
pip install celery redis
# Start Redis
docker run -d --name redis-server -p 6379:6379 redis
# Start Celery worker
export DATABASE_URL="postgresql://ruvon:ruvon_secret_2024@localhost:5433/ruvon_cloud"
export CELERY_BROKER_URL="redis://localhost:6379/0"
export CELERY_RESULT_BACKEND="redis://localhost:6379/0"
celery -A ruvon.celery_app worker --loglevel=info
PostgreSQL support¶
FastAPI server components¶
Verify installation¶
Run the SQLite demo:
Expected output:
======================================================================
RUVON SDK - SQLITE SIMPLE DEMO
======================================================================
🗄️ Using in-memory SQLite database
1. Initializing SQLite persistence...
✓ SQLite provider initialized
2. Creating a sample workflow...
✓ Workflow created: demo_workflow_001
[... more output ...]
======================================================================
DEMO COMPLETED SUCCESSFULLY
======================================================================
Common issues¶
Import error: "No module named 'ruvon'"¶
Install the SDK in editable mode:
Database schema missing¶
For PostgreSQL:
cd src/ruvon
export DATABASE_URL="postgresql://ruvon:ruvon_secret_2024@localhost:5433/ruvon_cloud"
alembic upgrade head
For SQLite (auto-creates schema):
Missing dependencies¶
Install all dependencies:
Next steps¶
Package footprint¶
Each wheel only ships the code you actually need:
| Wheel | On-disk size | Contents |
|---|---|---|
ruvon-sdk |
~2.5 MB | Core engine (ruvon/) + CLI (ruvon_cli/) |
ruvon-edge |
~250 KB | Edge agent (ruvon_edge/) |
ruvon-server |
~9.5 MB | Cloud control plane (ruvon_server/) |
Total installed footprint (wheel + core dependencies):
| Scenario | Command | Disk | RAM |
|---|---|---|---|
| Edge, minimal | pip install ruvon-edge |
~15–20 MB | ~50 MB |
| Edge + WebSocket/metrics | pip install 'ruvon-edge[edge]' |
~30–35 MB | ~65 MB |
| Edge + ONNX fraud scoring | above + pip install onnxruntime |
~80–600 MB* | ~115–165 MB |
| Cloud server (full) | pip install 'ruvon-server[all]' |
~35–45 MB | — |
* Varies by model file size. Model files are downloaded separately.
For per-file breakdowns, hardware requirements, and footprint reduction tips see Edge Device Package Footprint.
See also¶
- Configuration guide
- Deployment guide
- Edge Device Package Footprint
- QUICKSTART.md for quick start instructions