- jobs.node column (migration) written at dispatch: placement was held only
in runner memory, so every job rendered as the primary and busy remotes
showed idle in fluxgod
- sysinfo.nodes_detail() joins running jobs on jobs.node; legacy NULL rows
still credit the primary. gpu_pool() now derives busy from the inflight
counters instead of the dead busy key (set once at load, never updated)
- /api/nodes endpoint exposing the per-machine view
- local pool node named after its host (m3ultra), not "local"
- /api/assets?parent_job= filter actually filters now (was accepted and
silently ignored; callers got the whole table)
- tests/test_node_reporting.py: 8 framework-free checks incl. the captured
/api/nodes contract fluxgod consumes
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
wan_video 5B q8 verified clean on M3 Ultra (148.7s) and M2 Max (503.7s),
identical 9.2GB max RSS on both; 81GB 'footprint' on m2max identified as
MLX opportunistic cache, not demand. Frame-identical output at same seed
across machines. HARDWARE.md gains wan_video and ardy_motion rows.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Thin HTTP client for the resident oMLX server on :8020 (launchd
party.monster.deepseek-v4, repo monster/deepseek_v4_flash_0731_mrp_mlx).
gpu lane so the queue serializes LLM calls against mesh/image gen on this
node. Kickstarts the service if down. Primary-only — ~150GB wired warm.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
mflux-generate-qwen-edit already exposes --lora-paths/--lora-scales; wire them
to params.loras (['multiple-angles=1.0', ...]). Names resolve by filename stem
or fuzzy match across QWEN_LORA_DIRS (default ~/Documents/localmodels/QwenLora)
so John can drop new .safetensors in and use them by short name. Misses log
loudly instead of failing the job.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Remote runs exec the repo-relative manifest python via bash with no
existence check ('vendor/trellis2-mlx/.venv/bin/python: No such file'),
killing trellis2_mlx on the validated m1 lane (its fork lives at
~/trellis2-mlx). Both run.py launchers are stdlib-only and already
resolve the per-box fork checkout + venv themselves — run them on the
server/system python instead. trellis_mac/run.py now resolves its vendor
venv explicitly (sys.executable was only correct under the old pin).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Fork lane (72s vertex) gains the trellis_mac 2026-07-22 quality fixes:
metal UV-PBR bake with explicit RAM-sized face cap (the fork bakes FULL
density when no target passed — 75GB peak; always pass one), forced-
opaque alpha, texture_size/max_bake_faces/alpha_mode params. Verified
m3ultra: 156s e2e, 26.2GB peak, 391,782-tri candidate + 2.19M-tri raw
master. Vendor checkout synced to fork ba4e2ad.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Pre-existing working-tree fix committed for the record: result.json from
a remote worker carries paths on ITS disk; remap by the out/-relative
tail (basename fallback) and log skipped outputs instead of silently
dropping them.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Qwen-Image-Edit takes up to ~3 images ('put the shirt from image 2 on the
person in image 1'); the operator only ever forwarded input[0]. Single-image
jobs unchanged.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
LORA_DIRS searches ~/Documents/localmodels/Lora (John's master) then the repose
copy (SD_LORA_DIRS to override). Load via filtered state_dict keeping only
lora_unet_* keys: this diffusers build IndexErrors on these kohya files'
text-encoder half (empty rank_dict in load_lora_into_text_encoder); the UNet
half carries the look. Verified: all 3 anatomy LoRAs load + generate.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Movie SBS converges on the screen plane, so real content sits at NEGATIVE
disparity; minDisparity=0 clipped everything behind convergence to black.
Window is now ±num_disp/2 with 2-98 percentile normalization and a validity
mask. Verified on Big Buck Bunny (half-OU) + One Night In Hell (half-SBS):
structured depth + colored clouds that render in Blender.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The README still read as a fal.ai front-end with a local afterthought: the headline
`mb` example ran fal_trellis2, the "recommended chain for best image→3D" was four
fal_* calls, and the operator table listed 5 local ops against 9 cloud ones. That is
backwards now — 22 of the 31 operators run entirely on the fleet.
It also predated most of what we have: the whole audio/video/text suite (tts_local,
stt_local, voice_clone_local, music_local, lipsync_local, wan_video, llm_local,
motion_local), comfyui_sd, flux_local, mflux_image_edit, seedvr2_upscale and
bg_remove_local were all missing from the catalog entirely.
- lead with local; cloud demoted to its own opt-in "costs real money" section
- all 31 operators documented, grouped by what you're trying to make
- recommended chain is now local: bg_remove_local -> [seedvr2_upscale] -> trellis_mac
(quality) or hunyuan3d_mlx (faster, ~3x lighter, the only one that runs on M1)
- setup section reordered: most local ops need nothing, hunyuan3d_mlx needs no HF
login at all, only sf3d/trellis_mac/bg_remove_local are gated
- lanes corrected: gpu+cpu are a NODE POOL (gpu 1/node, cpu per-node cpu_slots),
not the old flat "gpu=1, cpu=3, net=6"
- manifest `python` documented as repo-relative (remote nodes can't resolve absolute)
- link PERFCHECK.md; drop the stale "on the M3 Ultra" framing — it's a fleet
- verified: every operator on disk appears, no phantom ids, no broken doc links
Also: .gitignore had `*.env` and `.env`, neither of which matches a suffixed name
like `.env.remote` — which is sitting un-ignored in the m1's checkout right now, one
`git add -A` away from being committed. Ignore the `.env.*` family (keeping
.env.example committable). Nothing has leaked: no .env file is tracked.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
These three were onboarded on 2026-07-17 and are live in nodes.json, but the docs
still described a three-machine fleet (M3 Ultra / M1 Ultra / M4 Pro). Anyone reading
CLUSTER.md to decide where a job should land was working from a stale map.
Records the M1 Max as a second full gen node (flux_local, hunyuan3d_mlx; NOT trellis
- M1 bf16), and the M4 mini / M1 mini as light bg_remove + cpu helpers. Also notes
the M1 Max login split: admin is `m1max`, but the checkout and farm run as `studio`,
which needs /opt/homebrew/bin on its login PATH.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>