{"record":{"id":"206b902446149d91","repo":"unslothai/unsloth","slug":"error-unsloth-frontend-build-not-found-tried","errorCode":null,"errorMessage":"[ERROR] Unsloth frontend build not found.\nTried:\n{tried_lines}\n\nLikely cause: another 'unsloth' on PATH is shadowing the installer's binary and points at a site-packages tree with no built dist.\n\nFix one of:\n  - run the installer's binary directly: {installer_bin} studio\n  - pass --frontend <path/to/studio/frontend/dist>\n  - pass --api-only to skip serving the web UI\n  - reinstall: curl -fsSL https://unsloth.ai/install.sh | sh","messagePattern":"\\[ERROR\\] Unsloth frontend build not found\\.\nTried:\n(.+?)\n\nLikely cause: another 'unsloth' on PATH is shadowing the installer's binary and points at a site-packages tree with no built dist\\.\n\nFix one of:\n  - run the installer's binary directly: (.+?) studio\n  - pass --frontend <path/to/studio/frontend/dist>\n  - pass --api-only to skip serving the web UI\n  - reinstall: curl -fsSL https://unsloth\\.ai/install\\.sh \\| sh","errorType":"console","errorClass":"SystemExit","httpStatus":null,"severity":"critical","filePath":"studio/backend/run.py","lineNumber":2425,"sourceCode":"            logger.warning(\n                \"No frontend build found, so Remote access will not serve the web UI. Tried: %s\",\n                \", \".join(str(p) for p in attempted) or \"(none)\",\n            )\n        else:\n            home_str = (\n                os.environ.get(\"UNSLOTH_STUDIO_HOME\")\n                or os.environ.get(\"STUDIO_HOME\")\n                or str(Path.home() / \".unsloth\" / \"studio\")\n            )\n            # Windows shim: $STUDIO_HOME/bin/unsloth.exe; Linux/macOS venv binary:\n            # $STUDIO_HOME/unsloth_studio/bin/unsloth.\n            home = Path(home_str).expanduser()\n            if sys.platform == \"win32\":\n                installer_bin = home / \"bin\" / \"unsloth.exe\"\n            else:\n                installer_bin = home / \"unsloth_studio\" / \"bin\" / \"unsloth\"\n            tried_lines = \"\\n\".join(f\"  - {p}\" for p in attempted) or \"  (none)\"\n            raise SystemExit(\n                \"[ERROR] Unsloth frontend build not found.\\n\"\n                f\"Tried:\\n{tried_lines}\\n\"\n                \"\\n\"\n                \"Likely cause: another 'unsloth' on PATH is shadowing the \"\n                \"installer's binary and points at a site-packages tree with \"\n                \"no built dist.\\n\"\n                \"\\n\"\n                \"Fix one of:\\n\"\n                f\"  - run the installer's binary directly: {installer_bin} studio\\n\"\n                + (\n                    # An Application Control policy can block the generated\n                    # unsloth.exe while the signed interpreter beside it still\n                    # runs, so name a route that does not go through it.\n                    f\"  - or through the interpreter: {sys.executable} -I -m unsloth_cli studio\\n\"\n                    if sys.platform == \"win32\"\n                    else \"\"\n                )\n                + \"  - pass --frontend <path/to/studio/frontend/dist>\\n\"","sourceCodeStart":2407,"sourceCodeEnd":2443,"githubUrl":"https://github.com/unslothai/unsloth/blob/203007d19051dcd2ae33876786d117c99f6b0368/studio/backend/run.py#L2407-L2443","documentation":"Fatal startup error (SystemExit): the web-UI server could not find a built frontend dist in any of the probed locations. The message lists every path tried, computes the installer's expected binary path from UNSLOTH_STUDIO_HOME/STUDIO_HOME (~/.unsloth/studio), and names the dominant cause: a different 'unsloth' executable earlier on PATH (e.g. a pip-installed one) whose package tree has no built dist. It then offers four remedies.","triggerScenarios":"pip install unsloth shadowing the official installer's binary; UNSLOTH_STUDIO_HOME pointing at a moved/incomplete directory; a partially failed install where the frontend build step never ran; running the module directly from a source checkout without building the frontend.","commonSituations":"Machines with both a pip unsloth and the curl-installed one; PATH reordered by a version manager (conda/pyenv); the dist folder deleted to shrink a container.","solutions":["Run the installer's binary directly: ~/.unsloth/studio/unsloth_studio/bin/unsloth studio (or bin/unsloth.exe on Windows).","Or pass --frontend <path/to/studio/frontend/dist> pointing at a built dist.","Or pass --api-only to run without the web UI.","Otherwise reinstall cleanly: curl -fsSL https://unsloth.ai/install.sh | sh (after removing/un-pip-ing the shadowing package).","Verify which unsloth wins: which -a unsloth."],"exampleFix":"# before\n$ which unsloth\n/home/me/.local/bin/unsloth   # pip version, no dist\n$ unsloth studio\n# [ERROR] Unsloth frontend build not found.\n\n# after\n$ pip uninstall unsloth\n$ ~/.unsloth/studio/unsloth_studio/bin/unsloth studio","handlingStrategy":"validation","validationCode":"# Pre-flight: does the winning binary have a dist?\nBIN=\"$(command -v unsloth)\"; echo \"using $BIN\"\nDISTS=(\"$(dirname \"$BIN\")/../lib\"/python*/site-packages/studio/frontend/dist 2>/dev/null)\nfor d in \"${DISTS[@]}\"; do [ -d \"$d\" ] && echo \"dist ok: $d\" || echo \"MISSING: $d\"; done","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Run `which -a unsloth` after any pip/installer change to detect shadowing","Prefer the installer's binary path directly in scripts/cron","Use --api-only in headless/CI environments that never serve the UI","Set UNSLOTH_STUDIO_HOME consistently or not at all"],"tags":["startup","frontend-build","path-shadowing","installation","cli"],"backgroundTag":null,"analyzedSha":"203007d19051dcd2ae33876786d117c99f6b0368","analyzedAt":"2026-08-15T02:48:39.846Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}