- Rust 47.4%
- JavaScript 37.3%
- HTML 8.8%
- CSS 4.6%
- Shell 1.9%
|
Some checks failed
lab publish / publish (push) Failing after 5m48s
deploy_webgateway can reach on-chain ready while the grid SDK read-back returns an empty fqdn (an intermittent miss). The deployer treated that as a hard error, which skipped the per-tester OAuth app and blocked install, stalling onboarding for that tester until manual intervention. A name gateway's fqdn is deterministic: <gateway_name>.<zone>, where the zone is the gateway node's domain suffix shared by every tester. When the daemon returns ready without an fqdn, derive it (zone from TFGRID_GATEWAY_ZONE or inferred from an existing tester's fqdn), persist it, and continue, so install + the login gate proceed normally. install_hero_stack's repair path reuses this, so a single Install recovers a tester that came up without a Cockpit URL. Signed-by: mik-tf <mik-tf@noreply.invalid> |
||
|---|---|---|
| .forgejo/workflows | ||
| crates | ||
| schema | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| Cargo.toml.hero_builder_backup | ||
| README.md | ||
| rust-toolchain.toml | ||
hero_tfgrid_deployer
Internal admin deployment tool for Hero OS demo environments on the ThreeFold Grid.
Purpose
Administrators use this tool to:
-
Deploy VMs on the ThreeFold Grid — create one VM per demo user or environment, select capacity/node/location as needed, and track VM status, IP, and access details.
-
Install Forge Hero OS — run
lab builderinside each VM after creation to deploy and configure Hero OS automatically, with status and logs visible in the admin interface. -
Manage Forge accounts — check whether a user account exists at
forge.ourworld.tf, create it if it does not, and link it to the deployed VM/Hero OS instance. -
Admin view — see all demo users, their associated VMs, and deployment status. Admins can access user machines directly (this is an internal demo tool, not a privacy environment).
-
User view — each demo user sees only their own Hero OS environment. Admin functionality is not visible in the user view.
Crate layout
| Crate | Role |
|---|---|
hero_tfgrid_deployer |
CLI — registers server + admin with hero_proc (--start / --stop) |
hero_tfgrid_deployer_server |
JSON-RPC 2.0 daemon over Unix socket (OpenRPC) |
hero_tfgrid_deployer_admin |
Admin web dashboard (Axum + Askama + Bootstrap) |
hero_tfgrid_deployer_sdk |
Typed OpenRPC client generated from openrpc.json |
Development
# Build all crates
lab build
# Start the service
hero_tfgrid_deployer --start
# Stop the service
hero_tfgrid_deployer --stop
Architecture
- Transport: Unix domain sockets under
$PATH_SOCKET/hero_tfgrid_deployer/ - RPC socket:
rpc.sock— JSON-RPC 2.0 / OpenRPC - Admin socket:
admin.sock— HTTP / Axum dashboard
The server exposes its spec at /openrpc.json and a health endpoint at /health.