chore: add Windows helpers to run OmniRoute and Claude Code from a source checkout (#13312)

* chore: add Windows helpers to run OmniRoute and Claude Code from a source checkout

Adds contrib/windows/ with two double-clickable scripts for Windows users who
cloned the repo instead of installing the npm package:

- start-omniroute.bat  -> npm run dev (resolves the repo root from its own path)
- launch-claude.bat    -> node bin/omniroute.mjs launch, forwarding extra args

The README documents a fresh-clone gotcha on Windows with npm >= 11: the
optional better-sqlite3 dependency is silently skipped, the server falls
back to node:sqlite and logs "Module not found: Can't resolve
'better-sqlite3'". Since better-sqlite3@13 ships win32-x64 prebuilds inside
the package, extracting the npm pack into node_modules fixes it without a
compiler. Verified on Windows 11, Node 24.14.0, npm 11.6.1.

* chore(contrib): start Claude Code in the project folder, not the OmniRoute checkout

launch-claude.bat used to cd into the repo root before exec'ing
`omniroute launch`, so Claude Code always started inside the OmniRoute
checkout and loaded this repo's CLAUDE.md/AGENTS.md (~60k chars) into the
user's own coding session. Take the project folder as the first argument
(or prompt for it on double-click) and resolve bin/omniroute.mjs from the
script's own path instead. Remaining args are still forwarded to
`omniroute launch`.
This commit is contained in:
easypathuni
2026-09-18 18:24:11 +03:00
committed by GitHub
parent fbe195d69e
commit 4dc73fb36a
3 changed files with 89 additions and 0 deletions

45
contrib/windows/README.md Normal file
View File

@@ -0,0 +1,45 @@
# Windows helpers — run OmniRoute from a source checkout
Two double-clickable `.bat` files for Windows users who cloned the repo instead of
installing the npm package. Both resolve the repo root from their own location, so they
work from any checkout path.
| File | What it does |
| --------------------- | ---------------------------------------------------------------------------------- |
| `start-omniroute.bat` | `npm run dev` — dev server + dashboard on `http://localhost:20128` |
| `launch-claude.bat` | `node bin\omniroute.mjs launch` — opens Claude Code pointed at the local OmniRoute |
Usage:
1. `npm install` once (see the note below if you are on npm ≥ 11).
2. Double-click `start-omniroute.bat` and wait for `dev server listening on http://0.0.0.0:20128`.
3. Open the dashboard, connect a provider, copy an API key from **Endpoints**.
4. Double-click `launch-claude.bat`. Extra arguments are forwarded, e.g.
`launch-claude.bat --profile glm52` after `node bin\omniroute.mjs setup-claude`.
## npm ≥ 11 skips `better-sqlite3` on Windows
`better-sqlite3` is an `optionalDependency`. npm 11 blocks install scripts of optional
dependencies by default, so on a fresh clone `node_modules/better-sqlite3/` may simply not
exist. The server still boots (it falls back to `node:sqlite`, which Node marks
experimental), but `npm run dev` logs `Module not found: Can't resolve 'better-sqlite3'`
and `[DB] Driver: node:sqlite`.
Since `better-sqlite3@13` ships prebuilt binaries inside the package
(`prebuilds/win32-x64.node`), no compiler is needed — just put the package in place:
```powershell
cd node_modules
npm pack better-sqlite3@13.0.3
tar -xzf better-sqlite3-13.0.3.tgz
Remove-Item -Recurse -Force better-sqlite3 -ErrorAction SilentlyContinue
Rename-Item package better-sqlite3
Remove-Item better-sqlite3-13.0.3.tgz
```
Restart the server; the log should now read `[DB] Driver: better-sqlite3`.
> If you do need to compile a native addon and `python` resolves to the Microsoft Store
> build, `node-gyp` fails with `common.gypi not found` even after downloading headers — the
> Store Python sandboxes `%LOCALAPPDATA%`. Pass `--devdir` pointing outside `AppData\Local`
> (or install python.org Python).

View File

@@ -0,0 +1,33 @@
@echo off
rem OmniRoute — launch Claude Code pointed at the local OmniRoute server (Windows).
rem Wraps `omniroute launch` from the source checkout so no global install is needed.
rem
rem Usage: launch-claude.bat [project-folder] [omniroute launch args...]
rem - From a terminal inside your project: launch-claude.bat (opens here)
rem - Double-click: prompts for the project folder (Enter = current folder)
rem Claude Code is started in the PROJECT folder, never in the OmniRoute checkout —
rem otherwise it loads this repo's CLAUDE.md/AGENTS.md (~60k chars) into every session.
setlocal enabledelayedexpansion
title Claude Code via OmniRoute
set "OMNIROUTE_ROOT=%~dp0..\.."
if exist "%~1\" (
cd /d "%~1"
shift
) else (
set "PROJ="
set /p "PROJ=Project folder (Enter = current: %CD%): "
if not "!PROJ!"=="" cd /d "!PROJ!"
)
set "ARGS="
:collect
if "%~1"=="" goto run
set "ARGS=!ARGS! %1"
shift
goto collect
:run
node "%OMNIROUTE_ROOT%\bin\omniroute.mjs" launch!ARGS!
endlocal
pause

View File

@@ -0,0 +1,11 @@
@echo off
rem OmniRoute — start the dev server from a source checkout (Windows).
rem Double-click, or run from any directory. Resolves the repo root from this file's location.
setlocal
title OmniRoute Server
cd /d "%~dp0..\.."
echo Starting OmniRoute on http://localhost:20128 ...
echo (Leave this window open. Close it to stop the server.)
call npm run dev
endlocal
pause