No description
  • Rust 79.8%
  • Shell 8.1%
  • CSS 7.4%
  • TypeScript 2.2%
  • JavaScript 1.2%
  • Other 1.3%
Find a file
despiegk 8df9255b37
Some checks failed
Build and Test / test (push) Failing after 34s
fix: correct socket paths to follow Hero socket strategy
Update all stale references from the old flat socket path format
(hero_os_server.sock, hero_os_ui.sock) to the correct per-service
directory layout ($HERO_SOCKET_DIR/hero_os/rpc.sock and ui.sock).

Also fix integration tests and examples that used wrong ws+unix://
URLs and incorrectly called --start/--stop on server/ui binaries
directly — only the hero_os CLI binary manages lifecycle via hero_proc.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-07 08:39:05 +02:00
.cargo feat: implement Hero socket strategy with HERO_SOCKET_DIR support 2026-04-06 09:52:21 +02:00
.forgejo/workflows fix: consolidate CI into single job to avoid runner cancellation 2026-02-12 22:15:49 +01:00
android/res Phase 2e/2f: Bootstrap 5.3 theme unification + dock sizing 2026-03-06 20:04:41 -05:00
crates fix: correct socket paths to follow Hero socket strategy 2026-04-07 08:39:05 +02:00
docs fix: correct socket paths to follow Hero socket strategy 2026-04-07 08:39:05 +02:00
schemas/desktop feat: migrate to OServer::run_cli() and rename contexts → spaces 2026-03-12 15:09:55 +01:00
scripts fix: migrate service registration to hero_os --start/--stop pattern 2026-04-05 06:05:10 +02:00
tests/e2e Add Playwright E2E theme tests — light/dark mode, toggle, contrast checks 2026-03-07 02:14:16 -05:00
.gitignore refactor: rename crates and switch to Unix domain sockets 2026-03-25 15:50:37 +01:00
buildenv.sh fix: correct socket paths to follow Hero socket strategy 2026-04-07 08:39:05 +02:00
Cargo.lock fix(sockets): correct socket paths to use service name hero_os instead of binary names 2026-04-06 12:57:46 +02:00
Cargo.toml feat: implement Hero socket strategy with HERO_SOCKET_DIR support 2026-04-06 09:52:21 +02:00
config.toml feat: complete zinit → hero_proc migration (#65) 2026-03-20 10:31:58 -04:00
Dioxus.toml feat: wire up URL routing so browser URLs open apps (#30) 2026-04-06 08:30:25 +02:00
Makefile fix: correct socket paths to follow Hero socket strategy 2026-04-07 08:39:05 +02:00
README.md fix: correct socket paths to follow Hero socket strategy 2026-04-07 08:39:05 +02:00

Hero OS

A desktop environment framework built with Dioxus (Rust → WASM) that serves as the host for Hero Archipelago islands. Provides macOS-style window management, context switching, and theming for dynamically loaded WASM applications.

Architecture

hero_os/
├── crates/
│   ├── hero_os/              # CLI — registers services with hero_proc
│   ├── hero_os_server/       # OpenRPC state server (desktop state, windows, layout)
│   ├── hero_os_sdk/          # Type-safe async Rust SDK client
│   ├── hero_os_ui/           # HTTP server — serves WASM assets + RPC proxy
│   ├── hero_os_app/          # Dioxus desktop environment (web/mobile/desktop)
│   ├── hero_os_web/          # Bootstrap shell WASM UI (alternative)
│   └── hero_os_examples/     # Example programs using the SDK
├── schemas/                  # OSchema definitions
├── tests/                    # Playwright E2E tests
├── Makefile
└── buildenv.sh

Sockets

All services use Unix domain sockets exclusively (no TCP ports).

Service Socket Path
hero_os_server $HERO_SOCKET_DIR/hero_os/rpc.sock
hero_os_ui $HERO_SOCKET_DIR/hero_os/ui.sock

Service Communication

Browser
  └─ hero_os_app (WASM, served by hero_os_ui)
       └─ /rpc/{context} → hero_os_ui (proxy)
            └─ Unix socket → hero_osis_server

hero_os CLI (--start/--stop)
  └─ hero_proc (process supervisor)
       ├─ hero_os_server (desktop state, OpenRPC)
       └─ hero_os_ui (HTTP + RPC proxy)

Running

Prerequisites: hero_proc_server must be running.

# Install and start all services
make install       # Build release binaries → ~/hero/bin/
make start         # Register and start via hero_proc

# Development
make installdev    # Build debug binaries → ~/hero/bin/
make run           # Start + stream logs (Ctrl-C to stop)
make web           # Dioxus dev server with hot reload

# Management
make stop          # Stop all services
make restart       # Stop + start
make status        # Show hero_proc status
make logs          # Server logs
make logs-ui       # UI logs

Full stack (dev)

# Terminal 0: hero_proc (if not already running)
hero_proc_server

# Terminal 1: Backend servers
make run

# Terminal 2: Frontend with hot reload
make web

Platforms

Platform Command Notes
Web make web Default, Dioxus dev server
iOS make ios Requires Xcode
Android make android Requires Android SDK
Desktop make desktop Native desktop app

Key Concepts

Contexts

A context is a workspace/namespace that isolates data (e.g., herozero, geomind). Each context has its own desktop state and theme.

Themes

A theme defines visual appearance (colors, typography, spacing). Stored in the backend, referenced by context.

Islands

Islands are self-contained WASM applications loaded as web components from Hero Archipelagos. Each island registers as a custom HTML element, receives configuration via attributes, and makes API calls to the backend.

Testing

make test          # Unit tests
make test-all      # Full test suite
make e2e           # Playwright E2E tests (local)
make e2e-remote    # E2E against live VM
Document Purpose
ARCHITECTURE.md Detailed system architecture
docs/ANDROID.md Android/Volla OS setup
docs/MOBILE.md Mobile layout and sizing
docs/DIOXUS.md Dioxus configuration