DGXAI/driftcall
DriftCall — Unified Space
One HF Space serving the OpenEnv-compliant DriftCall env and the project site, both under the same hostname. OpenEnv routes are at the canonical bare paths (no /api prefix), so the registry and the gym client see this Space exactly as it sees the dedicated env Space.
URL surface
The OpenEnv routes do not collide with the static frontend because they are HTTP verb-specific (POST /reset, POST /step, POST /close, plus GET /healthz and GET /state) — Vite-emitted assets live under /assets/* and never overlap.
Why both, not separate?
The dedicated env Space (DGXAI/driftcall-env) and project site (DGXAI/driftcall-site) still exist as canonical, isolated artefacts. This Space is an additive convenience for hackathon judging: land at one URL and you see the project, can hit the reward function endpoint, and get redirected to the demo. The Gradio demo stays separate because it's GPU-heavy and benefits from its own scaling.
What's bundled
Self-contained — the build dir for this Space contains everything it needs to run, with no references to anything outside it:
unified_space/build/
├── app.py ← canonical OpenEnv FastAPI (verbatim copy)
├── unified_app.py ← extends app.py + adds static mount + /demo redirect
├── openenv.yaml ← OpenEnv v1.0 manifest
├── requirements.txt ← runtime deps (no training stack)
├── Dockerfile ← multi-stage CPU image, Kokoro + faster-whisper baked
├── cells/ ← DriftCallEnv + 5 reward components + drift + audio
├── data/ ← briefs, drift patterns, API schemas
└── site/ ← Vite-built React dist (frontend)Build + push with bash deploy/unified_space/build.sh --push from the repo root.
OpenEnv compliance
- Manifest: served at
/openenv.yaml - Endpoints: bare-path canonical (
/reset,/step,/state,/close,/healthz) - Auth: bearer (
DRIFTCALL_ENV_TOKEN) +X-Session-Idheader on mutating calls - Action / Observation refs:
cells.step_04_models:DriftCallAction/cells.step_04_models:DriftCallObservation - Reward: 5 components (R1..R5) with weights, calibration via Brier + uncertain floor — see
cells/step_08_rewards.pyand the openenv.yaml reward block.
