| --- |
| title: SCRYPT |
| emoji: π―οΈ |
| colorFrom: green |
| colorTo: gray |
| sdk: docker |
| app_port: 7860 |
| pinned: false |
| --- |
| |
| # SCRYPT |
|
|
| A deck-builder escape room played in a terminal, against an LLM that owns |
| the machine. The Warden sacrifices your shell commands, remembers every |
| run, and threatens your files (sandboxed copies β nothing real is touched). |
|
|
| ## The web layer |
|
|
| This Space is a **custom Osaka-Jade frontend on top of `gradio.Server`** β |
| Gradio is the engine room, not the face. The app *is* a `gradio.Server` |
| (a FastAPI app), driven by uvicorn so our own routes stay authoritative: |
|
|
| - `GET /` β a hand-built CRT landing page (`space/static/`), where the |
| Warden mutters at you before you enter. |
| - `GET /api/whisper` β the backend that feeds those mutterings, in voice. |
| - `GET /play` + `WS /pty` β an xterm.js terminal bridged to a private |
| `python -m scrypt.app` process per visitor: their own sandbox, their own |
| Warden, streamed byte for byte. |
|
|
| Run locally: `python space/app.py` (needs `gradio>=6`), then open |
| `http://localhost:7860`. |
|
|
| ## Secrets |
|
|
| `SCRYPT_API_KEY` β an OpenRouter or NVIDIA NIM key for |
| `nvidia/nemotron-3-nano-30b-a3b`. Without it the Warden falls back to |
| scripted lines: playable, but quieter. Sandboxes here are always |
| fabricated, never mirrored from a real machine. |
|
|