- 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
		
			
				
	
	
		
			215 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			215 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
# Quick Start Guide
 | 
						|
 | 
						|
Complete guide to running the Hero Supervisor with OSIS runners and examples.
 | 
						|
 | 
						|
## Prerequisites
 | 
						|
 | 
						|
1. **Redis** - Must be running
 | 
						|
2. **Rust** - Version 1.88+ (run `rustup update`)
 | 
						|
 | 
						|
## 1. Start Redis
 | 
						|
 | 
						|
```bash
 | 
						|
redis-server
 | 
						|
```
 | 
						|
 | 
						|
## 2. Start Supervisor
 | 
						|
 | 
						|
```bash
 | 
						|
cd /Users/timurgordon/code/git.ourworld.tf/herocode/supervisor
 | 
						|
cargo run --bin supervisor
 | 
						|
```
 | 
						|
 | 
						|
You should see:
 | 
						|
```
 | 
						|
╔════════════════════════════════════════════════════════════╗
 | 
						|
║  Hero Supervisor Started                                   ║
 | 
						|
╚════════════════════════════════════════════════════════════╝
 | 
						|
  📡 OpenRPC Server: http://127.0.0.1:3030
 | 
						|
  🔗 Redis: redis://localhost:6379
 | 
						|
  🌐 Mycelium: Not compiled (use --features mycelium)
 | 
						|
╚════════════════════════════════════════════════════════════╝
 | 
						|
```
 | 
						|
 | 
						|
## 3. Start OSIS Runner
 | 
						|
 | 
						|
```bash
 | 
						|
cd /Users/timurgordon/code/git.ourworld.tf/herocode/runner_rust
 | 
						|
cargo run --bin runner_osis -- test_runner \
 | 
						|
    --redis-url redis://localhost:6379 \
 | 
						|
    --db-path /tmp/test_runner.db
 | 
						|
```
 | 
						|
 | 
						|
You should see:
 | 
						|
```
 | 
						|
Starting OSIS Sync Runner with ID: test_runner
 | 
						|
Database path: /tmp/test_runner.db
 | 
						|
Redis URL: redis://localhost:6379
 | 
						|
OSIS Sync Runner 'test_runner' started successfully
 | 
						|
```
 | 
						|
 | 
						|
## 4. Run Example
 | 
						|
 | 
						|
```bash
 | 
						|
cd /Users/timurgordon/code/git.ourworld.tf/herocode/supervisor
 | 
						|
RUST_LOG=info cargo run --example simple_e2e
 | 
						|
```
 | 
						|
 | 
						|
## Terminal Layout
 | 
						|
 | 
						|
```
 | 
						|
┌─────────────────────┬─────────────────────┐
 | 
						|
│  Terminal 1         │  Terminal 2         │
 | 
						|
│  Redis              │  Supervisor         │
 | 
						|
│  redis-server       │  cargo run --bin    │
 | 
						|
│                     │  supervisor         │
 | 
						|
├─────────────────────┼─────────────────────┤
 | 
						|
│  Terminal 3         │  Terminal 4         │
 | 
						|
│  OSIS Runner        │  Example            │
 | 
						|
│  cargo run --bin    │  cargo run          │
 | 
						|
│  runner_osis        │  --example          │
 | 
						|
│                     │  simple_e2e         │
 | 
						|
└─────────────────────┴─────────────────────┘
 | 
						|
```
 | 
						|
 | 
						|
## What Each Component Does
 | 
						|
 | 
						|
### Redis
 | 
						|
- Job queue storage
 | 
						|
- Job result storage
 | 
						|
- Runner coordination
 | 
						|
 | 
						|
### Supervisor
 | 
						|
- OpenRPC HTTP server (port 3030)
 | 
						|
- Job dispatch to runners
 | 
						|
- Runner registration
 | 
						|
- Job execution coordination
 | 
						|
 | 
						|
### OSIS Runner
 | 
						|
- Listens for jobs on Redis queue
 | 
						|
- Executes Rhai scripts
 | 
						|
- Stores results back to Redis
 | 
						|
- Uses HeroDB for data persistence
 | 
						|
 | 
						|
### Example
 | 
						|
- Creates jobs with Rhai scripts
 | 
						|
- Sends jobs to supervisor via OpenRPC
 | 
						|
- Receives results
 | 
						|
- Demonstrates both blocking and non-blocking modes
 | 
						|
 | 
						|
## Architecture
 | 
						|
 | 
						|
```
 | 
						|
┌─────────────┐
 | 
						|
│   Example   │  (simple_e2e.rs)
 | 
						|
└──────┬──────┘
 | 
						|
       │ HTTP/JSON-RPC
 | 
						|
       ▼
 | 
						|
┌─────────────┐
 | 
						|
│ Supervisor  │  (port 3030)
 | 
						|
└──────┬──────┘
 | 
						|
       │ Redis Queue
 | 
						|
       ▼
 | 
						|
┌─────────────┐
 | 
						|
│ OSIS Runner │  (test_runner)
 | 
						|
└──────┬──────┘
 | 
						|
       │
 | 
						|
       ▼
 | 
						|
┌─────────────┐
 | 
						|
│   HeroDB    │  (Redis + local DB)
 | 
						|
└─────────────┘
 | 
						|
```
 | 
						|
 | 
						|
## Troubleshooting
 | 
						|
 | 
						|
### "Connection refused" on port 3030
 | 
						|
- Make sure supervisor is running
 | 
						|
- Check if another process is using port 3030
 | 
						|
 | 
						|
### "Connection refused" on port 6379
 | 
						|
- Make sure Redis is running
 | 
						|
- Check: `redis-cli ping` (should return "PONG")
 | 
						|
 | 
						|
### Runner not receiving jobs
 | 
						|
- Check runner is registered: Look for "Runner registered successfully" in example output
 | 
						|
- Check Redis connection: Both supervisor and runner must use same Redis URL
 | 
						|
- Check queue name matches: Should be `hero:q:work:type:osis:group:default:inst:test_runner`
 | 
						|
 | 
						|
### "Job execution timeout"
 | 
						|
- Increase timeout in job builder: `.timeout(120)`
 | 
						|
- Check if runner is actually processing jobs (look for logs)
 | 
						|
 | 
						|
## Example Output
 | 
						|
 | 
						|
### Successful Run
 | 
						|
 | 
						|
```
 | 
						|
╔════════════════════════════════════════╗
 | 
						|
║  Simple End-to-End Demo               ║
 | 
						|
╚════════════════════════════════════════╝
 | 
						|
 | 
						|
📋 Step 1: Registering Runner
 | 
						|
─────────────────────────────────────────
 | 
						|
✅ Runner registered successfully
 | 
						|
 | 
						|
📋 Step 2: Running a Simple Job (Blocking)
 | 
						|
─────────────────────────────────────────
 | 
						|
✅ Job completed!
 | 
						|
   Result: {"message":"Hello from the runner!","number":42}
 | 
						|
 | 
						|
📋 Step 3: Running a Calculation Job
 | 
						|
─────────────────────────────────────────
 | 
						|
✅ Calculation completed!
 | 
						|
   Result: {"sum":55,"product":3628800,"count":10}
 | 
						|
 | 
						|
📋 Step 4: Starting a Non-Blocking Job
 | 
						|
─────────────────────────────────────────
 | 
						|
✅ Job started!
 | 
						|
   Job ID: abc-123 (running in background)
 | 
						|
 | 
						|
🎉 Demo completed successfully!
 | 
						|
```
 | 
						|
 | 
						|
## Next Steps
 | 
						|
 | 
						|
1. **Try different Rhai scripts** - Modify the payload in examples
 | 
						|
2. **Add more runners** - Start multiple runners with different IDs
 | 
						|
3. **Explore the API** - Use the OpenRPC client library
 | 
						|
4. **Build your own client** - See `clients/openrpc/` for examples
 | 
						|
 | 
						|
## Useful Commands
 | 
						|
 | 
						|
```bash
 | 
						|
# Check Redis
 | 
						|
redis-cli ping
 | 
						|
 | 
						|
# List Redis keys
 | 
						|
redis-cli keys "hero:*"
 | 
						|
 | 
						|
# Monitor Redis commands
 | 
						|
redis-cli monitor
 | 
						|
 | 
						|
# Check supervisor is running
 | 
						|
curl http://localhost:3030
 | 
						|
 | 
						|
# View runner logs
 | 
						|
# (check terminal where runner is running)
 | 
						|
```
 | 
						|
 | 
						|
## Clean Up
 | 
						|
 | 
						|
```bash
 | 
						|
# Stop all processes (Ctrl+C in each terminal)
 | 
						|
 | 
						|
# Clean up test database
 | 
						|
rm /tmp/test_runner.db
 | 
						|
 | 
						|
# (Optional) Flush Redis
 | 
						|
redis-cli FLUSHALL
 | 
						|
```
 | 
						|
 | 
						|
---
 | 
						|
 | 
						|
**Status:** ✅ Ready to Use
 | 
						|
**Last Updated:** 2025-10-24
 |