131 lines
2.6 KiB
Markdown
131 lines
2.6 KiB
Markdown
# Horus
|
|
|
|
Horus is a comprehensive workspace for Hero infrastructure components.
|
|
|
|
## Structure
|
|
|
|
In '/bin' you have the binaries for the components of Horus
|
|
- [Supervisor](./bin/supervisor)
|
|
- [Osiris Runner](./bin/runner)
|
|
- [SAL Runner](./bin/runner)
|
|
- [Hero Runner](./bin/runner)
|
|
|
|
In '/lib' you have shared libraries.
|
|
- [Clients](./lib/clients)
|
|
|
|
## Structure
|
|
|
|
```
|
|
horus/
|
|
├── bin/
|
|
│ └── supervisor/ # Hero Supervisor - job orchestration and runner management
|
|
└── lib/
|
|
└── clients/
|
|
└── supervisor/ # OpenRPC client for Hero Supervisor (native + WASM)
|
|
```
|
|
|
|
## Components
|
|
|
|
### Supervisor (`bin/supervisor`)
|
|
|
|
The Hero Supervisor manages job execution across distributed runners with:
|
|
- Job lifecycle management (create, start, stop, delete)
|
|
- Runner registration and management
|
|
- Redis-based job queuing
|
|
- Osiris integration for persistent storage
|
|
- OpenRPC JSON-RPC API with authentication
|
|
- CORS-enabled HTTP server
|
|
|
|
### Coordinator (`bin/supervisor`)
|
|
|
|
The Hero Supervisor manages job execution across distributed runners with:
|
|
- Job lifecycle management (create, start, stop, delete)
|
|
- Runner registration and management
|
|
- Redis-based job queuing
|
|
- Osiris integration for persistent storage
|
|
- OpenRPC JSON-RPC API with authentication
|
|
- CORS-enabled HTTP server
|
|
|
|
|
|
|
|
|
|
### Supervisor Client (`lib/clients/supervisor`)
|
|
|
|
OpenRPC client library for Hero Supervisor with dual-target support:
|
|
- **Native**: Full async Rust client using `jsonrpsee`
|
|
- **WASM**: Browser-compatible client for web applications
|
|
|
|
## Building
|
|
|
|
### Build everything
|
|
```bash
|
|
cargo build --workspace
|
|
```
|
|
|
|
### Build supervisor binary
|
|
```bash
|
|
cargo build -p hero-supervisor
|
|
```
|
|
|
|
### Build client library
|
|
```bash
|
|
cargo build -p hero-supervisor-openrpc-client
|
|
```
|
|
|
|
### Build WASM client
|
|
```bash
|
|
cd lib/clients/supervisor
|
|
wasm-pack build --target web
|
|
```
|
|
|
|
## Running
|
|
|
|
### Start the supervisor
|
|
```bash
|
|
cargo run -p hero-supervisor -- \
|
|
--bind-address 127.0.0.1 \
|
|
--port 3030 \
|
|
--redis-url redis://127.0.0.1:6379
|
|
```
|
|
|
|
### With configuration file
|
|
```bash
|
|
cargo run -p hero-supervisor -- --config config.toml
|
|
```
|
|
|
|
## Development
|
|
|
|
### Run tests
|
|
```bash
|
|
cargo test --workspace
|
|
```
|
|
|
|
### Check all code
|
|
```bash
|
|
cargo check --workspace
|
|
```
|
|
|
|
### Format code
|
|
```bash
|
|
cargo fmt --all
|
|
```
|
|
|
|
### Lint
|
|
```bash
|
|
cargo clippy --workspace -- -D warnings
|
|
```
|
|
|
|
## Dependencies
|
|
|
|
- **Rust**: 1.70+
|
|
- **Redis**: Required for job queuing
|
|
- **Osiris**: Optional, for persistent storage
|
|
|
|
## License
|
|
|
|
MIT OR Apache-2.0
|
|
|
|
|
|
## Installation
|
|
|
|
Horus is installed via heroscripts and herolib installers. This ensures safe, replicable, and versioned installation of Horus. See [installation heroscript](./scripts/install.md) |