fix: rename overview.md files to avoid conflicts and add collection name
This commit is contained in:
88
docs/supervisor/supervisor.md
Normal file
88
docs/supervisor/supervisor.md
Normal file
@@ -0,0 +1,88 @@
|
||||
# Supervisor Overview
|
||||
|
||||
The Supervisor is the job dispatcher layer in Horus. It receives jobs, verifies signatures, and routes them to appropriate runners.
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
Client → Supervisor → Redis Queue → Runner
|
||||
```
|
||||
|
||||
## Responsibilities
|
||||
|
||||
### 1. **Job Admission**
|
||||
- Receive jobs via OpenRPC interface
|
||||
- Validate job structure and required fields
|
||||
- Verify cryptographic signatures
|
||||
|
||||
### 2. **Authentication & Authorization**
|
||||
- Verify job signatures using public keys
|
||||
- Ensure jobs are from authorized sources
|
||||
- Reject unsigned or invalid jobs
|
||||
|
||||
### 3. **Job Routing**
|
||||
- Route jobs to appropriate runner queues
|
||||
- Maintain runner registry
|
||||
- Load balance across available runners
|
||||
|
||||
### 4. **Job Management**
|
||||
- Track job status and lifecycle
|
||||
- Provide job query and listing APIs
|
||||
- Store job results and logs
|
||||
|
||||
### 5. **Runner Management**
|
||||
- Register and track available runners
|
||||
- Monitor runner health and availability
|
||||
- Handle runner disconnections
|
||||
|
||||
## OpenRPC Interface
|
||||
|
||||
The Supervisor exposes an OpenRPC API for job management:
|
||||
|
||||
### Job Operations
|
||||
- `create_job`: Submit a new job
|
||||
- `get_job`: Retrieve job details
|
||||
- `list_jobs`: List all jobs
|
||||
- `delete_job`: Remove a job
|
||||
- `get_job_logs`: Retrieve job execution logs
|
||||
|
||||
### Runner Operations
|
||||
- `register_runner`: Register a new runner
|
||||
- `list_runners`: List available runners
|
||||
- `get_runner_status`: Check runner health
|
||||
|
||||
## Job Lifecycle
|
||||
|
||||
1. **Submission**: Client submits job via OpenRPC
|
||||
2. **Validation**: Supervisor validates structure and signature
|
||||
3. **Queueing**: Job pushed to runner's Redis queue
|
||||
4. **Execution**: Runner processes job
|
||||
5. **Completion**: Result stored in Redis
|
||||
6. **Retrieval**: Client retrieves result via OpenRPC
|
||||
|
||||
## Transport Options
|
||||
|
||||
The Supervisor supports multiple transport layers:
|
||||
|
||||
- **HTTP**: Standard HTTP/HTTPS transport
|
||||
- **Mycelium**: Peer-to-peer encrypted transport
|
||||
|
||||
## Configuration
|
||||
|
||||
```bash
|
||||
# Start supervisor
|
||||
supervisor --port 8080 --redis-url redis://localhost:6379
|
||||
|
||||
# With Mycelium
|
||||
supervisor --port 8080 --mycelium --redis-url redis://localhost:6379
|
||||
```
|
||||
|
||||
## Security
|
||||
|
||||
- All jobs must be cryptographically signed
|
||||
- Signatures verified before job admission
|
||||
- Public key infrastructure for identity
|
||||
- Optional TLS for HTTP transport
|
||||
- End-to-end encryption via Mycelium
|
||||
|
||||
[→ Authentication Documentation](./auth.md)
|
||||
Reference in New Issue
Block a user