Spaces:
Runtime error
Runtime error
| # FreeLLMAPI Desktop | |
| Lean Electron menu-bar app for [freellmapi](https://github.com/tashfeenahmed/freellmapi): | |
| runs the whole router locally on `127.0.0.1:31415`, with a dark-glass tray | |
| popover (live 24h request chart, quick stats, copy URL/key) and the full | |
| dashboard in a native-feeling window. | |
| The app lives in the main repo (`desktop/`) and builds against the server and | |
| client sources in the same checkout β no extra setup, no published binaries: | |
| **you build it yourself** (a few minutes, commands below). | |
| ## Prerequisites | |
| - Node.js 20+ | |
| - A native build toolchain for `better-sqlite3`: | |
| - **macOS** β Xcode Command Line Tools (`xcode-select --install`) | |
| - **Windows** β Visual Studio Build Tools ("Desktop development with C++") | |
| ## Build it yourself | |
| From the **repo root** (one-time client build + package): | |
| ```bash | |
| npm install | |
| npm run desktop:dist # macOS β desktop/dist-electron/FreeLLMAPI-β¦-arm64.dmg | |
| npm run desktop:dist:win # Windows β desktop/dist-electron/FreeLLMAPI-β¦-x64 installer | |
| ``` | |
| > Locally built apps don't carry the macOS quarantine attribute or Windows | |
| > Mark-of-the-Web, so they launch without Gatekeeper/SmartScreen warnings β | |
| > no code signing needed. | |
| > | |
| > The Windows build is config-complete but largely untested β issues and PRs | |
| > welcome. | |
| ## Develop | |
| ```bash | |
| cd desktop | |
| npm install | |
| npm run rebuild:native # better-sqlite3 against Electron's ABI (dev loop only) | |
| npm run dev # bundle + launch | |
| ``` | |
| The dev run serves the repo's own `client/dist` β build it first | |
| (`npm run build -w client` from the root) or use `npm run desktop:dev` from | |
| the root, which does both. `FREEAPI_REPO=/path/to/checkout` overrides the | |
| client/server source location if you ever need a different one. | |
| UI iteration helpers (dev only): `FREEAPI_SHOT=1 npx electron .` captures the | |
| popover + dashboard to /tmp and quits; `FREEAPI_SHOT=hold` pins the popover | |
| open for real-screen captures. | |
| ## Notes | |
| - DB + config live in `~/Library/Application Support/FreeLLMAPI/` (macOS) / | |
| `%APPDATA%/FreeLLMAPI/` (Windows). | |
| - The server binds loopback only; default port 31415, scan-up on conflict, | |
| resolved port persisted. | |
| - Do not run plain `npm rebuild` here β it rebuilds better-sqlite3 for the | |
| system Node ABI and breaks the Electron dev loop (`npm run rebuild:native` | |
| fixes it). Packaging rebuilds natives itself. | |