Comprehensive SAL and automation framework for Hero OS with Rhai scripting.
  • Rust 99.1%
  • HTML 0.5%
  • Makefile 0.3%
Find a file
Sameh Abouel-saad 2c0255844c
Some checks failed
Lint / lint-linux (push) Failing after 32s
Tests with Services / test-linux (push) Failing after 2m6s
lab release / release (push) Successful in 38m21s
fix(webserver-admin): domain-scope jobs/logs/terminal pane rpc_url (#155)
The jobs/logs/terminal panes hardcoded rpc_url to the bare control-plane
/api/rpc (ping/discover_domains only), so their viewers' data calls returned
-32601 -- the panes #151 missed. Mirror the api-docs pane fix: resolve the
peer's domain via app.openrpc_domains and scope rpc_url to /api/{domain}/rpc
(proxy forwards verbatim to the peer rpc.sock). Constructors become async
(JobsPane::from_app, LogsPane::with_prefix/from_app, TerminalPane::from_app);
pane handlers await them. Falls back to "main" when no domain is discovered.

Verified: hero_lifecycle builds --features webserver-admin; 51/51 lib tests
pass serially. No external callers of these constructors (only the internal
pane handlers). No current consumer mounts these shared panes against a
control-plane peer, so this is a defensive close of the #151 gap.

Closes #155.
2026-06-15 08:22:11 +00:00
.claude refactor(derive,lifecycle): remove hero_serve_rpc! macro, expand server example with full CRUD 2026-05-30 15:55:18 +02:00
.codegraph drop brotli compression; add .codegraph/.gitignore 2026-06-14 12:37:31 +02:00
.forgejo/workflows ci: canonical lab-release (cargo check + multi-arch + hero.releaser) 2026-06-10 20:24:34 +02:00
.hero refactor: rename FORGEJO_TOKEN→FORGE_TOKEN, HERO_SOCKET_DIR→PATH_SOCKET; cmdline→cli kind 2026-05-26 12:00:10 +02:00
crates fix(webserver-admin): domain-scope jobs/logs/terminal pane rpc_url (#155) 2026-06-15 08:22:11 +00:00
docs refactor: rename FORGEJO_TOKEN→FORGE_TOKEN, HERO_SOCKET_DIR→PATH_SOCKET; cmdline→cli kind 2026-05-26 12:00:10 +02:00
examples cargo: remove all commented-out [patch] blocks; update web README with /api/rpc docs 2026-06-15 10:04:24 +02:00
patches cargo: comment out local [patch] overrides; add [workspace] to patch stubs 2026-06-14 15:26:42 +02:00
.gitignore feat: add OServer framework with auto-generated MCP from OSchema 2026-02-08 15:27:59 +01:00
.test Test 2026-01-02 09:58:52 +01:00
buildenv.sh chore: socat-only bridge, library-only install behaviour, sync build_lib.sh 2026-04-14 08:57:41 +02:00
Cargo.toml cargo: remove all commented-out [patch] blocks; update web README with /api/rpc docs 2026-06-15 10:04:24 +02:00
ci-containers.conf initial workflow with services (#69) 2026-01-29 16:07:30 +00:00
ci_rust.sh refactor: rename herolib_derive → herolib_macros across docs and CI 2026-06-06 13:57:26 +02:00
CLAUDE.md Update changes 2026-06-06 07:51:44 +02:00
LICENSE init 2025-12-08 08:46:44 +01:00
Makefile chore(lint+ci): fix build, resolve clippy warnings, install hero_proc in tests CI (#131) 2026-04-21 07:15:03 +00:00
README.md refactor: rename FORGEJO_TOKEN→FORGE_TOKEN, HERO_SOCKET_DIR→PATH_SOCKET; cmdline→cli kind 2026-05-26 12:00:10 +02:00
rust-toolchain.toml Update changes 2026-06-06 07:51:44 +02:00

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 hero_do (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 hero_do Specialized target to build the hero_do 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 hero_do command to run any Rhai script:

hero_do 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!