Islands should reach their backends through hero_router with the member token, not a local socket #160

Open
opened 2026-06-18 01:09:55 +00:00 by mik-tf · 0 comments
Owner

The Hero OS desktop now installs and opens on member instances (the desktop bundle is published in release CI and fetched by the installer). The shell loads, but several islands cannot reach their backend. The Embedder island sits on "Waiting for hero_embedder, admin.sock not found" because the embedder runs as a shared engine on the admin instance, not on each member, so a local socket will never be present there. The Contexts island returns "Socket rpc.sock not found for hero_osis_base, daemon not running" because its backend (hero_osis) is not installed on members yet (tracked at lhumina_code/hero_osis#66). Islands whose backend runs locally on the member (Library, Voice, Memory) work.

The fix is for islands to reach their backend the same way the rest of the stack already does: through hero_router on the same origin, carrying the member's bearer token and context header, instead of assuming a local admin socket. For services that live on the admin instance (the shared engines) that routes the island to the right place over the authenticated overlay; for member-local services it stays local. This is the same same-origin-through-the-router pattern the reusable Dioxus admin library already uses (lhumina_code/hero_website_framework#13). A small per-island check that surfaces "backend not reachable" would also make this visible during an update. Cross-cutting tracking for every island and its backend is at lhumina_code/home#303.

Signed-by: mik-tf mik-tf@noreply.invalid

The Hero OS desktop now installs and opens on member instances (the desktop bundle is published in release CI and fetched by the installer). The shell loads, but several islands cannot reach their backend. The Embedder island sits on "Waiting for hero_embedder, admin.sock not found" because the embedder runs as a shared engine on the admin instance, not on each member, so a local socket will never be present there. The Contexts island returns "Socket rpc.sock not found for hero_osis_base, daemon not running" because its backend (hero_osis) is not installed on members yet (tracked at https://forge.ourworld.tf/lhumina_code/hero_osis/issues/66). Islands whose backend runs locally on the member (Library, Voice, Memory) work. The fix is for islands to reach their backend the same way the rest of the stack already does: through hero_router on the same origin, carrying the member's bearer token and context header, instead of assuming a local admin socket. For services that live on the admin instance (the shared engines) that routes the island to the right place over the authenticated overlay; for member-local services it stays local. This is the same same-origin-through-the-router pattern the reusable Dioxus admin library already uses (https://forge.ourworld.tf/lhumina_code/hero_website_framework/issues/13). A small per-island check that surfaces "backend not reachable" would also make this visible during an update. Cross-cutting tracking for every island and its backend is at https://forge.ourworld.tf/lhumina_code/home/issues/303. Signed-by: mik-tf <mik-tf@noreply.invalid>
Sign in to join this conversation.
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_os#160
No description provided.