Merge development branch to main #87

Closed
mahmoud wants to merge 0 commits from development into main
Owner
No description provided.
- Implement `resolve_external_vm` to inspect external VMs
- Use `chvm inspect` to get VM details
- Update VM state and IP based on external VM inspection
- Refresh VmManager cache after resolving external VM
Merge branch 'development' of ssh://forge.ourworld.tf/lhumina_code/hero_compute into development
All checks were successful
Test / test (push) Successful in 2m58s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 4m8s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 4m38s
f2e87f4849
refactor: Use chvm exec CLI directly for injecting SSH keys
All checks were successful
Test / test (push) Successful in 1m21s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 3m21s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 3m28s
0e786981c2
- Use `chvm exec` CLI instead of VmManager API
- Pass VM name as parameter instead of hypervisor ID
- Log stderr on failure for better debugging
fix: Use chvm stop and start for VM restart
All checks were successful
Test / test (push) Successful in 3m26s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 5m10s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 5m19s
d3342515f3
- Replace `chvm restart-vm` with `chvm stop` and `chvm start`
- Suppress stderr for the `chvm stop` command
feat: add VM health checks and system metric sparklines
All checks were successful
Test / test (push) Successful in 1m20s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 2m41s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 3m9s
c457b8af23
- Introduce `verify_vm_health` with ping, SSH, vsock checks
- Integrate VM health check into monitoring loop
- Enhance VM status logs for clarity and detail
- Replace dashboard progress bars with sparkline graphs
- Improve Live Stats UI layout with new cards and icons
feat: Implement live log polling for deployments
All checks were successful
Test / test (push) Successful in 1m23s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 4m20s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 4m30s
4a6a4c48c7
- Introduce `openLogDialogLive` for dynamic log display
- Add polling mechanism for `ComputeService.get_deployment_logs`
- Update log content and line count badge dynamically
- Stop polling automatically when log viewer modal closes
- Integrate live log viewing into VM detail actions
feat: add network bandwidth to node_stats
All checks were successful
Test / test (push) Successful in 1m18s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 2m41s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 3m8s
d595df93c1
Add network RX/TX bytes per second and total counters to NodeStats,
ExplorerNode, and heartbeat. Uses sysinfo::Networks with two-phase
sampling (piggybacks on existing 200ms CPU sleep), excludes loopback.
Admin and node pages show network health cards with sparklines.

#42
feat: revamp dashboard layout and add new metrics
Some checks failed
Test / test (push) Successful in 1m23s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Has been cancelled
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Has been cancelled
264e342f33
- Add network and load average health metrics
- Restructure dashboard into four distinct rows
- Improve sparkline rendering with dynamic max values
- Adjust activity feed to display 8 recent items
- Refine display for node status, mode, and slice capacity
feat: add robust VM deployment input validation
All checks were successful
Test / test (push) Successful in 2m4s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 3m6s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 3m25s
9f85ec0e61
- Validate VM name format, length, and presence
- Validate secret presence
- Add max slice count limit of 128
- Ensure minimum slice count of 1 in UI preview
feat: enhance VM deployment and list page UI
All checks were successful
Test / test (push) Successful in 2m24s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 2m40s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 3m53s
5ed20fad1f
- Add step-by-step VM deployment progress tracking
- Introduce VM summary cards for status overview
- Refactor deploy modal to switch between form and progress
- Update VM list page layout for improved visibility
- Dynamically refresh VM summary and deployment status
feat: add skeleton loading UI to health metrics
All checks were successful
Test / test (push) Successful in 1m41s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 3m28s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 3m29s
dfe33e613a
- Implement CSS for shimmer animation and skeleton styles.
- Integrate skeleton placeholders into health metric cards.
- Remove skeleton sparkline overlays when data loads.
- Add `#[serde(default)]` for network statistics fields.
- Adjust deploy modal section reset logic.
fix: clean up duplicate explorer nodes
All checks were successful
Test / test (push) Successful in 2m7s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 3m11s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 3m27s
2fd2dbdcc9
- Identify and remove duplicate nodes by hostname
- Remove serde default from network stats fields
feat: refresh VM summary and home page details
Some checks failed
Test / test (push) Successful in 1m22s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Has been cancelled
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Has been cancelled
7cdca09196
- Add `refreshVmSummaryFromTable` function
- Trigger summary refresh after VM row changes
- Calculate and display uptime in days
- Remove home health row skeleton placeholders
feat: Implement new dashboard charting and stat panels
Some checks failed
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Has been cancelled
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Has been cancelled
Test / test (push) Has been cancelled
4b34738fcc
- Add Grafana-style chart panel CSS
- Introduce compact stat indicator card CSS
- Redesign dashboard layout to integrate new charts
- Replace sparklines with rich time-series charts
- Refactor chart drawing JavaScript logic
style: Adjust chart panel and canvas layout
All checks were successful
Test / test (push) Successful in 2m29s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 2m41s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 3m57s
9eb47af69a
- Set min/max height for chart panel
- Apply overflow hidden to chart panel
- Position canvas absolutely within panel
- Remove display block from canvas
feat: revamp home dashboard layout and activity display
Some checks failed
Test / test (push) Successful in 2m28s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 2m32s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Has been cancelled
9bc7e8dcd7
- Remove dedicated Quick Actions panel
- Integrate quick actions into node status card
- Expand Recent Activity section to full width
- Display activity items in a table format
- Add status badge and time ago to activity entries
feat: redesign node dashboard with Grafana-style layout
All checks were successful
Test / test (push) Successful in 2m3s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 3m11s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 3m26s
66f888819a
- Restructure node dashboard with a multi-row grid
- Add dedicated system info and live stat panels
- Replace sparklines with multi-dataset time-series charts
- Enhance chart drawing logic and data history management
- Adjust load average precision and network detail display
feat: redesign node detail view dashboard
All checks were successful
Test / test (push) Successful in 1m23s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 4m11s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 4m24s
f5bb5f7936
- Restructure node detail page layout
- Add hero header with combined system info
- Introduce utilization gauges for key metrics
- Consolidate CPU & Load chart, remove disk chart
- Improve chart rendering and add legends
feat: redesign VM detail dialog for clarity
Some checks failed
Test / test (push) Successful in 1m40s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Has been cancelled
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Has been cancelled
b2103d3d31
- Implement two-column layout for VM details
- Display key specs (vCPUs, image) as badges
- Group IP address and SSH connection info
- Add re-inject SSH keys button for running VMs
- Dynamically style state hint banner for errors
refactor: Consolidate UI resource refresh logic
All checks were successful
Test / test (push) Successful in 1m23s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 4m7s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 4m23s
93811cf29c
- Introduce new `refreshAllResources()` function
- Replace various individual UI refresh calls
- Invoke full refresh after VM terminal state or deletion
- Call full refresh on deployment log updates and completion
- Remove redundant `refreshAllVmLists()` function
fix: Retain deployment log expanded state
Some checks failed
Test / test (push) Successful in 1m22s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Has been cancelled
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Has been cancelled
037a860e33
- Remove `autoExpand` logic for failed deployments
- Determine log expansion based on current DOM state
- Apply current expansion state to log content visibility
- Rotate chevron icon based on current expansion state
feat: show uptime in days; remove loading skeletons
All checks were successful
Test / test (push) Successful in 2m4s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 3m9s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 3m25s
6194df1dbc
- Calculate and display uptime in days
- Show '< 1 day' for uptime less than 24 hours
- Remove health card skeletons on first data load
refactor: comprehensive code review and cleanup
All checks were successful
Test / test (push) Successful in 1m41s
Test / test (pull_request) Successful in 1m45s
a1076cd90a
P0 fixes:
- Use constant-time comparison (subtle::ConstantTimeEq) for VM secrets
- Fix unwrap() panic in delete_vm error path (rpc.rs:2033)
- Remove stale crates/hero_cloud_server/ directory

P1 fixes:
- Replace /root hardcoding in HERO_PROC_SOCKET_DEFAULT with $HOME resolution
- Extract default VM image to constants (DEFAULT_IMAGE + DEFAULT_IMAGE_ENV)
- Extract registry URL to constants (REGISTRY_URL_ENV + REGISTRY_URL_DEFAULT)
- Convert all 125 JS var declarations to const/let in dashboard.js
- Move all static inline styles to CSS classes in templates
- Fix HypervisorDriver::create_vm to accept disk_gb parameter

P2 fixes:
- Add SSH key methods to docs/api.md
- Fix deploy_vm params in api.md, testing.md, explorer_spec.md (add ssh_keys)
- Fix job_logs param name: hero_proc_job_id → proc_job_id
- Update security docs to reflect constant-time secret comparison
- Add CSS utility classes for replaced inline styles
Merge branch 'development' into development_cleanup
All checks were successful
Test / test (push) Successful in 2m45s
Test / test (pull_request) Successful in 2m46s
a2f652b5b6
Merge pull request 'refactor: comprehensive code review and cleanup' (#43) from development_cleanup into development
All checks were successful
Test / test (push) Successful in 1m23s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 3m18s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 3m28s
b96d904e27
Reviewed-on: #43
refactor: Remove disk resize from VM deployment
All checks were successful
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 2m24s
Test / test (push) Successful in 2m25s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 4m7s
ddc0423f0d
- Remove `truncate` command for rootfs
- Remove `e2fsck` command
- Remove `resize2fs` command
- Update VM deployment command arguments
- Reflect virtiofs usage in command comment
feat: Redesign VM detail modal and add stats
All checks were successful
Test / test (push) Successful in 1m43s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 3m19s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 3m33s
ff8995e758
- Fetch VM stats in parallel with details
- Redesign VM detail modal layout with new sections
- Display state badge in modal header
- Add collapsible deployment log viewer
- Enable 'Restart' action for running VMs
feat: add SSH key re-injection confirmation
All checks were successful
Test / test (push) Successful in 2m46s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 4m8s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 4m17s
06d63ce166
- Display confirmation dialog with key details
- Fetch enabled SSH keys from server for re-injection
- Inform user about `authorized_keys` overwrite
- Improve clipboard copy fallback mechanism
- Add secure context check for `navigator.clipboard`
fix: Adjust confirm modal stacking and backdrop z-index
Some checks failed
Test / test (push) Failing after 53s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Failing after 1m25s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Failing after 1m58s
149c9e8474
- Set explicit z-index for confirm modal
- Correct backdrop z-index for stacked modals
- Change `const` to `var` for button element
feat: add disk size and storage quota to VM creation
All checks were successful
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 2m29s
Test / test (push) Successful in 2m35s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 4m11s
3501fb48de
- Accept `disk_gb` in `create_vm` function signature
- Calculate `quota_bytes` from `disk_gb`
- Set `block_disk_size_bytes` and `writable_quota_bytes`
- Include `--storage-quota` and `--disk-size` in `chvm create` command
- Update logging to include `disk_gb` parameter
feat: enhance VM stats retrieval and uptime display
All checks were successful
Test / test (push) Successful in 1m18s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 2m46s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 3m10s
49f0596ce0
- Route VM stats through explorer RPC in explorer mode
- Add uptime estimate fallback using VM creation time
feat: add VM console via WebSocket with xterm.js
Some checks failed
Test / test (push) Failing after 50s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Failing after 1m1s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Failing after 1m22s
cde350b903
Add browser-based VM terminal console using WebSocket and xterm.js.
Backend connects to chvm vsock socket with CONNECT 1025 handshake
and bridges bidirectionally with the browser WebSocket. Console
button appears in VM action buttons and detail dialog for running VMs.

#36
feat: install system packages and add component setup
Some checks failed
Test / test (push) Failing after 35s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Failing after 1m8s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Failing after 1m25s
86a3ccc28e
- Install virtiofsd, iptables, e2fsprogs via apt-get
- Add automatic installation for cloud-hypervisor
- Add automatic installation for mycelium
- Implement kernel build from source as default
- Install required dependencies for kernel compilation
feat: add VM guest hostname and console enhancements
Some checks failed
Test / test (push) Failing after 2m47s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 4m11s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Has been cancelled
b822bdd185
- Add `set_vm_hostname` function for VMs
- Apply user-defined hostname to new VMs
- Make VM console modal draggable
- Enable theme-aware terminal colors in console
- Update console modal styling and JS logic
build: Display full output of cargo build
Some checks failed
Test / test (push) Failing after 3m18s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Has been cancelled
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Has been cancelled
cb707986c6
fix: prevent console error on websocket disconnect
Some checks failed
Test / test (push) Failing after 1m38s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 3m28s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 3m36s
a0e5c96a8c
- Add `_consoleTerm` null check before writing
- Update `chvm-lib` version to 0.1.1
- Adjust `windows-sys` and `socket2` dependency versions
- Unpin specific `windows-targets` versions
feat: implement console auto-reconnect with backoff
Some checks failed
Test / test (push) Failing after 1m18s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 3m15s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 3m27s
592dd928ea
- Introduce `consoleConnect` function
- Add exponential backoff for reconnect attempts
- Prevent auto-reconnect on intentional user close
- Persist console session data for reattempts
- Update console status and terminal messages
feat: Add version endpoint and enhance node cards
Some checks failed
Test / test (push) Failing after 1m14s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 2m41s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 3m8s
4181527a84
- Add `/version` API endpoint to provide app info
- Display git hash and chvm version in sidebar
- Redesign explorer node cards with detailed layout
- Implement resource usage bars for CPU, RAM, Disk
- Visualize node slices using a mini grid component
fix: Limit card fade-in animation to first render
Some checks failed
Test / test (push) Failing after 1m17s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 2m32s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 3m31s
5860084b83
- Introduce flag to track initial render state
- Apply fade-in class only for initial render
- Avoid redundant animation on subsequent updates
chore: Adjust default heartbeat interval
Some checks failed
Test / test (push) Failing after 3m21s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Has been cancelled
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Has been cancelled
271f345f34
- Set default heartbeat interval to 60 seconds
- Update configuration parsing and test
- Add worker startup notice for heartbeat delay
feat: add TCP connectivity for worker RPC
Some checks failed
Test / test (push) Failing after 1m36s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 3m26s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 3m36s
95df1bd794
- Implement NodeProxy support for TCP and Unix sockets
- Set up TCP bridge for worker compute server via `socat`
- Use `HERO_COMPUTE_ADVERTISE_ADDRESS` for worker heartbeat
- Document `HERO_COMPUTE_ADVERTISE_ADDRESS` in config
fix: improve worker IP detection robustness
Some checks failed
Test / test (push) Failing after 1m16s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 2m45s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 3m6s
9069760f0e
- Determine worker IP via `ip route get`
- Add Python socket method for IP detection
- Keep `hostname -I` as a fallback option
- Ensure correct IP for master connectivity
feat: lock deploy modal to specific node
Some checks failed
Test / test (push) Failing after 1m15s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 2m32s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 3m24s
0402814413
- Lock deploy modal to a single pre-selected node
- Remove reliance on global `_explorerNodes` array
- Update node hint with detailed resource information
- Store selected node data for direct preview updates
- Set max slices and update slice hint directly
refactor: lock node selection in Explorer deploy modal
Some checks failed
Test / test (push) Failing after 1m37s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 3m26s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 3m37s
9627f8223f
- Explicitly reset modal form state and footer
- Disable node selection dropdown while modal is open
- Re-enable node selector on modal close
- Update node selection hint text and styling
- Always call `loadDeployImages` and `updateDeploySshKeysInfo`
feat: improve VM deploy UX with target node info
Some checks failed
Test / test (push) Failing after 1m59s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 2m35s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 3m55s
a63badbdd1
- Log target node hostname during VM creation
- Validate slice count against target node capacity
- Display target node in deploy modal title and activity log
- Use resolved hostname in deploy success message
feat: Add inline alerts and improved node display
Some checks failed
Test / test (push) Failing after 2m25s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 2m40s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 3m54s
83dde606d9
- Implement inline alert functions (`_deployAlert`, `_deployAlertHide`)
- Add inline alert element to deploy modal
- Replace `showToast` for deploy validation with inline alerts
- Prioritize `_nodeSid` for VM routing data attribute
- Show `_nodeHostname` in VM detail node display
feat: enhance setup script with KVM and dependency checks
Some checks failed
Test / test (push) Failing after 5s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Failing after 14s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Failing after 17s
6d47c41690
- Add KVM module loading and verification
- Integrate `chvm doctor` for dependency checks
- Include `iproute2` and `busybox-static` in apt install
- Reformat Rust imports and simplify error returns
feat: add ExplorerService proxied deployment & VM APIs
Some checks failed
Test / test (push) Failing after 52s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Failing after 1m52s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Failing after 1m53s
e774f800c2
- Add `get_deployment_logs`, `list_deployments` to ExplorerService
- Expose `inject_ssh_keys`, `list_slices`, `list_images` APIs
- Introduce unified `nodeRpc` routing for frontend calls
- Update Rust `windows-sys` and `socket2` dependencies
- Replace `chvm-lib` with `my_hypervisor-lib` package
ore: Update hypervisor CLI to 'my_hypervisor'
Some checks failed
Test / test (push) Failing after 1m40s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 3m24s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 3m36s
0cca6f7f52
- Rename all `chvm` command calls to `my_hypervisor`
- Modify setup script to download `my_hypervisor` v0.1.2
- Remove `chvm` source build and update mechanism
- Adjust kernel management and `doctor` commands
- Update comments and associated output messagesa
fix: enforce KVM availability and improve error msg
Some checks failed
Test / test (push) Has been cancelled
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Has been cancelled
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Has been cancelled
029e8abd61
- Remove KVM module auto-loading attempt
- Exit script with error if /dev/kvm is missing
- Display detailed error message for KVM requirement
- Provide specific KVM troubleshooting guidance
chore: reorder KVM check to pre-flight step
Some checks failed
Test / test (push) Failing after 2m5s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 3m9s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 3m27s
0024f305a8
- Move KVM availability check earlier
- Rename KVM check section to 'Pre-flight'
- Add explicit success message for /dev/kvm
- Adjust script output spacing
chore: improve setup script user experience and logging
Some checks failed
Test / test (push) Failing after 1m45s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 3m25s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 3m32s
356f05de13
- Introduce structured logging with step tracking
- Enhance error messages, fixes, and pre-flight checks
- Improve component version checks and installation
- Copy hero_compute binaries to standard path
- Revamp final summary with installed versions and next steps
feat: configure firewall and update default UI port
Some checks failed
Test / test (push) Failing after 2m1s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Has been cancelled
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Has been cancelled
3ffe780d99
- Add firewall rules for ports 80, 9002, 9003
- Default UI port to 80; support `HERO_COMPUTE_PORT`
- Update displayed UI access URL
- Add documentation for `HERO_COMPUTE_PORT`
- Reformat Rust `format!` macro call for readability
feat: Implement VM aggregation for explorer mode
Some checks failed
Test / test (push) Failing after 2m9s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 3m8s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 3m26s
68a9956c9a
- Conditionally aggregate VMs in explorer mode
- Fetch online nodes using `ExplorerService.node_list`
- Retrieve VMs for each online node via `ExplorerService.list_vms`
- Add `_nodeSid` and `_nodeHostname` to VMs
- Deduplicate aggregated VMs by sid or name
refactor: enhance configuration loading mechanisms
Some checks failed
Test / test (push) Failing after 1m39s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 3m13s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 3m28s
a230a208d9
- Improve .env loading with $HOME directory fallback
- Allow explorer socket override via environment variable
- Re-evaluate explorer socket env var at runtime
fix: Improve error logging for jobs and kernel extraction
Some checks failed
Test / test (push) Failing after 41s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Failing after 1m26s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Failing after 2m15s
b13d8694d0
- Add `strip_ansi` function (ANSI escape code removal)
- Log last 3 stderr lines on VM job failure
- Strip ANSI codes from job stderr for clean output
- Enhance error handling for kernel host extraction
- Display extraction output and provide manual workaround
refactor: Allow mutable access to manager lock guard
Some checks failed
Test / test (push) Failing after 2m0s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 3m6s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 3m21s
eab9c45921
feat: voice AI pipeline phase 1-2 (#78)
Some checks failed
Test / test (push) Failing after 2m38s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 2m47s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 4m1s
3b89040e44
Signed-off-by: mik-tf
- Extract VM SID from deployment result
- Update deploy steps to reflect ongoing process
- Initiate log polling for deployed VMs
- Change success message to "VM submitted"
- Remove instant success feedback for deployment
chore: Enhance socat proxy startup and shutdown
Some checks failed
Test / test (push) Failing after 2m8s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 3m9s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 3m26s
cec8449e4a
- Add `sleep` delays before starting socat proxies
- Implement `pkill` cleanup for socat processes at startup
- Make UI proxy port configurable via `HERO_COMPUTE_PORT`
- Introduce `WORKER_RPC_PORT` and its associated PID file
- Refactor and generalize socat proxy shutdown logic
feat: centralize service orchestration with hero_compute CLI
Some checks failed
Test / test (push) Failing after 1m23s
7e71c61fc7
- Add `hero_compute` CLI for service lifecycle management
- Replace `hero_service` with `hero_proc_sdk` in components
- Enable direct TCP binding for explorer, server, and UI services
- Remove external `socat` proxies and management scripts
- Specify git sources for `hero_rpc` and `herolib` dependencies
refactor: overhaul service management and communication
Some checks failed
Test / test (push) Failing after 1m17s
116ec2f412
- Introduce `hero_compute` CLI for service control
- Remove `start.sh`, `stop.sh`, `status.sh` scripts
- Eliminate `socat` for UI and multi-node proxies
- Update build requirements to `my_hypervisor` and `cloud-hypervisor`
- Adjust UI port to 80 and heartbeat interval to 60s
refactor: simplify code with idiomatic Rust patterns
Some checks failed
Test / test (push) Failing after 1m36s
13155bf33c
- Use `is_some_and` for `Option` predicate check
- Consolidate `if let` statement
- Remove redundant `.into()` call
refactor: modularize environment setup script
All checks were successful
Test / test (push) Successful in 1m24s
fcc61d0a25
- Extract setup steps into named shell functions
- Improve readability and maintainability of the script
- Remove `socat` and `musl-tools` from package list
- Remove `x86_64-unknown-linux-musl` rust target
- Adjust `dotenv` conditional formatting in `main.rs`
refactor: streamline setup with binary downloads and clearer steps
All checks were successful
Test / test (push) Successful in 1m23s
b2026cd9e9
- Transition hero_proc installation to pre-built binaries
- Consolidate runtime dependency and firewall setup
- Introduce generic download helper function
- Improve script sectioning with numbered steps
- Update documentation and logging messages
feat: add --status flag and enable CI publish
Some checks failed
Test / test (push) Failing after 1m15s
d797d188af
Add --status flag to hero_compute CLI that queries hero_proc for
service state and per-action details (pid, state, memory).
Include hero_compute in BINARIES list and uncomment CI publish step
gated on tag push.

Closes #45

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
style: apply cargo fmt
All checks were successful
Test / test (push) Successful in 1m21s
Test / test (pull_request) Successful in 1m20s
9f5d91ae3c
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Merge pull request 'Merge branch development_cli to development' (#46) from development_cli into development
All checks were successful
Test / test (push) Successful in 1m43s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 4m7s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 4m21s
16000e50e3
Reviewed-on: #46
ci: auto-create Forge release and attach binaries on tag push
All checks were successful
Test / test (push) Successful in 1m19s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 3m35s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 3m39s
6f07946462
When a v* tag is pushed, the CI now creates a Forge Release and
uploads all binaries as release assets in addition to publishing
to the package registry.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
ci: remove duplicate package registry upload on tag push
All checks were successful
Test / test (push) Successful in 2m55s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 4m41s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 4m49s
32e3553acb
Only upload binaries as release assets, not also to the package
registry, to avoid duplicate files on the release page.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Update default UI port in code and documentation
- Configure firewall rules to open port 9001
- Adjust `hero_proc` release download URL and version check
- Improve system package installation comments
- Correct dashboard access instructions to include port
Merge branch 'development' of ssh://forge.ourworld.tf/lhumina_code/hero_compute into development
All checks were successful
Test / test (push) Successful in 2m5s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 3m9s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 3m20s
c4167fdb4e
build: Relocate buildenv.sh to scripts/ directory
All checks were successful
Test / test (push) Successful in 1m24s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 4m19s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 4m27s
4cbf45cb2c
- Update CI workflow to source from scripts/buildenv.sh
- Modify build_lib.sh to prioritize scripts/ path
- Add fallback search for buildenv.sh in root directory
- Update error message for buildenv.sh not found
refactor: organize files and update documentation
Some checks failed
Test / test (push) Failing after 1m19s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Failing after 1m31s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Failing after 2m17s
29bfa61f2a
- Relocate buildenv.sh to scripts directory
- Remove lifecycle.rs file
- Update manager lock acquisition to be immutable
- Clarify automatic environment variable setting in comments
chore: Declare mgr mutable and allow unused_mut
All checks were successful
Test / test (push) Successful in 1m23s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 3m23s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 3m32s
7a15a94704
fix: Enhance stop_service command error handling
Some checks failed
Test / test (push) Failing after 1m16s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 2m45s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 3m11s
8b9a4649ae
- Check for existing socket before connecting
- Gracefully handle service not running
- Catch 'not found'/'not registered' stop errors
- Provide specific feedback for unregistered services
fix: Improve VM console key handling and modal styling
Some checks failed
Test / test (push) Failing after 2m46s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 4m10s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 4m22s
bd4313c43b
- Ensure Ctrl+C/Z/D are sent to the VM terminal
- Explicitly dismiss VM console modal on close
- Refactor VM console modal header for custom layout
- Replace default modal close button with custom one
- Add "Ctrl+C to interrupt" hint to console header
feat: enhance console with explorer proxy and UI improvements
Some checks failed
Test / test (push) Failing after 2m1s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 2m30s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 3m20s
c87a1e164f
- Implement VM console proxy through explorer service
- Add `node_sid` to console query for remote VM lookup
- Enable fullscreen mode for the console window
- Display rotating usage tips in the console footer
- Improve Ctrl+C handling for text selection and interrupt
- Update console error message for VMs on other nodes
feat: improve console remote VM handling and auto-open
Some checks failed
Test / test (push) Has been cancelled
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Has been cancelled
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Has been cancelled
f4ae684af9
- Server returns JSON for remote VM console 404
- Implement console auto-open from URL parameter
- Add preflight HTTP check for console availability
- Show remote VM details in terminal on redirect
fix: Improve VM reconciliation when hypervisor ID missing
All checks were successful
Test / test (push) Successful in 1m40s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 3m12s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 3m31s
813c96af42
- Attempt to re-discover VMs by name if ID is missing
- Update VM state and hypervisor ID on re-discovery
- Mark active VMs as stopped if truly not found
- Prevent marking already stopped VMs as error
refactor: Improve console preflight and error handling
All checks were successful
Test / test (push) Successful in 2m9s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 3m5s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 3m29s
7ddc25970a
- Adjust tracing log formatting for VM reconciliation
- Handle explorer proxy JSON string results
- Refactor console preflight fetch logic
- Improve remote node detection and messaging
- Enhance error reporting for console connection failures
feat: Improve VM state reconciliation on startup
All checks were successful
Test / test (push) Successful in 2m29s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 2m34s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 4m6s
4f50ed93c1
- Handle VMs stuck in provisioning/starting on restart
- Mark interrupted deployments as error state
- Log interrupted deployment messages
- Ensure hypervisor status refresh is non-fatal
fix: handle non-WebSocket preflight requests to /console endpoint
Some checks failed
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Has been cancelled
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Has been cancelled
Test / test (push) Has been cancelled
856c87829a
The dashboard JS sends a regular HTTP GET to /console/:vm_sid as a
preflight check before opening the WebSocket. Previously this failed
with 400 "Connection header did not include 'upgrade'" because the
handler required WebSocketUpgrade. Now the handler accepts
Option<WebSocketUpgrade> — returning JSON status for preflight and
upgrading to WebSocket when the Upgrade header is present.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
feat: Improve VM state reconciliation on startup
All checks were successful
Test / test (push) Successful in 1m20s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 3m25s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 3m38s
1e93fb55cd
- Handle VMs stuck in provisioning/starting on restart
- Mark interrupted deployments as error state
- Log interrupted deployment messages
- Ensure hypervisor status refresh is non-fatal
feat: Display remote VM console link
All checks were successful
Test / test (push) Successful in 1m24s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 4m15s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 4m26s
8223b79595
- Add vm_sid for remote VM discovery
- Build node URL from socket_path
- Show console URL in terminal output
- Add clickable link outside terminal
fix: Improve console fullscreen and remote node handling
All checks were successful
Test / test (push) Successful in 2m57s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 4m22s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 4m32s
d347198fa0
- Add drag handle to fullscreen console logic
- Prevent dragging when fullscreen
- Improve remote node console URL detection
- Update terminal output for remote nodes
- Add link to remote node console or informative message
feat: Add chart data persistence to sessionStorage
All checks were successful
Test / test (push) Successful in 1m43s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 2m29s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 2m41s
59f6067d6e
- Implement sessionStorage for chart data persistence
- Load and save chart histories across page navigation
- Enhance VM console modal behavior and cleanup
- Improve console theme application and session management
refactor: Improve interval management and VM console
All checks were successful
Test / test (push) Successful in 2m9s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 3m7s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 3m31s
25e520b50c
- Introduce pageInterval function to manage intervals
- Implement VM console session parking and restoring
- Add refresh helpers with loading indicators
- Enable Unpoly for smoother navigation
mprove refresh logic and console handling
All checks were successful
Test / test (push) Successful in 1m21s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 3m26s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 3m38s
e9e45e9797
- Add generic _refreshBtn helper
- Use MutationObserver for refresh completion
- Clean up console terminal on detach
- Set console theme background
- Update console URL logica
refactor: Improve remote node error handling
All checks were successful
Test / test (push) Successful in 1m22s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 3m22s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 3m30s
b5a7c5c44a
- Resolve node hostname from explorer data
- Fetch nodes from explorer if not cached
- Encapsulate remote console error rendering
- Update console status for remote VMs
feat: Add dynamic UI port configuration
All checks were successful
Test / test (push) Successful in 1m41s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 2m34s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 2m37s
c1d10261d2
- Add `ui_port` to `AppState`
- Expose `ui_port` via `/api/config` route
- Fetch and use dynamic `ui_port` in client-side JS
- Update node URL construction with dynamic port
feat: Implement fixed layout with activity bar
All checks were successful
Test / test (push) Successful in 2m52s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 4m12s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 4m21s
2d69961e9d
- Add fixed navbar and sidebar positioning
- Introduce a fixed bottom activity bar
- Update layout to accommodate fixed elements
- Rework activity feed rendering for new bar
refactor: Update sidebar styling and version display
All checks were successful
Test / test (push) Successful in 1m23s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 3m22s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 3m30s
7bb6df079c
- Make sidebar footer position absolute
- Adjust sidebar footer padding
- Simplify version display logic
- Remove recent activity section
refactor: Overwrite authorized_keys file
All checks were successful
Test / test (push) Successful in 2m7s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 2m34s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 3m21s
a089957c6a
- Use `cat >` to overwrite authorized_keys
- Ensure disabled keys are removed from VM
fix: Improve SSH key injection UI feedback
Some checks failed
Test / test (push) Successful in 2m4s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Has been cancelled
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Has been cancelled
92ed05ac38
- Show loading spinner on button during injection
- Re-enable button and reset label after completion
refactor: Improve confirmation modal and async handling
Some checks failed
Test / test (push) Successful in 1m42s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Has been cancelled
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Has been cancelled
a65566215f
- Handle promise return from onConfirm
- Show loading state for async confirm actions
- Disable buttons during async operations
- Unify async handling for confirm modal
refactor: Optimize home activity element access
All checks were successful
Test / test (push) Successful in 1m23s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 4m24s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 4m32s
b85c0a871c
- Cache home activity element
- Prevent null element errors
- Improve readability
ld: build for musl static target
All checks were successful
Test / test (push) Successful in 1m25s
Build Linux / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 2m42s
Build Linux / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 3m7s
4250065181
- Define MUSL_TARGET variable
- Update build target to MUSL_TARGET
- Add musl-tools to package list
- Add rustup target add command
- Use MUSL_TARGET for bin directorya
ci: Update build matrix artifacts
All checks were successful
Test / test (push) Successful in 2m31s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Successful in 2m45s
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Successful in 3m17s
8ca5038c2b
- Change `linux-amd64` to `linux-amd64-musl`
- Change `linux-arm64` to `linux-arm64-gnu`
refactor: rename chvm references to my_hypervisor (ADR-001)
All checks were successful
Test / test (pull_request) Successful in 1m44s
cd776e8ffe
The hypervisor binary/library was renamed upstream from chvm to
my_hypervisor. This updates all references across hero_compute:

- Cargo.toml: drop chvm-lib alias, use my_hypervisor-lib directly
- chvm_driver.rs -> my_hypervisor_driver.rs (ChvmDriver -> MyHypervisorDriver)
- hypervisor.rs: module path and pub use updated
- rpc.rs: env var MY_HYPERVISOR_MYCELIUM_PEERS (with CHVM_ fallback)
- main.rs, server.rs, dashboard.js: log messages and JSON API keys
- configure.sh: path references
- All docs: architecture, explainer, explorer_spec

Also adds ADR-001 (this rename) and ADR-002 (unified VM + container
workload management — proposed, not yet implemented).
Merge pull request 'refactor: rename chvm references to my_hypervisor (ADR-001)' (#49) from feature/chvm-to-my-hypervisor-rename into development
All checks were successful
Test / test (push) Successful in 1m45s
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Successful in 3m34s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Successful in 3m57s
e44bcde84e
Reviewed-on: #49
Delete docs/adr/001-chvm-to-my-hypervisor-rename.md
Some checks failed
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Has been cancelled
Test / test (push) Has been cancelled
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Has been cancelled
c941d4a339
Delete docs/adr/002-unified-vm-container-workload-management.md
All checks were successful
Test / test (push) Successful in 2m33s
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Successful in 2m47s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Successful in 4m44s
2800078feb
Merge remote development branch
All checks were successful
Test / test (push) Successful in 1m26s
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Successful in 3m27s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Successful in 3m56s
5a8ed33bad
refactor: Rename CHVM_MYCELIUM_PEERS to MY_HYPERVISOR_MYCELIUM_PEERS
All checks were successful
Test / test (push) Successful in 2m58s
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Successful in 4m32s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Successful in 4m54s
6fe3a88972
- Rename env var `CHVM_MYCELIUM_PEERS` to `MY_HYPERVISOR_MYCELIUM_PEERS`
- Update documentation and code to reflect the name change
- Update dependency name `my_hypervisor-lib` to `my-hypervisor-lib`
- Rename `my_hypervisor_driver.rs` to `hypervisor_driver.rs`
- Update stub driver error messages to remove `-lib` suffix
fix: Use fixed RAM value in preview
All checks were successful
Test / test (push) Successful in 1m22s
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Successful in 4m32s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Successful in 4m59s
5ba6286bf6
- Use a fixed value of 4GB RAM per slice
- Remove dynamic calculation based on memPerSliceMb
fix: Allow preflight checks for websocket upgrade
All checks were successful
Test / test (push) Successful in 2m35s
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Successful in 2m46s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Successful in 4m43s
3822893cc4
- Change `ws` to optional type
- Return "ok" response for preflight checks
feat: add floating console indicator
All checks were successful
Test / test (push) Successful in 1m43s
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Successful in 3m40s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Successful in 3m58s
b83539e02c
- Add CSS for floating console indicator
- Implement functions to show/hide indicator
- Add logic to restore console from indicator
- Update console tips for new feature
feat: Add last command to floating console indicator
All checks were successful
Test / test (push) Successful in 1m27s
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Successful in 4m32s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Successful in 4m56s
77c7e03f35
- Store and display last command in floating indicator
- Update indicator styles for better visibility
- Track command buffer for last command display
- Initialize last command and buffer on session restore
- Add last command to indicator tooltip
feat: Implement persistent console sessions
Some checks failed
Test / test (push) Failing after 1m16s
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Successful in 4m27s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Successful in 4m55s
448d061814
- Add `ConsoleSession` struct for managing persistent sessions
- Introduce `ConsoleSessions` type for a map of sessions
- Add `console_sessions` field to `AppState`
- Implement `/api/console/sessions` endpoint to list active sessions
- Implement `/api/console/destroy/:vm_sid` endpoint to destroy sessions
- Refactor `console_bridge` to use `get_or_create_session`
- Modify `console_ws_handler` to check for existing sessions
- Add logic to replay buffered output to new WebSocket clients
- Implement session restoration from `sessionStorage`
- Update console UI buttons for minimizing and closing sessions
feat: improve console floating indicator and session handling
Some checks failed
Test / test (push) Failing after 2m1s
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Successful in 3m32s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Successful in 3m57s
ca5f6b0cb7
- Add output display to floating console indicator
- Update console session destruction logic
- Refactor console close and destroy functions
- Separate current console destruction
- Update console floating indicator styling
fix: Improve console session restoration logic
All checks were successful
Test / test (push) Successful in 1m56s
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Successful in 3m40s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Successful in 3m58s
b4a79f723f
- Use `!is_empty()` for string length checks
- Simplify VM cleanup logic
- Update boolean assertion for enabled status
- Condense `VmManager::new` initialization
- Refactor `ConsoleSession` struct and handler
- Add background WebSocket for floating console
- Enhance `_restoreConsoleFromStorage` logic
feat: add drag support for floating console
All checks were successful
Test / test (push) Successful in 2m36s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Successful in 3m7s
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Successful in 4m19s
c5cfe18bb5
- Add drag and drop functionality for the floating console
- Implement touch support for mobile devices
- Update styling for the floating console appearance
- Add a button to expand the console from the mini view
- Modify existing console indicator logic for drag support
style: Update console float indicator styles
All checks were successful
Test / test (push) Successful in 1m43s
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Successful in 2m46s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Successful in 3m18s
c3537b7517
- Use CSS variables for colors and backgrounds
- Update box-shadow for indicator and header hover
- Change console output hover background
refactor: Improve hero-compute service reliability and usability
All checks were successful
Test / test (push) Successful in 1m20s
Test / test (pull_request) Successful in 1m44s
8aa8623cd8
- Add timeouts to socket connections and reads
- Implement session cleanup for idle console sessions
- Harden socket path validation to prevent traversal
- Add more resilient error handling and logging
- Update dependencies and component versions
- Refine VM health checks and SSH key injection
- Add attribute escaping to HTML generation
fix: Improve SSH key deletion confirmation
All checks were successful
Test / test (push) Successful in 2m3s
Test / test (pull_request) Successful in 2m9s
60c53dac39
- Use a custom confirm modal for SSH key deletion
- Display the key label in the confirmation message
- Add an "un-doable" warning to the confirmation
Merge pull request 'Improve hero-compute service reliability and usability' (#50) from development_clean into development
All checks were successful
Test / test (push) Successful in 2m36s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Successful in 2m44s
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Successful in 3m8s
981a74e0eb
Reviewed-on: #50
fix: removed unused MY_HYPERVISOR_MYCELIUM_PEERS
Some checks failed
Test / test (push) Failing after 2m3s
Test / test (pull_request) Failing after 1m38s
ade5cb3f46
fix: cargo fmt
Some checks failed
Test / test (push) Failing after 1m43s
Test / test (pull_request) Failing after 1m44s
74230aa006
fix: removed closure wrapping
All checks were successful
Test / test (pull_request) Successful in 1m33s
Test / test (push) Successful in 1m51s
8ee81a0cea
docs: updated docs and .env.example
All checks were successful
Test / test (push) Successful in 1m25s
Test / test (pull_request) Successful in 1m27s
c7aa4ae1ea
feat: Server-driven UI mode and TCP explorer
Some checks failed
Test / test (push) Failing after 1m18s
68d5aa412d
- Add `HERO_COMPUTE_UI_MODE` environment variable.
- Fetch UI mode from `/api/config`.
- Remove local UI mode toggling.
- Update explorer heartbeat to support TCP.
- Handle non-local modes for admin/explorer pages.
- Display current UI mode in navigation.
refactor: Remove UI elements from renderModeCard
Some checks failed
Test / test (push) Failing after 1m36s
6c5c82f3fa
- Remove icon, title, and subtitle element retrieval
- Remove switchLabel element retrieval
- Remove conditional setting of icon, title, subtitle, and switchLabel
- Update conditional check for stats element existence
refactor: applied review comments
All checks were successful
Test / test (pull_request) Successful in 1m27s
Test / test (push) Successful in 1m45s
8b632a826f
Merge pull request 'Central Configurations' (#53) from development_central_config into development
All checks were successful
Test / test (push) Successful in 1m24s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Successful in 2m40s
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Successful in 3m6s
9b3e409709
Reviewed-on: #53
Reviewed-by: Mahmoud Emad <emadm@incubaid.com>
merge: resolve conflict with development (central config + UI mode)
Some checks failed
Test / test (push) Has been cancelled
3e576878e8
feat: Add UI view mode toggle for master
All checks were successful
Test / test (push) Successful in 1m22s
1657d21750
- Add localStorage for view mode persistence
- Implement view toggle buttons in the navbar
- Initialize view mode toggle on page load
- Update mode management logic
feat: Update UI labels and server mode logic
All checks were successful
Test / test (push) Successful in 1m23s
8780b69538
- Rename "Fleet" to "Explorer" in UI
- Inject `ui_mode` variable into script
- Update `getServerMode` to use injected `ui_mode`
feat: Update UI labels and server mode logic
All checks were successful
Test / test (push) Successful in 1m44s
4cf5d4ec75
- Rename "Fleet" to "Explorer" in UI
- Inject `ui_mode` variable into script
- Update `getServerMode` to use injected `ui_mode`
ender mode card client-side
All checks were successful
Test / test (push) Successful in 1m28s
98dd3b3c66
- Auto-detect UI mode based on explorer socket existence
- Update `setViewMode` to use `location.replace`
- Remove server-side rendering of mode card content
- Implement client-side rendering for mode card detailsa
refactor: Improve node label formatting
All checks were successful
Test / test (push) Successful in 1m51s
1ca44ad298
- Add helper function to format node labels
- Display hostname and SID consistently
- Update various UI elements to use the new format
feat: Improve deployment logs and VM console link
All checks were successful
Test / test (push) Successful in 1m27s
671f540706
- Auto-expand deployment log section
- Re-resolve log container on DOM change
- Display "Waiting for logs" message
- Log fetch errors and increase retries
- Clear and update VM console link
refactor: Improve UI mode detection and console resize handling
All checks were successful
Test / test (push) Successful in 1m26s
fd762c323f
- Add `effective_mode` method to `AppState`
- Auto-detect UI mode based on explorer socket existence
- Handle WebSocket resize messages for console
- Implement console resize sending to VM
- Adjust VM table column count for master mode
- Conditionally hide console minimize button for remote VMs
- Reset console dialog state on connect
perf: Debounce and delay console resize events
All checks were successful
Test / test (push) Successful in 1m34s
0366788031
- Debounce resize events to prevent flooding
- Delay initial resize event for shell handler initialization
feat: Add resizable console terminal
All checks were successful
Test / test (push) Successful in 1m47s
380c5ac23d
- Add CSS for resizable console
- Update fullscreen toggle logic
- Observe wrapper for resize events
- Hide fullscreen for remote nodes
- Make console wrapper resizable
feat: Add detailed health check endpoint and startup overlay
All checks were successful
Test / test (push) Successful in 1m49s
e1ddb1dadc
- Add `/api/health/detailed` endpoint
- Implement detailed health checks for services
- Add CSS for startup overlay
- Add JavaScript for startup health checks
- Display startup checks on page load
refactor: Improve startup overlay styling and logic
All checks were successful
Test / test (push) Successful in 1m24s
056a9817ed
- Update transition and card styling
- Refactor header and checks layout
- Adjust check row and detail styling
- Improve error message display
- Update retry logic for server unreachable state
feat: Improve status overlay and timeouts
All checks were successful
Test / test (push) Successful in 2m33s
09bbb20601
- Increase socket read timeout to 120 seconds
- Change health check endpoint from /api/health/detailed to /status
- Add hostname to server config
- Add data-node-hostname attribute to VM rows
- Close console if deleted VM had one open
- Refactor startup checks and health polling logic
- Implement table skeleton rows for loading states
- Remove redundant checkServerStatus calls
fix: Hide startup overlay by default
All checks were successful
Test / test (push) Successful in 2m32s
12b56b5b72
- Add `d-none` class to startup overlay div
- Update comment for startup overlay
feat: Improve VM status reporting and delete confirmation
All checks were successful
Test / test (push) Successful in 1m46s
ddff8ed946
- Conditionally show Explorer status based on mode
- Add elapsed time to delete VM confirmation dialog
- Improve clarity of delete operation status updates
fix: Disable VM row interaction during loading
All checks were successful
Test / test (push) Successful in 2m50s
dc12f49a73
- Add 'pe-none' and 'opacity-50' classes
- Remove 'clickable' class
feat: Track VM deletion state across page navigation
All checks were successful
Test / test (push) Successful in 1m32s
25d66994d4
- Add sessionStorage-based tracker for deleting VMs
- Display "deleting" state and elapsed time on VM rows
- Disable VM row interaction while deleting
- Prevent stale delete entries in sessionStorage
feat: Add status hover card for server services
All checks were successful
Test / test (push) Successful in 2m15s
d5b196549c
- Add CSS for status hover card
- Implement logic to render service status in hover card
- Persist activity log in sessionStorage
- Update activity log saving mechanism
refactor: Improve VM ID display in toasts and logs
All checks were successful
Test / test (push) Successful in 1m48s
4a5eda7d55
- Use short VM SID in initiated toasts
- Use short VM SID in initiated logs
- Use short VM SID in delete failed toasts
- Use short VM SID in delete failed logs
feat: Improve toast notifications and VM polling
All checks were successful
Test / test (push) Successful in 1m47s
e0f6bd152b
- Add custom toast component with animations
- Resume polling for transitional VMs on page reload
- Update toast appearance and dismiss behavior
- Ensure transitional VM polling on initial render
feat: Add VM deletion polling and activity log deduplication
All checks were successful
Test / test (push) Successful in 1m27s
Test / test (pull_request) Successful in 1m24s
42f9bfbbe3
- Avoid duplicate activity log entries
- Prevent duplicate seeding of activity log
- Add polling for VMs being deleted
- Resume polling for deleted VMs
Merge pull request 'feat: Multi-node explorer UI, console session persistence, and health monitoring' (#55) from development_explorer_mode into development
All checks were successful
Test / test (push) Successful in 1m47s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Successful in 3m8s
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Successful in 3m51s
d5c9c1ce76
Reviewed-on: #55
chore: Reduce heartbeat interval to 60 seconds
All checks were successful
Test / test (push) Successful in 2m43s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Successful in 3m21s
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Successful in 4m29s
730b903366
- Update heartbeat interval from 5 minutes to 60 seconds
- Update documentation to reflect interval change
- Add UI HTTP endpoints documentation
- Add static build details to documentation
chore: Remove HERO_COMPUTE_BRIDGE_TOKEN from TCP bridge
All checks were successful
Test / test (push) Successful in 1m25s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Successful in 3m12s
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Successful in 3m37s
993a11798d
The optional token auth mechanism provided a false sense of security
(plaintext, shared password, no node identity). Remove it entirely
so the bridge just proxies bytes directly.

#59
feat: add install script for Hero Compute binaries
All checks were successful
Test / test (push) Successful in 2m7s
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Successful in 3m34s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Successful in 3m52s
3585f98c94
Standalone shell installer that downloads pre-built binaries for the
entire Hero Compute stack. All release URLs, versions, and asset names
are fetched from the central config repo at runtime — zero hardcoded
release URLs.

Supports Ubuntu (apt), Alpine (apk), RHEL/Fedora (dnf/yum), is
idempotent, and works via curl-pipe-bash for one-line installs.

#63
refactor: Update hero_proc socket path and version
All checks were successful
Test / test (push) Successful in 1m31s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Successful in 3m27s
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Successful in 3m37s
e627b6e453
- Change default hero_proc socket name
- Update hero_proc version in configure.sh
- Update socket path in rust code
- Update socket path in bash examples
- Update documentation for socket path
feat: add pre-scan version check to install script
Some checks failed
Test / test (push) Successful in 1m26s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Has been cancelled
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Has been cancelled
437d997e35
Each binary is checked before install: skip if current, update if
outdated, install if missing. Clear logging tells the user exactly
what will happen for each component.
feat: Add single command install script
All checks were successful
Test / test (push) Successful in 1m26s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Successful in 3m12s
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Successful in 3m33s
Test / test (pull_request) Successful in 1m29s
bc388a83d6
- Introduce a single command install script
- Update quick start guide with new install option
- Add instructions for building from source
fix: use canonical ~/hero/var/hero_compute.env path (#70)
All checks were successful
Test / test (push) Successful in 1m52s
Test / test (pull_request) Successful in 1m56s
82d0812974
Replace fragile .env loading (CWD guessing, binary parent scanning,
$HOME/.env symlink) with a single canonical path:

  ~/hero/var/hero_compute.env

Changes:
- Add env_file_path() and load_env() to hero_compute_sdk
- All four binaries (CLI, server, UI, explorer) now call
  hero_compute_sdk::load_env() instead of dotenvy::dotenv()
- write_env() writes directly to the canonical path, no symlink
- Remove find_env_path() and all CWD/binary-parent heuristics
- Remove dotenvy dependency from server, UI, explorer, CLI crates
  (only SDK needs it now)

This fixes the "Symbolic link loop (os error 40)" crash that occurred
when hero_compute created a self-referential symlink $HOME/.env ->
$HOME/.env after running from $HOME with no Cargo.toml in CWD.

#70
Merge pull request 'fix: use canonical ~/hero/var/hero_compute.env path (#70)' (#72) from development_env_path into development
All checks were successful
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Successful in 3m37s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Successful in 3m52s
Test / test (push) Successful in 1m48s
a939a2256e
Reviewed-on: #72
fix: fetch dependency versions from central config in configure.sh
All checks were successful
Test / test (push) Successful in 2m11s
Test / test (pull_request) Successful in 2m7s
a711a138b2
Replace all hardcoded versions (cloud-hypervisor v43.0, my_hypervisor v0.1.2,
hero_proc v0.4.4) with dynamic lookups from the central config repo at
git.ourworld.tf/lhumina_code/hero_compute_config.

This matches how install.sh already works — single source of truth for
all component versions.

#68
Merge pull request 'fix: fetch dependency versions from central config in configure.sh' (#73) from development_configure_fix into development
All checks were successful
Test / test (push) Successful in 1m57s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Successful in 3m11s
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Successful in 4m3s
8f1aedb3e9
Reviewed-on: #73
feat: Add install script, uninstall script, and CI test workflow (#64)
Some checks failed
Test Install Script / test-install-ubuntu (push) Successful in 1m4s
Test / test (push) Successful in 2m50s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Successful in 3m10s
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Has been cancelled
5f788f2658
## Summary

- **Install script** (`scripts/install.sh`): Single-command installer that downloads pre-built binaries (cloud-hypervisor, mycelium, hero_proc, my_hypervisor, hero_compute), installs system dependencies, and starts all services. Safe to re-run — checks each component and only downloads what's missing or outdated. Supports `--env` flag for environment selection.
- **Uninstall script** (`scripts/uninstall.sh`): Clean removal of all installed components.
- **CI workflow** (`.forgejo/workflows/test-install.yaml`): Forgejo Actions workflow that tests the install script in a container environment — verifies binary downloads, dependency installation, and service startup.

## Changes

| File | Description |
|------|-------------|
| `scripts/install.sh` | Single-command installer with progress output, version checks, graceful package handling |
| `scripts/uninstall.sh` | Uninstall script for clean removal |
| `.forgejo/workflows/test-install.yaml` | CI workflow to test the install script |

## Install usage

```bash
# Default (development environment)
curl -sfL https://forge.ourworld.tf/lhumina_code/hero_compute/raw/branch/development/scripts/install.sh | bash

# Specific environment
curl -sfL https://forge.ourworld.tf/lhumina_code/hero_compute/raw/branch/development/scripts/install.sh | bash -s -- --env production
```

## Test plan

- [x] CI workflow passes in container environment
- [x] Install script downloads all binaries correctly
- [x] Install script handles missing system packages gracefully
- [x] Uninstall script removes all components
- [x] Re-running install script is idempotent

### Related issues

- #63

Co-authored-by: Mahmoud-Emad <mahmmoud.hassanein@gmail.com>
Reviewed-on: #64
fix: symlink binaries to /usr/local/bin for immediate use
Some checks failed
Test Install Script / test-install-ubuntu (push) Successful in 1m24s
Test / test (push) Successful in 2m10s
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Successful in 2m54s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Has been cancelled
332d3f61d8
curl | bash runs in a subshell — PATH exports don't reach the user's
shell. Instead of asking users to source .bashrc, create symlinks in
/usr/local/bin (already in PATH on all Linux systems).

Uninstall script updated to clean up the symlinks.
fix: clean up stale .env symlink and fix uninstall integer bug
All checks were successful
Test Install Script / test-install-ubuntu (push) Successful in 1m23s
Test / test (push) Successful in 3m5s
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Successful in 5m18s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Successful in 5m33s
57d665fb99
Install script:
- Remove self-referential $HOME/.env symlink left by hero_compute
  <= v0.1.3 before running (prevents ELOOP on dotenvy load)

Uninstall script:
- Remove stale ~/.env symlink if it points into ~/hero or itself
- Simplify package removal (drop rdepends check that caused
  "integer expression expected" error from multi-line grep output)
feat(sockets): align with Hero Socket Convention -- HTTP over UDS + standardized layout (#67)
All checks were successful
Test / test (push) Successful in 2m23s
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Successful in 3m4s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Successful in 3m25s
3540c37f66
Migrate hero_compute from raw newline-delimited JSON-RPC via UnixRpcServer
to HTTP-over-UDS via AxumRpcServer with standardized socket directory layout
under $HERO_SOCKET_DIR/hero_compute/.

- Replace UnixRpcServer with AxumRpcServer in server and explorer
- Add SDK path helpers: socket_dir(), server_socket_path(), ui_socket_path(),
  explorer_socket_path()
- Replace raw_rpc_unix() with http_rpc_unix() (HTTP/1.1 POST over UDS)
- Add connect_server_socket() for correct /api/root/cloud/rpc path
- Add protocol: "openrpc" to heroservice.json for hero_router discovery
- Standardize HERO_COMPUTE_EXPLORER_SOCKET env var across all crates
- Update all documentation: protocol descriptions, socket paths, examples
- TCP bridges preserved for multi-node (Phase 2 removes them)

Socket layout:
  ~/hero/var/sockets/hero_compute/rpc.sock          (server)
  ~/hero/var/sockets/hero_compute/ui.sock            (dashboard)
  ~/hero/var/sockets/hero_compute/explorer_rpc.sock  (explorer)

#65

Co-authored-by: Mahmoud-Emad <mahmmoud.hassanein@gmail.com>
Reviewed-on: #67
feat: Replace TCP bridges with Hero Router for cross-node communication (#71)
All checks were successful
Test / test (push) Successful in 1m26s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Successful in 3m23s
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Successful in 3m49s
75f0164e5f
## Summary

Phase 2 of #65. Removes in-process TCP bridges (ports 9002/9003) and routes all cross-node communication through Hero Router (port 9998).

Builds on top of `development_hero_socket` (Phase 1 — HTTP-over-UDS migration). Merge Phase 1 first.

## Changes

- **Removed**: `tcp_bridge()` from server and explorer binaries
- **Removed**: `--tcp-port`, `--rpc-port`, `--explorer-port` CLI flags
- **Added**: SDK helpers for Hero Router URL construction (`router_server_rpc_url()`, `router_explorer_rpc_url()`, `http_rpc_tcp()`)
- **Updated**: `NodeProxy.call_tcp()` → routes through Hero Router HTTP URLs
- **Updated**: Heartbeat sender → sends via Hero Router to remote explorers
- **Updated**: `.env` generation → `EXPLORER_ADDRESSES` and `ADVERTISE_ADDRESS` use `http://` Hero Router URLs
- **Kept**: UI TCP port 9001 for WebSocket console sessions

## Architecture (Before → After)

**Before**: Two custom TCP ports per node (9002 explorer, 9003 server), raw byte forwarding
```
Master explorer ←─TCP:9002── Worker heartbeat
Master explorer ──TCP:9003─→ Worker server
```

**After**: Single Hero Router entry point per node, HTTP routing with service discovery
```
Master hero_router:9998 → local explorer_rpc.sock
Worker hero_router:9998 → local rpc.sock
```

## Dependencies

- Requires `development_hero_socket` (Phase 1) to be merged first
- Hero Router must be installed and running on each node for multi-node mode

## Test plan

- [x] `cargo build --workspace` passes
- [x] `cargo test --workspace` passes (33 passed, 0 failed)
- [x] `make lint` passes
- [ ] Single node (local) mode works unchanged
- [ ] Multi-node master/worker with Hero Router running

Closes #69

Co-authored-by: Mahmoud-Emad <mahmmoud.hassanein@gmail.com>
Reviewed-on: #71
chore: bump version to 0.1.4
Some checks failed
Test / test (push) Successful in 1m25s
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Has been cancelled
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Has been cancelled
47bebd77f4
chore: use workspace version in hero_compute CLI crate
Some checks failed
Test / test (push) Failing after 2m53s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Successful in 4m59s
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Successful in 4m30s
1c3b9ae21c
fix: collapse nested if statements (clippy)
Some checks failed
Test / test (push) Successful in 2m9s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Has been cancelled
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Has been cancelled
963408bc69
chore: update hero_proc_sdk to v0.4.4 (correct socket path)
Some checks failed
Test / test (push) Has been cancelled
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Has been cancelled
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Has been cancelled
cfe17a2ae2
chore: Update Rust dependencies
All checks were successful
Test / test (push) Successful in 2m58s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Successful in 4m47s
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Successful in 3m2s
b5261053e5
- Update arc-swap to 1.9.1
- Update cc to 1.2.59
- Update fastrand to 2.4.1
- Update hashlink to 0.9.1
- Update indexmap to 2.13.1
- Update libsqlite3-sys to 0.30.1
- Update rusqlite to 0.32.1
- Update semver to 1.0.28
- Update tokio to 1.51.0
- Update tokio-macros to 2.7.0
- Update writeable to 0.6.3
- Update windows-sys to 0.60.2 and 0.61.2
- Update windows-targets to 0.52.6 and 0.53.5
- Update windows_aarch64_gnullvm to 0.53.1
- Update windows_aarch64_msvc to 0.53.1
- Update windows_i686_gnu to 0.53.1
- Update windows_i686_gnullvm to 0.53.1
- Update windows_i686_msvc to 0.53.1
- Update windows_x86_64_gnu to 0.53.1
- Update windows_x86_64_gnullvm to 0.53.1
- Update windows_x86_64_msvc to 0.53.1
- Update hero_rpc_generator and related to new commit hash
- Update herolib_ai and related to new commit hash
- Update socket2 to 0.6.3
- Update windows-targets dependency in cc, crossbeam-utils, reqwest, etc.
fix: use HTTP/1.0 in RPC transport to avoid chunked encoding
Some checks failed
Test / test (push) Successful in 1m27s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Has been cancelled
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Has been cancelled
47fe777f82
AxumRpcServer (hyper) uses Transfer-Encoding: chunked by default for
HTTP/1.1 responses. Our manual HTTP parser splits on \r\n\r\n and
returns everything after as the body — but chunked encoding wraps
the body in hex-size prefixed chunks, producing invalid JSON.

Fix: switch from HTTP/1.1 to HTTP/1.0. HTTP/1.0 doesn't support
chunked encoding, so the server sends Content-Length and closes the
connection. No parser changes needed.

This fixes "Unexpected end of JSON input" errors in the UI after
the AxumRpcServer migration.
chore: bump version to 0.1.5
All checks were successful
Test / test (push) Successful in 1m26s
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Successful in 4m54s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Successful in 5m14s
683929ac7e
docs: add release guide for contributors
All checks were successful
Test / test (push) Successful in 2m49s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Successful in 3m26s
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Successful in 4m45s
fa4169f0cf
fix(configure): handle Ubuntu 22 virtiofsd setup and complete issue #62
All checks were successful
Test / test (push) Successful in 1m27s
Test / test (pull_request) Successful in 1m49s
b13dfb0451
- Complete issue #62 by making configure.sh install qemu fallback packages and ensure virtiofsd is available in PATH via symlink check/warn flow.

This commit is the second part of the fix.
The first part was done in:
a711a138b2

Signed-off-by: Nabil-Salah <nabil.salah203@gmail.com>
Three issues caused the UI to show "Unexpected end of JSON input":

1. stream.shutdown() — AxumRpcServer treats a write half-close as client
   disconnect and drops the response. Removed from both http_rpc_unix
   and http_rpc_tcp. HTTP/1.0 with Content-Length is sufficient.

2. HTTP/1.1 chunked encoding — switched to HTTP/1.0 which forces the
   server to send Content-Length instead of Transfer-Encoding: chunked.

3. Method case mismatch — AxumRpcServer registers methods in lowercase
   (computeservice.node_status) but the browser JS sends CamelCase
   (ComputeService.node_status). Added lowercase_method() to the UI
   proxy. Removed the old prepend_domain_to_method() since the domain
   is already encoded in the URL path (/api/root/cloud/rpc).

Tested on live server at 138.201.206.39 — node registration and all
RPC calls work through the UI.
chore: bump version to 0.1.6
All checks were successful
Test / test (push) Successful in 1m49s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Successful in 3m30s
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Successful in 3m55s
280c2b3078
Merge branch 'development' into development_fix_congfig_script
All checks were successful
Test / test (push) Successful in 1m50s
Test / test (pull_request) Successful in 3m12s
2519ee2353
fix: normalize RPC method names in SDK transport layer
Some checks failed
Test / test (push) Failing after 1m19s
Test / test (pull_request) Failing after 1m19s
c1032bb520
Move method name normalization into http_rpc_unix() and http_rpc_tcp()
so ALL RPC calls are automatically lowercased with domain prefixes
stripped. This fixes "Method not found" errors from CamelCase method
names that AxumRpcServer doesn't recognize.

- Add normalize_rpc_method() to SDK transport layer
- Remove lowercase_method() from UI server (now redundant)
- Remove SERVER_DOMAIN constant (unused)
- Fix console handler error: 403 Forbidden → 502 Bad Gateway
- Normalize all hardcoded method strings across codebase

#80
style: apply cargo fmt
All checks were successful
Test / test (push) Successful in 1m25s
Test / test (pull_request) Successful in 1m53s
02798a1de4
Merge pull request 'fix: normalize RPC method names in SDK transport layer' (#82) from development_fix_rpc_case into development
All checks were successful
Test / test (push) Successful in 1m40s
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Successful in 2m59s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Successful in 5m11s
949eb2267c
Reviewed-on: #82
- Backend: /version endpoint returns structured JSON with all 5 component versions
  (hero_compute, my_hypervisor, hero_proc, cloud-hypervisor, mycelium)
- hero_compute uses compile-time version + git hash (env!() macros)
- External components queried via shell commands with 5s timeout
- Missing binaries display "not installed"
- Frontend: sidebar shows hero_compute version, hover shows all components
- Closes #76

Signed-off-by: Nabil-Salah <nabil.salah203@gmail.com>
Signed-off-by: Nabil-Salah <nabil.salah203@gmail.com>
fix: overlay components
All checks were successful
Test / test (push) Successful in 2m25s
Test / test (pull_request) Successful in 2m26s
785fbe3212
Signed-off-by: Nabil-Salah <nabil.salah203@gmail.com>
Merge branch 'development' into development_fix_congfig_script
All checks were successful
Test / test (pull_request) Successful in 2m21s
Test / test (push) Successful in 2m22s
02015dc1e5
feat: use central config to fetch versions and remove: version handler
Some checks failed
Test / test (pull_request) Failing after 1m19s
Test / test (push) Failing after 1m45s
0e960f8218
Signed-off-by: Nabil-Salah <nabil.salah203@gmail.com>
fix: hero compute to get the version from central config
Some checks failed
Test / test (pull_request) Failing after 1m25s
Test / test (push) Failing after 1m52s
c1d916826f
Signed-off-by: Nabil-Salah <nabil.salah203@gmail.com>
fix: code fmt
All checks were successful
Test / test (pull_request) Successful in 1m26s
Test / test (push) Successful in 1m55s
0480a4f779
Signed-off-by: Nabil-Salah <nabil.salah203@gmail.com>
Merge pull request 'update: show node component versions in UI sidebar with hover details' (#81) from development_show_node_versions into development
All checks were successful
Test / test (push) Successful in 1m54s
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Successful in 4m31s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Successful in 4m57s
670770c8ca
Reviewed-on: #81
Reviewed-by: Mahmoud Emad <emadm@incubaid.com>
Merge branch 'development' into development_fix_congfig_script
All checks were successful
Test / test (push) Successful in 1m50s
Test / test (pull_request) Successful in 2m0s
57efdff63d
Merge pull request 'fix(configure): handle Ubuntu 22 virtiofsd setup' (#75) from development_fix_congfig_script into development
All checks were successful
Test / test (push) Successful in 1m49s
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Successful in 4m8s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Successful in 4m24s
5c60373acb
Reviewed-on: #75
refactor: Update installer and uninstaller scripts (#86)
All checks were successful
Test Install Script / test-install-ubuntu (push) Successful in 1m7s
Test / test (push) Successful in 2m34s
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Successful in 3m4s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Successful in 5m9s
281616e2e8
- Update install script to use hero_install.nu for binary installation
- Add nushell installation to installer script
- Consolidate output and step formatting
- Refine uninstaller to remove more components cleanly
- Update uninstaller to handle more service names

Co-authored-by: Mahmoud-Emad <mahmmoud.hassanein@gmail.com>
Reviewed-on: #86
fix: show resource preview in non-explorer mode (#85)
All checks were successful
Test / test (push) Successful in 1m27s
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Successful in 3m55s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Successful in 4m18s
2483fc7c67
## Summary

- **Resource preview in non-explorer mode**: The deploy modal hid the resource preview card (RAM/Disk/vCPUs) in all non-explorer modes (local, master-local, worker) because `_deployNodeData` was never populated outside explorer mode. Now the deploy modal fetches the local node's resources via `ComputeService.node_status` and `ComputeService.list_slices` RPC calls, populates the preview, and shows the max slices hint — while keeping the node selector hidden (single-node context).

## Changed files

- `crates/hero_compute_ui/static/js/dashboard.js` — fetch local node data in non-explorer deploy modal to show resource preview

## Test plan

- [x] Deploy VM modal in local mode shows resource preview (RAM, Disk, vCPUs)
- [x] Slice count hint shows "Max N slices available" in local mode
- [x] Verify on worker mode UI at `http://worker-ip:9001`

Resolves #79

Co-authored-by: Nabil-Salah <nabil.salah203@gmail.com>
Co-authored-by: Mahmoud Emad <emadm@incubaid.com>
Reviewed-on: #85
Reviewed-by: Mahmoud Emad <emadm@incubaid.com>
feat: Multi-node connectivity via hero_proxy over Mycelium (#84)
All checks were successful
Test Install Script / test-install-ubuntu (push) Successful in 1m15s
Test / test (push) Successful in 2m10s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Successful in 3m23s
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Successful in 3m56s
Test Install Script / test-install-ubuntu (pull_request) Successful in 1m4s
Test / test (pull_request) Successful in 1m48s
f404f80218
## Summary

- Rename all hero_router references to hero_proxy for cross-node traffic (port 9998 to 9997)
- Add auto-configuration of hero_proxy Mycelium listener on master/worker start
- Add hero_router + hero_proxy to install/uninstall scripts
- Update all documentation

## Changes

| Area | Files | What |
|------|-------|------|
| SDK | `lib.rs` | HERO_PROXY_PORT=9997, proxy_*_url() functions |
| CLI | `main.rs` | Mycelium listener auto-setup, write_env() updates |
| Heartbeat | `heartbeat_sender.rs` | proxy_* references |
| Explorer | `proxy.rs` | proxy_* doc updates |
| Install | `install.sh`, `uninstall.sh` | hero_router + hero_proxy steps |
| Docs | setup, arch, config, .env | Hero Proxy for multi-node |

## Test plan

- [x] `cargo build --workspace` passes
- [x] `cargo test --workspace` — 13 suites, 0 failures
- [x] `make lint` passes
- [ ] Multi-node test: master + worker over Mycelium

Closes #83

Co-authored-by: Mahmoud-Emad <mahmmoud.hassanein@gmail.com>
Reviewed-on: #84
mahmoud closed this pull request 2026-04-09 13:05:13 +00:00
All checks were successful
Test Install Script / test-install-ubuntu (push) Successful in 1m15s
Test / test (push) Successful in 2m10s
Build Linux / build-linux (linux-arm64-gnu, true, aarch64-unknown-linux-gnu) (push) Successful in 3m23s
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Successful in 3m56s
Test Install Script / test-install-ubuntu (pull_request) Successful in 1m4s
Test / test (pull_request) Successful in 1m48s

Pull request closed

Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
lhumina_code/hero_compute!87
No description provided.