DeepRepair Mission Control is an operations-style spacecraft recovery demo. It connects a live Probe simulator, an E4B/Gemma reasoning layer, a policy-gated recovery orchestrator, a Ground Twin planner, a modular testbed, and Open MCT telemetry views into one end-to-end mission-control workflow.
The demo is designed for a Mac-hosted backend and frontend, with the E4B/Gemma model served separately through a remote OpenAI-compatible vLLM endpoint.
- Live spacecraft telemetry with fault injection and command execution.
- Probe-side diagnosis through a remote fine-tuned E4B/Gemma model.
- Helm-style recovery reasoning with manual, assisted, and automatic review modes.
- Policy-gated execution for low-risk and high-risk recovery commands.
- Ground Twin plan comparison, playback, hidden-state inspection, and constraint checks.
- A modular Ground Twin Testbed for assembly validation, Twin-only faults, simulation campaigns, command packages, and simulated uplink.
- Open MCT views for real telemetry and Twin-predicted telemetry channels.
frontend/ React + TypeScript Mission Control UI, Ground Twin UI, Open MCT entrypoints
pi_probe/ FastAPI Probe simulator, telemetry, agents, Helm, orchestrator, Twin engine
scripts/ Install, backend, frontend, and remote vLLM startup scripts
docs/ Final test and demo instructions
assets/ Shared 3D and visual assets
Remote GPU host
vLLM OpenAI-compatible API
fine-tuned E4B/Gemma model
|
| GEMMA_API_BASE
v
Mac / local development machine
FastAPI Probe backend on :8010
- Probe state simulator
- telemetry history and websocket stream
- fault injection
- command whitelist and safety gate
- E4B/Gemma adapter
- Helm runtime
- recovery orchestrator
- Ground Twin engine and testbed
|
| VITE_PROBE_API_BASE / VITE_PROBE_WS_BASE
v
Vite frontend on :5173
- Mission Control
- Ground Twin Testbed
- Open MCT
- Python 3.10 or newer
- Node.js 18 or newer
- npm
- A remote vLLM server for the real E4B/Gemma path, or mock mode for local UI/backend testing
Python dependencies are listed in pi_probe/requirements.txt. Frontend dependencies are listed in frontend/package.json.
Use this path when the remote model service is not available and you only need the local application flow.
git clone https://github.com/xiaodouzi666/Tethered-to-Tomorrow.git
cd Tethered-to-Tomorrow
bash scripts/install_probe_backend.sh
bash scripts/start_probe_mock.shIn another terminal:
bash scripts/start_frontend.shOpen:
http://localhost:5173
Run this on the remote machine that has the fine-tuned model checkpoint available:
export GEMMA_MODEL=gemma4_e4b_tuned
export VLLM_PORT=8000
bash scripts/server_start_vllm_e4b.shValidate the model endpoint from the Mac:
curl http://<remote-host>:8000/v1/modelscd Tethered-to-Tomorrow
export GEMMA_API_BASE=http://<remote-host>:8000/v1
export GEMMA_MODEL=gemma4_e4b_tuned
bash scripts/start_probe_gemma_remote_vllm.shHealth checks:
curl http://127.0.0.1:8010/health
curl http://127.0.0.1:8010/api/agent/gemma/status
curl http://127.0.0.1:8010/api/orchestrator/auto-session/latestcd frontend
cp .env.example .env
npm install
npm run devOpen:
http://localhost:5173
- Mission Control:
http://localhost:5173/ - Ground Twin Testbed:
http://localhost:5173/twin - Open MCT:
http://localhost:5173/openmct.html
- Confirm
Probe Link: ONLINE. - Inspect live telemetry and subsystem status.
- Inject a fault such as thermal, communications, power, or sensor.
- Run onboard E4B diagnosis.
- Review the recommendation and policy gate.
- Execute an allowed low-risk command or keep high-risk commands gated for operator review.
- Start the backend with remote Gemma enabled.
- Select E4B Helm in the recovery panel.
- Run live analysis or enable the backend auto monitor.
- Review the Helm dialogue, recommendation, policy result, and execution trace.
- Use manual, assisted, or auto review modes depending on the demo path.
- Open the Ground Twin workspace.
- Run
Analyze Current State. - Inspect generated plans, Twin verdicts, constraints, and telemetry projection.
- Use the playback timeline to step through predicted state.
- Switch candidate plans to compare recovery outcomes.
The frontend intentionally blocks stale, expired, or invalidated baselines from reusing old playback. Run a new analysis or compare after the real Probe state changes.
- Freeze a baseline.
- Inspect or modify the modular component graph.
- Inject Twin-only component faults.
- Run a campaign across environment branches and deterministic seeds.
- Build a command package.
- Approve and simulate uplink when the package passes policy checks.
- Open
openmct.html. - Browse
real/*telemetry channels. - Plot real temperature, voltage, communications, or subsystem channels.
- Run Twin analysis.
- Browse
twin/*predicted channels when Twin data is available.
Common environment variables:
PROBE_HOST=127.0.0.1
PROBE_PORT=8010
GEMMA_BACKEND=remote_vllm
REQUIRE_REAL_GEMMA=1
GEMMA_API_BASE=http://<remote-host>:8000/v1
GEMMA_MODEL=gemma4_e4b_tuned
GEMMA_API_KEY=
GEMMA_TEMPERATURE=0.2
GEMMA_MAX_TOKENS=768
HELM_AUTO_MONITOR_ENABLED=0
HELM_LIVE_EXECUTION_ENABLED=0
TELEMETRY_HZ=1.0
For mock mode:
bash scripts/start_probe_mock.shFor real E4B/Gemma mode:
export GEMMA_API_BASE=http://<remote-host>:8000/v1
bash scripts/start_probe_gemma_remote_vllm.shVITE_PROBE_API_BASE=http://localhost:8010
VITE_PROBE_WS_BASE=ws://localhost:8010
Useful commands:
cd frontend
npm install
npm run dev
npm run build
npm run previewGET /health
GET /api/telemetry/current
GET /api/telemetry/history?metric=thermal.temp_c&limit=300
WS /ws/telemetry
POST /api/faults/inject
POST /api/command
POST /api/agent/diagnose
GET /api/agent/gemma/status
POST /api/orchestrator/live/start
GET /api/orchestrator/session/{session_id}
GET /api/orchestrator/auto-session/latest
POST /api/orchestrator/session/{session_id}/approve
POST /api/orchestrator/session/{session_id}/execute-step
POST /api/orchestrator/session/{session_id}/dialogue
POST /api/twin/run
POST /api/twin/compare
GET /api/twin/compare/{compare_id}/plan/{plan_id}/playback
POST /api/twin/testbed/start
POST /api/twin/testbed/{session_id}/campaign
POST /api/twin/testbed/{session_id}/command-package
- Commands must pass the backend whitelist.
- High-risk commands require human-in-the-loop review.
- The model can recommend actions but cannot execute shell commands.
- Approval creates an execution ticket; it does not directly mutate Probe state.
- Dry-run execution does not change the Probe.
- Live execution is available only through the backend policy gate.
- Ground Twin playback is tied to a frozen baseline and cannot safely reuse old compare ids after baseline invalidation.
The full test and demo checklist is in docs/DEEPREPAIR_TEST_INSTRUCTIONS.md.
Recommended short demo:
- Start remote vLLM.
- Start the Probe backend.
- Start the frontend.
- Show Mission Control with live telemetry.
- Inject a thermal fault.
- Run E4B/Helm diagnosis.
- Show policy-gated recommendation.
- Open Ground Twin and run analysis.
- Show Plan Compare, playback, inspector, constraints, and telemetry projection.
- Open Ground Twin Testbed and show baseline freeze, assembly graph, Twin-only fault, campaign, and package flow.
- Open Open MCT and show real plus Twin telemetry channels.
Frontend production build:
cd frontend
npm run buildThe current build may emit large chunk warnings because Open MCT, Three.js, and the Twin workspace are bundled into the demo build. Those warnings do not block the build.