Spaces:
Runtime error
Deploying the PROTEUS arena to HuggingFace Spaces
This puts the interactive web arena on a public URL anyone can open, with no API keys โ so it can never spend LLM tokens for a visitor.
What runs publicly (and what doesn't)
| Mode | Works on the public Space? | Why |
|---|---|---|
Human play (/session โ /act) |
โ Yes | No model needed โ you control the agent |
fake:demo spectate |
โ Yes | Offline canned agent |
| persona / policy memory | โ Yes | Offline reference policies, no model |
Real-model spectate (anthropic:โฆ, openai:โฆ) |
โ Returns a clean 400 | No API key + provider SDK not installed |
The "no LLM cost" guarantee comes from two layers: the Dockerfile installs
base deps only (no openai/anthropic SDK), and we set no secrets.
Files involved
Dockerfileโ Python 3.12, base deps, runspython -m proteus.web.localon port 7860.dockerignoreโ keeps.env,.venv/,runs/,.git/etc. out of the imageREADME.mdโ the YAML frontmatter at the top configures the Space (sdk: docker,app_port: 7860)
One-time setup
Create a Space at https://huggingface.co/new-space
- SDK: Docker โ "Blank"
- Hardware: CPU basic (free) is enough
- Name it e.g.
proteus-arena
Add the Space as a git remote and push this repo:
# from the repo root git remote add space https://huggingface.co/spaces/<your-username>/proteus-arena git push space master:main # Spaces deploy from the `main` branchHuggingFace asks for a username + an access token as the password. Create one at https://huggingface.co/settings/tokens (role:
write).The Space builds the Dockerfile automatically. When the log shows the server line, open the Space URL โ the arena loads.
Do NOT add secrets
Leave the Space Settings โ Variables and secrets empty. Adding
ANTHROPIC_API_KEY / OPENAI_API_KEY would re-enable real-model spectate and
expose you to token cost / abuse from anonymous visitors. Keeping them unset is
the intended public posture.
Updating the deployment
git push space master:main
Every push triggers a rebuild. Sessions are in-memory and not persisted, so a rebuild simply resets all live games (fine for a demo).
Local smoke test before pushing
docker build -t proteus-arena .
docker run --rm -p 7860:7860 proteus-arena
# open http://localhost:7860/