|
|
||
|---|---|---|
| .claude | ||
| .forgejo/workflows | ||
| .vscode | ||
| aiprompts | ||
| docs | ||
| installers | ||
| packages | ||
| patches | ||
| research/zos | ||
| scripts | ||
| .gitignore | ||
| .test | ||
| Cargo.toml | ||
| ci-containers.conf | ||
| ci_rhai.sh | ||
| ci_rust.sh | ||
| CLAUDE.md | ||
| LICENSE | ||
| Makefile | ||
| network_topology.md | ||
| README.md | ||
| test_mycelium.rhai | ||
Herocode Herolib Rust
A comprehensive System Abstraction Layer (SAL) and automation framework built in Rust, featuring a powerful Rhai-based scripting engine.
Quick Install
Install herodo (the Rhai runner) with a single command:
curl -sL https://forge.ourworld.tf/lhumina_code/hero_lib/raw/branch/main/scripts/install.sh | bash
This will:
- Detect your platform (Linux/macOS, amd64/arm64)
- Download the appropriate binary
- Install to
~/hero/bin/ - Add the path to your
~/.profile
After installation, start a new terminal or run:
export PATH="$HOME/hero/bin:$PATH"
Project Overview
Herolib provides a unified interface for system operations across different platforms. It is designed to be used both as a Rust library and as a scriptable automation tool via Rhai.
Key Packages
| Package | Description |
|---|---|
os |
Core system operations: Filesystem, Git, Network, Process management, and System Profiling. |
mos |
Multi-OS Service layer: Network namespaces, VETH setup, Dashboard UI, and System Facts. |
virt |
Virtualization and Containerization: CloudHypervisor integration and Buildah/Nerdctl wrappers. |
clients |
Integrated API clients for Redis, Postgres, MQTT, VastAI, Hetzner, Mycelium, and more. |
crypt |
Cryptographic primitives, HTTP signatures, and key management (Ed25519, Symmetric). |
vault |
Secure key and address management for various cryptographic applications. |
core |
Common utilities, HeroScript DSL, Text processing, and Logger. |
ai |
AI integration for chat, embeddings, and transcription. |
Development & CI
The project uses a multi-stage CI pipeline to ensure both Rust code and Rhai scripts are fully functional.
Build & Management
The project uses a centralized Makefile for all common tasks.
| Command | Description |
|---|---|
make build PKG=<name> |
Build a specific package (e.g., make build PKG=core) |
make install PKG=<name> |
Build and install a package binary to ~/hero/bin/ |
make run PKG=<name> |
Build and run a package binary (e.g., make run PKG=mos) |
make docs PKG=<name> |
Generate documentation for a specific package |
make build-all |
Build all packages in the workspace |
make install-all |
Install all available binaries |
make docs-all |
Generate documentation for all packages |
make herodo |
Specialized target to build the herodo shell |
make test |
Run full CI (Rust tests + Rhai scripts) |
make test-rust |
Run Rust unit and integration tests |
make test-rhai |
Run Rhai script tests |
make clean |
Clean all build artifacts |
CI Scripts
| Script | Description |
|---|---|
ci.sh |
Main CI Entry Point: Runs all Rust unit tests and triggers the Rhai CI runner. |
ci_rhai.sh |
Rhai Test Runner: Executes all valid Rhai scripts in the repository with exclusion management and reporting. |
Test Tracking
We maintain a real-time status of all Rhai scripts in RHAI_TRACKING.md. This file tracks which scripts are CI-ready, which are intentionally skipped, and their current execution status.
Automation with Rhai
Herolib exposes most of its functionality to the Rhai scripting language. This allows you to write powerful system automation scripts without recompiling Rust code.
Example: Checking Package Installation
if !package_is_installed("git") {
print("Installing git...");
package_install("git");
} else {
print("Git is already installed.");
}
Running Scripts
Use the herodo command to run any Rhai script:
herodo path/to/script.rhai
Prerequisites
- Rust toolchain (latest stable)
- Git
- Cargo login (only for maintainers publishing to crates.io)
License
See LICENSE for details.
Happy coding!