Spaces:
Runtime error
Runtime error
File size: 2,372 Bytes
077865a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | # 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.
|