Keep public simulator credentials outside visitor runtimes - #777
Draft
axelpey wants to merge 1 commit into
Draft
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Public simulator containers currently receive a shared service key. This change adds a public runtime mode that fails before startup if credentials or owner configuration are present, and routes Gemini, Cartesia, ElevenLabs and UniNavid through the private credential relay with no client key, token or Authorization header. Owner-local authenticated clients remain supported.
The HTTP front door also stops serving hidden/config files, confines model/media/log symlink targets to their intended roots, and returns public settings defaults. Controlled canaries reproduced seven conditional file/config disclosures on the baseline and verified their denial after the change. The audit did not establish that these misplaced files existed in production.
Stacked on #775, the independently reviewable ROS credential-parameter fix. Requires innate-cloud broker/relay #111 and service-proxy #108. These changes must be staged together; the old broker's credential injection is intentionally rejected by this image. Nothing has been deployed. The standalone legacy demo also needs its own private relay or retirement; the Kubernetes manifest alone does not migrate it.
Validation: 43 HTTP/client/media integration tests and 3 tests in an isolated real ROS container passed. Actual UniNavid navigation exchanges work through a local credentialless WebSocket. The actual OS ProxyClient -> private relay -> service proxy chain passed synthetic Gemini SSE, Cartesia audio, forced key-echo error suppression and shared-storage denial. All 127 current/legacy browser asset paths returned 200, and Agent-to-Settings navigation rendered without browser console errors.
Release verification still required: build and boot the production simulator image, exercise full ROS/video/agent behavior and real inference in staging, verify Kubernetes policy enforcement, then drain old sessions and rotate the historical shared demo key. The browser smoke had no ROS/video backend. No real key values were retrieved during this audit. Keep this PR draft until Axel explicitly approves it.