Reported by @f3n3k on Windows native install path. Symptom:
C:\001\backend\venv\Scripts\python.exe: No module named uvicorn
[backend] exited with 1
ShadowBroker has stopped. Exit code: 1
Root cause
----------
The Windows Start.bat flow chains:
Start.bat
└─ scripts\run-windows-runtime.ps1
└─ frontend\scripts\dev-all.cjs
└─ start-backend.js
└─ backend\venv\Scripts\python.exe -m uvicorn main:app
`start-backend.js` decided whether an existing `backend\venv` was usable
by calling `canRun(candidate, ["-V"])`. That only checks whether Python
itself can run — it does NOT check whether the backend's actual runtime
dependencies are installed.
When the venv exists but `pip install` never finished (partial install,
failed network, interrupted bootstrap, etc.), the launcher happily
accepted that broken venv, then died with the exact error f3n3k
reported.
Fix
---
New `canRunBackendPython()` helper that requires BOTH:
python -V # Python is runnable
python -c "import fastapi, uvicorn" # backend deps are installed
Used in two call sites:
* `ensureBackendVenv()` — when iterating candidate venvs on first
launch, reject any venv whose Python can't import the backend's
real entry-point deps. The launcher then falls through to its
existing rebuild path (`rebuildBackendVenv`) which reinstalls deps
before declaring the venv healthy.
* `rebuildBackendVenv()` — after a rebuild attempt, verify the deps
are present before returning the new interpreter path. Catches
silent partial rebuilds.
The check is the import that uvicorn itself would do at startup, so a
green return here genuinely means "uvicorn will start". Cost is one
extra `python -c` per venv candidate on launcher startup — milliseconds.
Verified locally with `node --check start-backend.js`.
Credit: @f3n3k for the original report.
Gate messages now propagate via the Infonet hashchain as encrypted blobs — every node syncs them
through normal chain sync while only Gate members with MLS keys can decrypt. Added mesh reputation
system, peer push workers, voluntary Wormhole opt-in for node participation, fork recovery,
killwormhole scripts, obfuscated terminology, and hardened the self-updater to protect encryption
keys and chain state during updates.
New features: Shodan search, train tracking, Sentinel Hub imagery, 8 new intelligence layers,
CCTV expansion to 11,000+ cameras across 6 countries, Mesh Terminal CLI, prediction markets,
desktop-shell scaffold, and comprehensive mesh test suite (215 frontend + backend tests passing).
Community contributors: @wa1id, @AlborzNazari, @adust09, @Xpirix, @imqdcr, @csysp, @suranyami,
@chr0n1x, @johan-martensson, @singularfailure, @smithbh, @OrfeoTerkuci, @deuza, @tm-const,
@Elhard1, @ttulttul