Spaces:
Running on Zero
A newer version of the Gradio SDK is available: 6.19.0
title: OpenBMB Local AI Workbench
colorFrom: green
colorTo: gray
sdk: gradio
app_file: app.py
pinned: false
tags:
- track:backyard
- sponsor:openbmb
- sponsor:openai
- achievement:welltuned
- achievement:llama
- achievement:sharing
📺 Demo video: HF Space Recording ·
📺 Social Demo: https://twitter.com/zX14_7/status/2066669462179242412
OpenBMB Local AI Workbench
A Gradio workbench for the Build Small Hackathon: small local models, practical experimentation, and a clear path from local demo to Hugging Face Space.
What This Is
The project turns the PRD in HF_PRD_v1.md into a staged implementation:
- A working Gradio app shell.
- Config-driven OpenBMB model registry.
- Local-first inference path through real backends: Transformers, Ollama, llama.cpp, LM Studio/OpenAI-compatible, SGLang, and vLLM.
- Field notes for collecting corrections.
- Extension points for training, GGUF export, Trackio traces, MCP tools, and agent workflows.
Hackathon Fit
- Track: Backyard AI or Thousand Token Wood, depending on the final user story.
- Canvas: Gradio app, deployable to Hugging Face Spaces.
- Small model rule: target models stay at or below 32B parameters.
- Bonus quests: local-first, field notes/report, possible llama.cpp and trace sharing.
Quick Start
Python is not currently available on PATH in this workspace shell. Install Python first, then:
.\scripts\verify_structure.ps1
& "$env:LOCALAPPDATA\Microsoft\WindowsApps\python3.11.exe" -m venv .venv
.venv\Scripts\Activate.ps1
python -m pip install -r requirements.txt
python -m pip install -r requirements-dev.txt
.\scripts\run_tests.ps1
python app.py
Browser E2E Screenshots
After installing Node.js:
npm install
npm run e2e:install
npm run e2e
The Playwright user-story tests run separate Workbench and Plant flows and save documentation
screenshots under assets/e2e/workbench/ and assets/e2e/plant/. The Workbench screenshot now runs
local GGUF chat through llama-cpp-python; the Plant screenshot can run OpenBMB MiniCPM-V on
assets/plant_sample.jpg with RUN_REAL_MODEL_E2E=1.
only when RUN_REAL_MODEL_E2E=1 is set; otherwise the browser tests verify real-backend setup
surfaces without using mock responses. To record or edit the browser flow manually, run
npm run e2e:record.
Generated screenshot sets:
Template And Reference Apps
This repo is also a template for focused local-first Gradio apps. The first reference app is
Plant Discovery under plant/.
.venv\Scripts\python.exe -m plant.app --no-model --port 7861
Use the real OpenBMB VLM path after installing optional plant dependencies:
.venv\Scripts\python.exe -m plant.app --model-mode openbmb --port 7861
The detailed build guide is docs/TEMPLATE_HOWTO.md, and the Plant Discovery checklist is docs/PLANT_DISCOVERY_APP_PLAN.md. Model and adapter training steps are in docs/PLANT_MODEL_AND_TRAINING_HOWTO.md.
If python is not recognized, install Python 3.11+ from python.org or the Windows Store,
then reopen the terminal so PATH is refreshed.
Open the local URL shown by Gradio, usually http://127.0.0.1:7860.
Project Structure
.
|-- app.py
|-- AGENTS.md
|-- README.md
|-- requirements.txt
|-- config/
| |-- models.yaml
| `-- training.yaml
|-- core/
| |-- events.py
| `-- registry.py
|-- datasets/
| `-- field_notes.py
|-- models/
| |-- placeholder_service.py
| `-- model_catalog.py
|-- ui/
| |-- chat_tab.py
| |-- dataset_tab.py
| |-- export_tab.py
| |-- notes_tab.py
| |-- traces_tab.py
| |-- agent_tab.py
| |-- status_tab.py
| |-- train_tab.py
| `-- vision_tab.py
|-- data/
| `-- .gitkeep
|-- exports/
| `-- .gitkeep
|-- HF_PRD_v1.md
`-- HF_PRD_ext.md
Project Docs
The working docs live in docs/README.md.
- Task checklist
- Implementation status
- PRD implementation matrix
- Acceptance criteria
- Roadmap
- Template how-to
- Plant Discovery plan
- Usage guide
- Architecture guide
- Extension guide
- Hackathon submission package
- Test and quality policy
Current Truth
The full PRD is not implemented yet. The current app is a tested, quality-gated scaffold moving
from placeholder-first local verification to real-backend Workbench deployment. GitHub push is
complete at https://github.com/Ckal/codex. LM Studio/OpenAI-compatible text inference has been
verified previously; OpenBMB Transformers, Ollama OpenBMB, llama.cpp, MiniCPM-V, Space builds,
training execution, served MCP, and most extension PRD items still need proof before being claimed
done.
Model Plan
Initial candidates from the PRD:
| Config ID | Model | Purpose |
|---|---|---|
minicpm5_1b |
openbmb/MiniCPM5-1B |
text chat, LoRA, local-first baseline |
minicpm_v46 |
openbmb/MiniCPM-V-4.6 |
image/video understanding |
minicpm_o45 |
openbmb/MiniCPM-o-4.5 |
omnimodal stretch goal |
The app does not download large model files automatically. In deployed Space mode, placeholder backend choices are hidden and model calls require real backend configuration. llama.cpp, llama-cpp-python, Ollama, LM Studio/OpenAI-compatible, SGLang, Nemotron Nano 9B v2, and Transformers text can be selected as backends, but the backend tool/package/server must be installed and populated with the selected model explicitly by the user.
Deployment Target
For Hugging Face Spaces, keep these files at repo root:
app.pyrequirements.txtREADME.mdconfig/core/models/ui/
Workbench Space target:
https://huggingface.co/spaces/build-small-hackathon/workbench
Spaces
- Workbench Space: https://huggingface.co/spaces/build-small-hackathon/workbench
- Plant Identification Tool Space: https://huggingface.co/spaces/build-small-hackathon/plant_identification_tool
Both Spaces have been pushed. At the latest local poll they were still in Hugging Face BUILDING
state on zero-a10g, so final build/run smoke verification is still open.
Plant Identification Tool Space target:
https://huggingface.co/spaces/build-small-hackathon/plant_identification_tool
Use a freshly generated token through hf auth login; do not paste tokens into files or commit
them.
Later deployment commands:
hf auth login
git remote add space-workbench https://huggingface.co/spaces/build-small-hackathon/workbench
git push space-workbench main
git remote add space-plant https://huggingface.co/spaces/build-small-hackathon/plant_identification_tool
git push space-plant main
Next Implementation Steps
- Decide the exact hackathon story and user.
- Add screenshot/demo media and Space submission URLs.
- Push and verify the two Hugging Face Spaces, then finish llama.cpp MiniCPM-V mmproj vision verification.
- Add field-note export to JSONL/HF Dataset.
- Polish README with screenshots, demo video script, and submission links.