Kit is a 1950s/60s Atomic Era-themed assistant.
- Backend: FastAPI “middleware”
- Engine: Open WebUI (typically via Docker)
- Frontend: Vite + React + Tailwind
Want the most reliable start/verify workflow? See: DEV_QUICKSTART.md.
Install deps:
pip install -r requirements.txtRun the server:
uvicorn app.main:app --host 0.0.0.0 --port 8000 --reloadEndpoints:
GET /healthGET /modules/listlist discovered toolsPOST /modules/run/{tool_id}run a tool/{proxy}/...viaGET|POST /proxy/{full_path:path}to Open WebUI
cd frontend
npm install
npm run devThen open:
The dev server proxies these paths to the backend:
/modules/*→http://localhost:8000/proxy/*→http://localhost:8000
The backend proxy defaults to http://localhost:3000.
Override with:
export OPENWEBUI_BASE_URL=http://localhost:3000
export OPENWEBUI_PROXY_TIMEOUT=30A Python file in app/modules/ only qualifies as a tool module if it meets
the contract below.
TOOL_DEFINITION(dict)
Required keys:
id(string)name(string)description(string)version(string)ralph_loop(boolean)allow_network(none|read|write)allow_filesystem(none|read|write)input_schema(dict; JSON-schema-ish)
Optional keys:
icon(string)
run(payload: dict) -> Any
- Tools marked as
mock: trueare rejected. - Tools that fail validation are not discoverable/runnable.
Run the validator from repo root:
python scripts/validate_tools.pyWant a step-by-step guide? See: docs/MODULE_TUTORIAL.md.
Docs index + templates: docs/README.md.
- Teal:
#008080 - Tangerine:
#FF8C00 - Mustard:
#E1AD01 - Beige:
#F1E4B7