- Simplified RunnerConfig to just name, command, and optional env - Removed RunnerType and ProcessManagerType enums - Removed db_path, redis_url, binary_path from config - Made runner name also serve as queue name (no separate queue param) - Added secret-based authentication to all runner management methods - Created comprehensive osiris_openrpc example - Archived old examples to _archive/ - Updated client API to match simplified supervisor interface
6.1 KiB
6.1 KiB
Mycelium Integration - Now Optional!
The Mycelium integration is now an optional feature. The supervisor can run with just the OpenRPC HTTP server, making it simpler to use and deploy.
What Changed
Before
- Mycelium integration was always enabled
- Supervisor would continuously try to connect to Mycelium on port 8990
- Error logs if Mycelium wasn't available
- Required additional dependencies
After
- ✅ Mycelium is now an optional feature
- ✅ Supervisor runs with clean OpenRPC HTTP server by default
- ✅ No connection errors when Mycelium isn't needed
- ✅ Smaller binary size without Mycelium dependencies
Running the Supervisor
Option 1: Simple OpenRPC Server (Recommended)
No Mycelium, just OpenRPC:
# Using the helper script
./run_supervisor_simple.sh
# Or manually
MYCELIUM_URL="" cargo run --bin supervisor -- \
--redis-url redis://localhost:6379 \
--port 3030
This starts:
- ✅ OpenRPC HTTP server on port 3030
- ✅ Redis connection for job queuing
- ❌ No Mycelium integration
Option 2: With Mycelium Integration
Enable Mycelium feature:
# Build with Mycelium support
cargo build --bin supervisor --features mycelium
# Run with Mycelium URL
MYCELIUM_URL="http://localhost:8990" cargo run --bin supervisor --features mycelium -- \
--redis-url redis://localhost:6379 \
--port 3030
This starts:
- ✅ OpenRPC HTTP server on port 3030
- ✅ Redis connection for job queuing
- ✅ Mycelium integration (connects to daemon)
Feature Flags
Available Features
| Feature | Description | Default |
|---|---|---|
cli |
Command-line interface | ✅ Yes |
mycelium |
Mycelium integration | ❌ No |
Building with Features
# Default build (CLI only, no Mycelium)
cargo build --bin supervisor
# With Mycelium
cargo build --bin supervisor --features mycelium
# Minimal (no CLI, no Mycelium)
cargo build --bin supervisor --no-default-features
Architecture
Without Mycelium (Default)
┌─────────────────┐
│ Client │
└────────┬────────┘
│ HTTP/JSON-RPC
▼
┌─────────────────┐
│ Supervisor │
│ OpenRPC Server │
│ (Port 3030) │
└────────┬────────┘
│ Redis
▼
┌─────────────────┐
│ Runners │
└─────────────────┘
With Mycelium (Optional)
┌─────────────────┐
│ Client │
└────────┬────────┘
│ HTTP/JSON-RPC
▼
┌─────────────────┐ ┌──────────────┐
│ Supervisor │◄────►│ Mycelium │
│ OpenRPC Server │ │ Daemon │
│ (Port 3030) │ │ (Port 8990) │
└────────┬────────┘ └──────────────┘
│ Redis
▼
┌─────────────────┐
│ Runners │
└─────────────────┘
Environment Variables
| Variable | Description | Default | Required |
|---|---|---|---|
MYCELIUM_URL |
Mycelium daemon URL | http://127.0.0.1:8990 |
No |
RUST_LOG |
Log level | info |
No |
To disable Mycelium:
export MYCELIUM_URL=""
Dependencies
Core Dependencies (Always)
tokio- Async runtimeredis- Job queuingjsonrpsee- OpenRPC serverrunner_rust- Job model
Mycelium Dependencies (Optional)
reqwest- HTTP clientbase64- Encodingrand- Random IDs
Examples
All examples work without Mycelium:
# Simple end-to-end example
RUST_LOG=info cargo run --example simple_e2e
# Full automated demo
RUST_LOG=info cargo run --example end_to_end_demo
Migration Guide
If you were using Mycelium
Before:
cargo run --bin supervisor
# Would try to connect to Mycelium automatically
After:
# Option A: Disable Mycelium (recommended for most use cases)
MYCELIUM_URL="" cargo run --bin supervisor
# Option B: Enable Mycelium feature
cargo run --bin supervisor --features mycelium
If you weren't using Mycelium
Before:
cargo run --bin supervisor
# Would see connection errors to port 8990
After:
cargo run --bin supervisor
# Clean startup, no connection errors! 🎉
Benefits
For Development
- ✅ Faster builds (fewer dependencies)
- ✅ Simpler setup (no Mycelium daemon needed)
- ✅ Cleaner logs (no connection errors)
- ✅ Easier debugging
For Production
- ✅ Smaller binary size
- ✅ Fewer runtime dependencies
- ✅ More flexible deployment
- ✅ Optional advanced features
Testing
Test without Mycelium
# Build
cargo build --bin supervisor
# Run tests
cargo test
# Run examples
cargo run --example simple_e2e
Test with Mycelium
# Build with feature
cargo build --bin supervisor --features mycelium
# Start Mycelium daemon (if you have one)
# mycelium-daemon --port 8990
# Run supervisor
MYCELIUM_URL="http://localhost:8990" cargo run --bin supervisor --features mycelium
Troubleshooting
"Mycelium integration not enabled"
This is informational, not an error. If you need Mycelium:
cargo build --features mycelium
"HTTP request failed: error sending request"
If you see this with Mycelium enabled, check:
- Is Mycelium daemon running?
- Is the URL correct? (
MYCELIUM_URL) - Is the port accessible?
Or simply disable Mycelium:
export MYCELIUM_URL=""
Summary
🎉 The supervisor now runs cleanly with just OpenRPC!
- Default: OpenRPC HTTP server only
- Optional: Enable Mycelium with
--features mycelium - No more connection errors when Mycelium isn't needed
- Simpler, faster, cleaner!
Status: ✅ Complete Version: 0.1.0 Last Updated: 2025-10-24