72bf754baacd448b9cad946e4c0dc5d638bedde7
- Move models.yaml into image/ so the docker build context is self-contained - Fix manifest: dockerfile=../image/Dockerfile, workdir=../image - Add LICENSE (MIT) and assets/README.md (StartOS marketplace listing) - s9pk validates: id=spark-control, version=0.1.0:0, osVersion=0.4.0-beta.6, sdkVersion=1.3.3 - Image embeds python:3.12-slim + openssh-client + FastAPI app + models.yaml
spark-control
A browser-based control panel for a dual-DGX-Spark vLLM cluster. Designed to run as a StartOS 0.4 package on a Start9 server on the same LAN as the Sparks.
What it does
- Shows which LLM is currently loaded on the cluster (
:8888/v1/models). - Click to swap to a different model — stops the current one, launches the new one, streams logs to the UI until
Application startup complete.appears. - Surfaces health for Parakeet (STT,
:8000) and Magpie (TTS,:9000) on Spark 2.
Architecture
[Browser/phone] ──► [StartOS reverse proxy] ──► [spark-control container]
│ (SSH over LAN)
▼
[Spark 1] ──► launch-cluster.sh
│
▼
[Spark 2]
Two layers in this repo:
image/— a self-contained FastAPI app + static UI. Runs anywhere withuvicornand an SSH client. Useful for development.package/— a thin StartOS 0.4 wrapper that packages the image, exposes the UI on the LAN, and gives the user actions to configure SSH access to the Sparks.
Quick start (local dev, no StartOS yet)
cd image
python -m venv .venv && source .venv/bin/activate
pip install -e .
export SPARK1_HOST=<spark-1-host>.local
export SPARK1_USER=<spark-user>
export SPARK2_HOST=<spark-2-ip>
export SPARK2_USER=<spark-user>
export SSH_KEY_PATH="$HOME/Library/Application Support/NVIDIA/Sync/config/nvsync.key"
uvicorn app.server:app --host 0.0.0.0 --port 9999 --reload
Open http://localhost:9999.
Repo layout
image/— Docker image source (FastAPI app +models.yaml)package/— StartOS 0.4 package sourcescripts/build-s9pk.sh— convenience wrapper around the StartOS buildrunbook.md— operating notesknown-issues.md— known quirks and workarounds
Status
v0.1 — local-only, single-cluster, no auth (trusts LAN).