Thanks for your interest in improving Maestro! This is a local-first AI video/image/music studio built on the Wan2GP pipeline and distributed through Pinokio.
Maestro is a Pinokio app, so the easiest dev loop is:
- Install Maestro through Pinokio (see the README). This creates
the Python environment in
app/env/and installs the app. - Edit the source in place. The layout:
- Launcher scripts (
install.js,start.js,update.js,reset.js,pinokio.js) live at the repo root. - Backend —
app/: FastAPI endpoints inapp/launch.py, the generation pipeline inapp/wgp.py, and services (LLM, Director, recipes, etc.) inapp/services/. - Frontend —
ui/: a React + TypeScript + Tailwind app; global state inui/src/stores/useStore.ts.
- Launcher scripts (
- After changing the UI, rebuild it:
Pinokio's Update flow does this automatically; during active dev you can run it yourself.
cd ui npm install npm run build
Every pull request gets an automatic heuristic review from
.github/workflows/pr-review.yml (script: scripts/analyze_pr.py). It
comments risk, clean-repo leaks, secrets, local-first regressions, and
whether tests/UI rebuilds are missing. Re-run it locally:
python scripts/analyze_pr.py --base origin/mainThis is the in-repo stand-in for Cursor Automations / Bugbot. Those cloud agents require Cursor usage-based billing (a payment method) even with SuperGrok Heavy / complimentary Ultra; this workflow does not.
CI runs three checks on every PR — please run them locally first:
# 1. Clean-repo guard (see below) — must pass
python scripts/verify_clean_repo.py
# 2. Python syntax on the modules you touched
python -m compileall -q app/services app/launch.py scripts
# 3. UI type-check + build
cd ui && npm run buildThe canonical backend test command is run from the repository root, so the
pytest.ini pythonpath setting resolves imports from app/ consistently:
app/env/bin/python -m pytest -qEvery pull request and delegated coding task must include a short cost report.
Record measurements before finishing the work, and use N/A when a tool does
not expose them; never invent token counts. The canonical template and the
definitions of each field are in
docs/development/TASK_COST_REPORT.md.
The report belongs in the PR description (or in its final handoff comment) and must distinguish simulated tests from live provider calls. Unit tests and simulated E2E tests normally cost 0 external LLM tokens. Live Wizard/LLM calls must include the provider-reported prompt, completion and total tokens when available. Media generation count and elapsed time should be recorded as well.
scripts/verify_clean_repo.py enforces that certain locally-generated or
machine-specific artifacts never get committed — downloaded weights, CivitAI
metadata sidecars, per-LoRA generated guides, and per-checkpoint finetune JSONs.
These are all gitignored by design; the guard is the backstop that keeps them
out of the published tree. If it fails, it prints exactly what leaked and where.
Don't work around it — fix the leak (usually a file that should be gitignored
got git add-ed).
- Match the surrounding code. Follow the naming, structure, and comment style already in the file you're editing.
- Keep the app local-first. No telemetry, no phone-home, no required accounts. External API providers (OpenAI/Anthropic/etc.) stay strictly opt-in and off by default.
- Third-party components keep their own licenses. Notably the GPL-3.0
seed-vc voice component is fetched from its own repository at install time
(see the README license section) rather than vendored here — don't commit it
back into
app/postprocessing/seedvc/.
Please use the Bug report issue template — it asks for your logs
(logs/api/latest in the Pinokio app folder) and GPU/VRAM/OS, which is almost
always what's needed to reproduce a local-generation issue.
Maestro is released under the WanGP Non-Commercial Evaluation License (inherited from upstream Wan2GP). By contributing you agree your contributions are licensed under the same terms. See LICENSE.