No description
  • Rust 65.7%
  • JavaScript 15.2%
  • Shell 7.7%
  • HTML 6.4%
  • CSS 4.3%
  • Other 0.7%
Find a file
Mahmoud-Emad 24a420a654
All checks were successful
Test / test (pull_request) Successful in 1m29s
Build Linux / build-linux (linux-amd64-musl, false, x86_64-unknown-linux-musl) (push) Successful in 2m41s
Test / test (push) Successful in 1m59s
chore: bump version to 0.1.1
2026-04-08 14:00:29 +02:00
.forgejo/workflows chore: rename workflow files to match hero_compute (test.yaml, build-linux.yaml) 2026-04-08 09:43:11 +02:00
crates feat: dynamic socket-name URL routing for multi-service support 2026-04-08 13:27:53 +02:00
docs docs: update README and add documentation 2026-04-08 10:23:54 +02:00
patches/rustls-acme-0.15.1 refactor: simplify socket discovery and fix RPC base path for UI 2026-04-08 12:28:48 +02:00
scripts fix: migrate from Rhai scripts to direct CLI pattern and use restart_service 2026-04-05 05:38:49 +02:00
.env.example add tls support 2026-02-18 08:07:07 +01:00
.gitignore Initial hero_proxy: reverse proxy for hero services 2026-02-16 00:34:57 +01:00
buildenv.sh chore: bump version to 0.1.1 2026-04-08 14:00:29 +02:00
Cargo.lock fix: remove rust-version pinning and correct hero_rpc dependency versions 2026-04-08 12:28:19 +02:00
Cargo.toml fix: remove rust-version pinning and correct hero_rpc dependency versions 2026-04-08 12:28:19 +02:00
Makefile fix: migrate from Rhai scripts to direct CLI pattern and use restart_service 2026-04-05 05:38:49 +02:00
README.md docs: update README and add documentation 2026-04-08 10:23:54 +02:00

Hero Proxy

HTTP/HTTPS reverse proxy and service discovery for the Hero ecosystem. Routes incoming traffic to Hero services via URL prefix to Unix Domain Socket forwarding, with TLS termination, SSH tunnels, OAuth, and a management API.

Quick Start

# Build and start
make run

# Stop
make stop

# View service status
make status

Open the admin dashboard at http://localhost:9997 (via hero_router).

Architecture

Internet / Browser
       │
  :9997 (HTTP) / :9996 (HTTPS)
       │
  hero_proxy_server
    ├── /{service}/* → ~/hero/var/sockets/{service}/*.sock
    ├── TLS termination (self-signed or Let's Encrypt)
    ├── SSH tunnel manager (reverse port forwarding)
    └── OpenRPC management API
       │
  Unix sockets (all Hero services)
    hero_osis/ui.sock, hero_embedder/ui.sock, ...

Crates

Crate Type Description
hero_proxy binary CLI — registers and starts/stops all services via hero_proc
hero_proxy_server binary TCP proxy + service discovery + OpenRPC management API
hero_proxy_ui binary Admin dashboard
hero_proxy_sdk library Auto-generated typed client for the management API
hero_proxy_examples examples SDK usage examples
hero_proxy_tests library Integration tests for the server and proxy
weblib library Reusable web server library (proxy, TLS, certs, ACME)

Sockets

All sockets under $HERO_SOCKET_DIR/hero_proxy/ (default: ~/hero/var/sockets/hero_proxy/).

Socket Protocol Description
rpc.sock OpenRPC/JSON-RPC 2.0 Management API
ui.sock HTTP Admin dashboard

Ports (TCP)

Port Protocol Description
9997 HTTP Reverse proxy ingress
9996 HTTPS Reverse proxy ingress (TLS)
80 HTTP Redirect to HTTPS (Let's Encrypt mode only)

Documentation

Development

make check          # cargo check
make test           # cargo test
make lint           # clippy
make fmt            # rustfmt
make rundev         # debug build, direct execution
make test-all       # full CI suite

Installation

make install        # build release + install to ~/hero/bin/