Local-first palette generation engine that learns a user's aesthetic from heterogeneous taste sources and compiles it into a versioned design genome.
Repository: github.com/ledoit/Rob-Ross
If your checkout folder is still named robross-palette-engine, you can rename it to rob-ross-palette-engine locally (close editors first if Windows reports “permission denied”).
- 100% local execution
- No paid APIs
- No cloud dependencies at runtime
- Deterministic color math done in code (not by LLM)
- Python 3.11+
- Ollama (
mistralorllama3) - LlamaIndex
- ChromaDB
- sentence-transformers
- colormath
- Rich
- Typer
- Palette Studio (optional): FastAPI + Alpine.js — local UI on
127.0.0.1:8765, animated CSS mesh background, no separate frontend build step
- Create environment:
python -m venv .venv- Windows Bash:
source .venv/Scripts/activate
- Install dependencies:
pip install -r requirements.txt
- Install Ollama and pull a local model:
- Install from https://ollama.com/download
- Run:
ollama pull mistral- or
ollama pull llama3
- Optional environment variables (prefer
ROB_ROSS_*; legacyROBROSS_*still works):setx ROB_ROSS_OLLAMA_MODEL mistral(PowerShell:$env:ROB_ROSS_OLLAMA_MODEL="mistral"for session only)setx ROB_ROSS_EMBED_MODEL sentence-transformers/all-MiniLM-L6-v2
- Run CLI:
python cli.py --help
- Palette Studio (infinite select → regen loop in the browser):
python -m studio- Open http://127.0.0.1:8765 (override host/port with
ROB_ROSS_STUDIO_HOST/ROB_ROSS_STUDIO_PORT; setROB_ROSS_STUDIO_RELOAD=truefor dev autoreload) - Check variants to set the shortlist for the next run, edit the brief, Regenerate. Heart adds a palette to the export roster (same as
roster add).
python cli.py ingest <source>python cli.py build-genomepython cli.py generate --task "make 11 ide palettes and 5 web palettes then build a superset of 25"python cli.py quick "black and yellow"— prompt-driven IDE batch (--variety,--adherence,--freshto wipeide_palette_*.jsonfirst)- Taste moods are weighted-sampled per batch when
genome/user_loop_state.jsonexists (auto-created on firstquick). Hearts /roster add/roster shortlist addbump weights. Optional reproducibility:ROB_ROSS_SEED=12345. python cli.py preview— HTML mock-editor gallerypython cli.py roster add ide_palette_02— final pick (VS Code export list); aliasroster export-addpython cli.py roster shortlist add ide_palette_02— shortlist (best-of-batch; biases the nextquickonly)python cli.py export-themespython cli.py feedbackpython cli.py superset --input-palettes outputs/palettes --count 25
genome/genome JSON,theme_roster.json(export + shortlist),user_loop_state.json(taste mood weights + event tail), history snapshotssources/raw and processed extracted principlesvector_store/Chroma persistence (rob_ross_principlescollection)outputs/palettes/generated palettes JSONoutputs/reports/rationale markdown reportscore/implementation modules (quick_session.pyis shared by CLI quick and Studio)studio/FastAPI app + templates + static CSStests/unit testsscripts/export_vscode_themes.py— installable Cursor/VS Code themes (rob-ross-ide-palettes)vscode-themes/local theme extension package