dod-uno / README.md
elismasilva's picture
update READEM.md
9ac4d2e
|
Raw
History Blame Contribute Delete
9.63 kB
---
title: DOD - Deploy or Draw
emoji: 🃏
colorFrom: purple
colorTo: pink
sdk: gradio
sdk_version: 6.18.0
python_version: '3.10'
app_file: app.py
pinned: false
hf_oauth: true
license: mit
thumbnail: https://huggingface.co/datasets/DEVAIEXP/assets/resolve/main/dod_thumb.PNG
tags:
- build-small-hackathon
- thousand-token-wood
- gradio
- game
- multiplayer
- custom-ui
- off-brand
- off-the-grid
- tiny-titan
- llama-champion
- nemotron
- nvidia
- openbmb
- voxcpm2
- modal
- llama-cpp
- codex
- field-notes
- track:wood
- sponsor:openbmb
- sponsor:openai
- sponsor:nvidia
- sponsor:modal
- achievement:offgrid
- achievement:offbrand
- achievement:sharing
- achievement:llama
- achievement:fieldnotes
short_description: A Multiplayer UNO Game
---
<p align="center">
<img src="assets/logo.jpeg" alt="DOD - Deploy or Draw logo" width="180">
</p>
<h1 align="center">DOD - Deploy or Draw</h1>
<p align="center">
<strong>A multiplayer UNO-inspired game where production incidents become chaos, comedy, and AI-powered table drama.</strong>
</p>
## Play The Incident
DOD - Deploy or Draw turns a software outage into a strange little card-table emergency.
Players race to resolve a live production crisis before the Director's panic meter explodes.
The AI is not decoration here. It is load-bearing:
- **Nemotron** is a mandatory rival that reads the current board, evaluates playable cards, chooses actions, and selects wild-card colors.
- The **IT Director** reacts to every played card with short crisis-aware bilingual commentary.
- **VoxCPM2** turns those Director reactions into voice, making the match feel like an absurd deploy-night war room.
It is part UNO, part incident response simulator, part tiny corporate theater.
## Demo Links
- **Live Space:** https://huggingface.co/spaces/build-small-hackathon/dod-uno
- **Demo video:** https://youtu.be/QahSgSKtvNQ
- **Social post X:** https://x.com/pelolisu/status/2065197829031604618?s=20
- **Social post Linkedin 1:** https://www.linkedin.com/posts/elismasilva_generativeai-devops-gamedev-share-7470967633346027520-OE7v/?utm_source=share&utm_medium=member_desktop&rcm=ACoAAARdvBoBOi8NC3UXuKIGEUImbEK50Lgwp6E
- **Field Notes:** https://huggingface.co/blog/elismasilva/dod-uno-en
- **GitHub repository:** https://github.com/DEVAIEXP/doduno
The GitHub repository above is the source-of-truth development repository.
It contains the full implementation history, installation documentation, local-mode setup, and Codex-attributed commits.
This Space repository is a deployment copy prepared for judges to play the finished app.
## Hackathon Track
Submitted for **An Adventure in Thousand Token Wood**.
The goal was to build something delightful that would not exist without AI: a toy-like multiplayer game where small models create the fun, tension, and personality of the table.
## Targeted Special Awards And Bonus Quests
| Award or bonus quest | Where judges can validate it |
|---|---|
| **NVIDIA Nemotron Quest** | Nemotron Nano 4B is the mandatory AI opponent. Gameplay LLM inference runs through the companion Space [`build-small-hackathon/dod-llm-server`](https://huggingface.co/spaces/build-small-hackathon/dod-llm-server), and the game board shows Nemotron taking turns, drawing, playing valid cards, and selecting wild-card stacks. |
| **OpenBMB Awards** | VoxCPM2 powers the IT Director voice layer. The public demo can call the Modal-hosted VoxCPM2/NanoVLLM endpoint at `https://elismasilva--voxcpm2-nanovllm-service-generate-api.modal.run`, and the GitHub repo includes the local NanoVLLM/VoxCPM2 path. |
| **Modal Awards** | The hosted TTS route uses Modal for low-friction GPU audio generation through `https://elismasilva--voxcpm2-nanovllm-service-generate-api.modal.run`. See the demo video for Director voice playback during a match. |
| **OpenAI Track** | Development was assisted by OpenAI Codex. The source-of-truth GitHub repository includes Codex-attributed commits and the implementation history: https://github.com/DEVAIEXP/doduno. |
| **Tiny Titan** | The project uses small models only: NVIDIA Nemotron Nano 4B for gameplay/Director text and VoxCPM2 for voice. Both stay well below the 32B hackathon cap, and Nemotron is in the <=4B range highlighted by Tiny Titan. |
| **Off-Brand / Off-Brand Award** | The app uses custom Gradio `gr.HTML` components, board-scoped CSS, browser-side game logic, animated cards, custom toasts, audio controls, and a full game-like interface instead of the default Gradio form look. |
| **Off the Grid** | The GitHub version supports fully local execution with local LLM, local TTS, local leaderboard, and local inference mapper files. The public Space uses hosted endpoints so judges can play easily, but the local mode is documented in the repo. |
| **Llama Champion** | The local LLM server runs GGUF inference through `llama-cpp-python` in the `dod-llm-server` submodule. |
| **Sharing is Caring** | DOD records append-only agent traces for Nemotron turns and Director reactions, then uploads them to the Hub Dataset [`build-small-hackathon/dod-agent-traces`](https://huggingface.co/datasets/build-small-hackathon/dod-agent-traces). |
| **Field Notes** | The build write-up is published here: https://huggingface.co/blog/elismasilva/dod-uno-en. |
| **Best Demo** | The submission includes a short gameplay video and social posts: [demo video](https://youtu.be/QahSgSKtvNQ), [X post](https://x.com/pelolisu/status/2065197829031604618?s=20), and [LinkedIn post](https://www.linkedin.com/posts/elismasilva_generativeai-devops-gamedev-share-7470967633346027520-OE7v/?utm_source=share&utm_medium=member_desktop&rcm=ACoAAARdvBoBOi8NC3UXuKIGEUImbEK50Lgwp6E). |
## Tech Stack
DOD is built as a small distributed game system: a custom Gradio frontend, an authoritative Python game server, a small-model LLM opponent, generated Director dialogue, and an optional remote voice runtime.
| Area | Stack | What it does |
|---|---|---|
| **App framework** | [Gradio 6](https://www.gradio.app/) on Hugging Face Spaces | Hosts the public multiplayer game and OAuth login flow. |
| **Custom UI** | `gr.HTML` custom components, browser JavaScript, board-scoped CSS | Renders the arcade card table, animated board, toasts, mute controls, spectator mode, and card interactions. |
| **Game backend** | Python `GameManager` | Owns the official UNO-like rules, lobby, queue, turn timers, accusations, crisis meters, and scoring. |
| **AI opponent** | [NVIDIA Nemotron Nano 4B](https://huggingface.co/nvidia), called through [`build-small-hackathon/dod-llm-server`](https://huggingface.co/spaces/build-small-hackathon/dod-llm-server) | Makes Nemotron a real player: it reads the table state, picks valid cards, draws, and chooses wild-card stacks. |
| **LLM runtime** | GGUF inference through `llama-cpp-python` | Powers the companion LLM server and supports local execution in the GitHub version. |
| **Director text** | Nemotron Nano 4B with card, crisis, and recent-quote context | Generates short bilingual reactions that make each move feel less scripted. |
| **Director voice** | VoxCPM2 / NanoVLLM | Converts Director reactions into voice lines for English and Portuguese. |
| **Remote TTS runtime** | [Modal](https://modal.com/) endpoint: `https://elismasilva--voxcpm2-nanovllm-service-generate-api.modal.run` | Lets the public demo use GPU voice generation without requiring the main Space to host the TTS model. |
| **Agent traces** | Append-only JSONL synced to [`build-small-hackathon/dod-agent-traces`](https://huggingface.co/datasets/build-small-hackathon/dod-agent-traces) | Records Nemotron decisions and Director reactions with input, raw model output, processed output, fallback status, and latency. |
| **Dynamic routing** | Hugging Face Dataset-backed `inference_map.json` | Lets the app change LLM/TTS primary and fallback endpoints without redeploying the Space. |
| **Identity and leaderboard** | Hugging Face OAuth plus `leaderboard.csv` in a Dataset | Keeps public ranking entries tied to authenticated Hugging Face users. |
| **Local/off-grid mode** | Local LLM, local TTS, local leaderboard, local inference mapper | Allows the GitHub version to run without remote APIs on suitable hardware. |
The public Space prioritizes a smooth judging experience with hosted endpoints. The GitHub repository keeps the full local setup documented for people who want to run the whole stack themselves.
## Gameplay Summary
- Match the active stack color or the active card icon/category.
- Resolve the crisis before the Director panic meter reaches 100%.
- Shout **Deploy** when you reach one card, or another player can accuse you.
- Wild cards let the player, or Nemotron, choose the next active stack.
- The Director reacts to card plays in English and Portuguese.
- The leaderboard records authenticated Hugging Face users.
## Local Mode
The full installation guide lives in the GitHub repository:
https://github.com/DEVAIEXP/doduno
The app can run locally with:
- local Gradio game server
- local `llama-cpp-python` LLM server
- local NanoVLLM/VoxCPM2 TTS server
- local leaderboard and inference mapper files
For lightweight development, TTS can be disabled so Director lines appear as text only.
## Credits
- Voice generation uses **VoxCPM2 by OpenBMB**.
- Gameplay inference uses **NVIDIA Nemotron Nano 4B**.
- Remote audio inference uses **Modal**.
- Development was assisted by **OpenAI Codex with GPT-5.5**.
Built with **Gradio** and **Hugging Face Spaces** for the Build Small Hackathon.
## License
MIT License. See the linked GitHub repository for the full source and license.