4.0 KiB
4.0 KiB
Horus Workspace Structure
The Horus workspace consolidates all Hero ecosystem components into a single, well-organized monorepo.
Workspace Members
Binaries (bin/)
bin/supervisor/
- Package:
hero-supervisor - Description: Main supervisor for managing actor runners
- Binaries:
supervisor - Library:
hero_supervisor
bin/osiris/
- Package:
osiris-server - Description: Osiris HTTP server for object storage
- Binaries:
osiris
bin/runners/sal/
- Package:
runner-sal - Description: System Abstraction Layer (SAL) runner
- Binaries:
runner_sal
bin/runners/osiris/
- Package:
runner-osiris - Description: Osiris-backed runner with database support
- Binaries:
runner_osiris
Libraries (lib/)
Models (lib/models/)
lib/models/job/
- Package:
hero-job - Description: Job model types and builders
- Library:
hero_job
Clients (lib/clients/)
lib/clients/job/
- Package:
hero-job-client - Description: Redis-based job client
- Library:
hero_job_client
lib/clients/supervisor/
- Package:
hero-supervisor-openrpc-client - Description: OpenRPC client for supervisor (native + WASM)
- Library:
hero_supervisor_openrpc_client
lib/clients/osiris/
- Package:
osiris-client - Description: Client library for Osiris
- Library:
osiris_client
Core Libraries
lib/runner/
- Package:
hero-runner - Description: Core runner library for executing jobs
- Library:
hero_runner
lib/osiris/core/
- Package:
osiris-core - Description: Osiris core - object storage and indexing
- Library:
osiris
lib/osiris/derive/
- Package:
osiris-derive - Description: Derive macros for Osiris
- Type: Procedural macro crate
Dependency Graph
bin/supervisor
├── lib/models/job
├── lib/clients/job
└── (jsonrpsee, redis, tokio, etc.)
bin/osiris
└── lib/osiris/core
└── lib/osiris/derive
bin/runners/sal
├── lib/runner
│ ├── lib/models/job
│ └── lib/clients/job
└── (SAL modules from herolib_rust)
bin/runners/osiris
├── lib/runner
│ ├── lib/models/job
│ └── lib/clients/job
└── lib/osiris/core
lib/clients/supervisor
├── lib/models/job
└── (jsonrpsee, WASM support)
lib/clients/osiris
├── lib/models/job
└── lib/clients/supervisor
lib/clients/job
└── lib/models/job
Build Commands
# Check entire workspace
cargo check --workspace
# Build entire workspace
cargo build --workspace
# Build specific package
cargo build -p hero-supervisor
cargo build -p osiris-core
cargo build -p runner-sal
# Run binaries
cargo run -p hero-supervisor --bin supervisor
cargo run -p osiris-server --bin osiris
cargo run -p runner-sal --bin runner_sal
cargo run -p runner-osiris --bin runner_osiris
Migration Notes
From External Repos
The following components were migrated into this workspace:
- Job (
/herocode/job/rust) →lib/models/job+lib/clients/job - Runner (
/herocode/runner/rust) →lib/runner+bin/runners/* - Osiris (
/herocode/osiris) →lib/osiris/*+bin/osiris+lib/clients/osiris - Supervisor (already in workspace) →
bin/supervisor+lib/clients/supervisor
Path Dependencies
All internal dependencies now use path-based references:
hero-job = { path = "../../lib/models/job" }osiris-core = { path = "../../lib/osiris/core" }- etc.
External dependencies (SAL modules, heromodels, etc.) remain as git dependencies.
Workspace Configuration
Shared dependencies are defined in the root Cargo.toml under [workspace.dependencies]:
- tokio, async-trait
- serde, serde_json
- redis, uuid, chrono
- jsonrpsee, axum, tower
- And more...
Individual crates reference these with .workspace = true:
[dependencies]
tokio.workspace = true
serde.workspace = true