# Endpoint reference ## Table of contents - [`POST /api/services/9router/install`](#post-apiservices9routerinstall) - [`POST /api/services/9router/start`](#post-apiservices9routerstart) - [`POST /api/services/9router/stop`](#post-apiservices9routerstop) - [`POST /api/services/9router/restart`](#post-apiservices9routerrestart) - [`POST /api/services/9router/update`](#post-apiservices9routerupdate) - [`POST /api/services/9router/rotate-key`](#post-apiservices9routerrotate-key) - [`GET /api/services/9router/status`](#get-apiservices9routerstatus) - [`POST /api/services/9router/auto-start`](#post-apiservices9routerauto-start) - [`POST /api/services/9router/auto-restart-adopted`](#post-apiservices9routerauto-restart-adopted) - [`POST /api/services/cliproxy/install`](#post-apiservicescliproxyinstall) - [`POST /api/services/cliproxy/start`](#post-apiservicescliproxystart) - [`POST /api/services/cliproxy/stop`](#post-apiservicescliproxystop) - [`POST /api/services/cliproxy/restart`](#post-apiservicescliproxyrestart) - [`POST /api/services/cliproxy/update`](#post-apiservicescliproxyupdate) - [`GET /api/services/cliproxy/status`](#get-apiservicescliproxystatus) - [`POST /api/services/cliproxy/auto-start`](#post-apiservicescliproxyauto-start) - [`POST /api/services/cliproxy/auto-restart-adopted`](#post-apiservicescliproxyauto-restart-adopted) - [`POST /api/services/mux/install`](#post-apiservicesmuxinstall) - [`POST /api/services/mux/start`](#post-apiservicesmuxstart) - [`POST /api/services/mux/stop`](#post-apiservicesmuxstop) - [`POST /api/services/mux/restart`](#post-apiservicesmuxrestart) - [`POST /api/services/mux/update`](#post-apiservicesmuxupdate) - [`GET /api/services/mux/status`](#get-apiservicesmuxstatus) - [`POST /api/services/mux/auto-start`](#post-apiservicesmuxauto-start) - [`POST /api/services/mux/auto-restart-adopted`](#post-apiservicesmuxauto-restart-adopted) - [`POST /api/services/openwa/install`](#post-apiservicesopenwainstall) - [`POST /api/services/openwa/start`](#post-apiservicesopenwastart) - [`POST /api/services/openwa/stop`](#post-apiservicesopenwastop) - [`POST /api/services/openwa/restart`](#post-apiservicesopenwarestart) - [`POST /api/services/openwa/update`](#post-apiservicesopenwaupdate) - [`GET /api/services/openwa/status`](#get-apiservicesopenwastatus) - [`POST /api/services/openwa/auto-start`](#post-apiservicesopenwaauto-start) - [`POST /api/services/openwa/auto-restart-adopted`](#post-apiservicesopenwaauto-restart-adopted) - [`POST /api/services/bifrost/install`](#post-apiservicesbifrostinstall) - [`POST /api/services/bifrost/start`](#post-apiservicesbifroststart) - [`POST /api/services/bifrost/stop`](#post-apiservicesbifroststop) - [`POST /api/services/bifrost/restart`](#post-apiservicesbifrostrestart) - [`POST /api/services/bifrost/update`](#post-apiservicesbifrostupdate) - [`GET /api/services/bifrost/status`](#get-apiservicesbifroststatus) - [`POST /api/services/bifrost/auto-start`](#post-apiservicesbifrostauto-start) - [`POST /api/services/bifrost/auto-restart-adopted`](#post-apiservicesbifrostauto-restart-adopted) - [`POST /api/services/dario/install`](#post-apiservicesdarioinstall) - [`POST /api/services/dario/start`](#post-apiservicesdariostart) - [`POST /api/services/dario/stop`](#post-apiservicesdariostop) - [`POST /api/services/dario/restart`](#post-apiservicesdariorestart) - [`POST /api/services/dario/update`](#post-apiservicesdarioupdate) - [`GET /api/services/dario/status`](#get-apiservicesdariostatus) - [`POST /api/services/dario/auto-start`](#post-apiservicesdarioauto-start) - [`POST /api/services/dario/auto-restart-adopted`](#post-apiservicesdarioauto-restart-adopted) - [`POST /api/services/dario/admin/login-start`](#post-apiservicesdarioadminlogin-start) - [`POST /api/services/dario/admin/login-complete`](#post-apiservicesdarioadminlogin-complete) - [`GET /api/services/dario/admin/accounts`](#get-apiservicesdarioadminaccounts) - [`DELETE /api/services/dario/admin/accounts`](#delete-apiservicesdarioadminaccounts) - [`GET /api/services/dario/admin/import-from-omniroute`](#get-apiservicesdarioadminimport-from-omniroute) - [`POST /api/services/dario/admin/import-from-omniroute`](#post-apiservicesdarioadminimport-from-omniroute) - [`POST /api/services/llmlingua/install`](#post-apiservicesllmlinguainstall) - [`POST /api/services/llmlingua/start`](#post-apiservicesllmlinguastart) - [`POST /api/services/llmlingua/stop`](#post-apiservicesllmlinguastop) - [`POST /api/services/llmlingua/restart`](#post-apiservicesllmlinguarestart) - [`POST /api/services/llmlingua/update`](#post-apiservicesllmlinguaupdate) - [`GET /api/services/llmlingua/status`](#get-apiservicesllmlinguastatus) - [`POST /api/services/llmlingua/auto-start`](#post-apiservicesllmlinguaauto-start) - [`POST /api/services/llmlingua/auto-restart-adopted`](#post-apiservicesllmlinguaauto-restart-adopted) - [`GET /api/services/{name}/logs`](#get-apiservicesnamelogs) - [`GET /api/services/9router/models`](#get-apiservices9routermodels) - [`POST /api/services/9router/provider-expose`](#post-apiservices9routerprovider-expose) - [`GET /api/services/cliproxy/accounts`](#get-apiservicescliproxyaccounts) - [`POST /api/services/cliproxy/provider-expose`](#post-apiservicescliproxyprovider-expose) ### POST /api/services/9router/install Install 9Router from npm Installs the `9router` npm package under DATA_DIR/services/9router/. Uses execFile (no shell interpolation — hard rule #13). **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/9router/install \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/9router/start Start 9Router Spawns the 9Router process. Idempotent if already running. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/9router/start \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/9router/stop Stop 9Router Gracefully stops 9Router (SIGTERM → 15 s → SIGKILL). Idempotent. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/9router/stop \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/9router/restart Restart 9Router Equivalent to stop() then start() under the operation lock. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/9router/restart \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/9router/update Update 9Router to a newer npm version Stops the service (if running), installs the newer npm version, then restarts. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/9router/update \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/9router/rotate-key Rotate the 9Router API key Generates a new API key, encrypts it at-rest, and restarts the service to apply it. The plaintext key is never returned. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/9router/rotate-key \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### GET /api/services/9router/status Get 9Router status Returns combined live supervisor state and DB metadata. **LOCAL_ONLY** — loopback only. ```bash curl http://localhost:20128/api/services/9router/status \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" ``` ### POST /api/services/9router/auto-start Toggle 9Router auto-start When enabled, 9Router starts automatically on the next OmniRoute boot. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/9router/auto-start \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/9router/auto-restart-adopted Toggle 9Router auto-restart-when-adopted When enabled, an externally-adopted (not OmniRoute-spawned) 9Router process is restarted under OmniRoute's own supervisor on the next health-check cycle instead of being left as adopted-only. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/9router/auto-restart-adopted \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/cliproxy/install Install CLIProxyAPI from npm Installs the CLIProxyAPI package under DATA_DIR/services/cliproxy/. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/cliproxy/install \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/cliproxy/start Start CLIProxyAPI Spawns the CLIProxyAPI process. Idempotent if already running. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/cliproxy/start \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/cliproxy/stop Stop CLIProxyAPI Gracefully stops CLIProxyAPI. Idempotent. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/cliproxy/stop \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/cliproxy/restart Restart CLIProxyAPI stop() then start() under the operation lock. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/cliproxy/restart \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/cliproxy/update Update CLIProxyAPI to a newer npm version Stops, installs newer version, restarts. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/cliproxy/update \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### GET /api/services/cliproxy/status Get CLIProxyAPI status Returns live supervisor state and DB metadata (no apiKeyMasked — CLIProxyAPI does not use an injected API key). **LOCAL_ONLY** — loopback only. ```bash curl http://localhost:20128/api/services/cliproxy/status \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" ``` ### POST /api/services/cliproxy/auto-start Toggle CLIProxyAPI auto-start When enabled, CLIProxyAPI starts automatically on the next OmniRoute boot. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/cliproxy/auto-start \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/cliproxy/auto-restart-adopted Toggle CLIProxyAPI auto-restart-when-adopted When enabled, an externally-adopted (not OmniRoute-spawned) CLIProxyAPI process is restarted under OmniRoute's own supervisor on the next health-check cycle instead of being left as adopted-only. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/cliproxy/auto-restart-adopted \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/mux/install Install Mux from npm Installs the `mux` npm package (coder/mux — local agent-orchestration daemon) under DATA_DIR/services/mux/. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/mux/install \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/mux/start Start Mux Spawns `mux server --host 127.0.0.1 --port `. Idempotent if already running. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/mux/start \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/mux/stop Stop Mux Gracefully stops Mux. Idempotent. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/mux/stop \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/mux/restart Restart Mux stop() then start() under the operation lock. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/mux/restart \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/mux/update Update Mux to a newer npm version Stops, installs newer version, restarts. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/mux/update \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### GET /api/services/mux/status Get Mux status Returns live supervisor state and DB metadata. **LOCAL_ONLY** — loopback only. ```bash curl http://localhost:20128/api/services/mux/status \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" ``` ### POST /api/services/mux/auto-start Toggle Mux auto-start When enabled, Mux starts automatically on the next OmniRoute boot. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/mux/auto-start \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/mux/auto-restart-adopted Toggle Mux auto-restart-when-adopted When enabled, an externally-adopted (not OmniRoute-spawned) Mux process is restarted under OmniRoute's own supervisor on the next health-check cycle instead of being left as adopted-only. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/mux/auto-restart-adopted \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/openwa/install Install open-wa from npm Installs the `@open-wa/wa-automate` npm package (WhatsApp Web automation via headless Chromium/Puppeteer) under DATA_DIR/services/openwa/. Bundles a Puppeteer Chromium download, so this install is much slower than the other embedded services. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/openwa/install \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/openwa/start Start open-wa Spawns `wa-automate --port --host 127.0.0.1 --session-data-path data`. The HTTP API does not start listening until the WhatsApp client handshake resolves, which blocks on a human scanning the pairing QR code (shown in the logs panel) on first pairing — state stays `starting` well past the other services' typical cold-start window. Idempotent if already running. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/openwa/start \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/openwa/stop Stop open-wa Gracefully stops open-wa. Idempotent. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/openwa/stop \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/openwa/restart Restart open-wa stop() then start() under the operation lock. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/openwa/restart \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/openwa/update Update open-wa to a newer npm version Stops, installs newer version, restarts. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/openwa/update \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### GET /api/services/openwa/status Get open-wa status Returns live supervisor state and DB metadata. `health` only reflects whether `/api-docs/` answered — it does not indicate whether a WhatsApp session is paired. **LOCAL_ONLY** — loopback only. ```bash curl http://localhost:20128/api/services/openwa/status \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" ``` ### POST /api/services/openwa/auto-start Toggle open-wa auto-start When enabled, open-wa starts automatically on the next OmniRoute boot. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/openwa/auto-start \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/openwa/auto-restart-adopted Toggle open-wa auto-restart-when-adopted When enabled, an externally-adopted (not OmniRoute-spawned) open-wa process is restarted under OmniRoute's own supervisor on the next health-check cycle instead of being left as adopted-only. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/openwa/auto-restart-adopted \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/bifrost/install Install Bifrost Installs the `@maximhq/bifrost` npm package under DATA_DIR/services/bifrost/. The package downloads the Go binary on first run. Accepts an optional `version` field (semver or `latest`). **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/bifrost/install \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/bifrost/start Start Bifrost Starts the supervised Bifrost process. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/bifrost/start \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/bifrost/stop Stop Bifrost Stops the supervised Bifrost process. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/bifrost/stop \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/bifrost/restart Restart Bifrost Restarts the supervised Bifrost process. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/bifrost/restart \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/bifrost/update Update Bifrost Updates Bifrost to the latest npm version. Stops the running process, installs the new version, and restarts if it was previously running. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/bifrost/update \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### GET /api/services/bifrost/status Get Bifrost status Returns live and DB status for the supervised Bifrost service. **LOCAL_ONLY** — loopback only. ```bash curl http://localhost:20128/api/services/bifrost/status \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" ``` ### POST /api/services/bifrost/auto-start Toggle Bifrost auto-start When enabled, Bifrost starts automatically on the next OmniRoute boot. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/bifrost/auto-start \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/bifrost/auto-restart-adopted Toggle Bifrost auto-restart-when-adopted When enabled, an externally-adopted (not OmniRoute-spawned) Bifrost process is restarted under OmniRoute's own supervisor on the next health-check cycle instead of being left as adopted-only. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/bifrost/auto-restart-adopted \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/dario/install Install Dario from npm Installs the `@askalf/dario` npm package (Claude-account-pool proxy) under DATA_DIR/services/dario/. Uses execFile (no shell interpolation — hard rule #13). **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/dario/install \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/dario/start Start Dario Spawns the Dario process. Idempotent if already running. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/dario/start \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/dario/stop Stop Dario Gracefully stops Dario. Idempotent — returns a stopped status even if no supervisor is currently tracking the process. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/dario/stop \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/dario/restart Restart Dario Equivalent to stop() then start() under the operation lock. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/dario/restart \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/dario/update Update Dario to a newer npm version Stops the service (if running), installs the newer npm version, then restarts it if it was running before the update. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/dario/update \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### GET /api/services/dario/status Get Dario status Returns combined live supervisor state and DB metadata, including the auto-start / auto-restart-adopted flags and whether an update is available. **LOCAL_ONLY** — loopback only. ```bash curl http://localhost:20128/api/services/dario/status \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" ``` ### POST /api/services/dario/auto-start Toggle Dario auto-start When enabled, Dario starts automatically on the next OmniRoute boot. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/dario/auto-start \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/dario/auto-restart-adopted Toggle Dario auto-restart-when-adopted When enabled, an externally-adopted (not OmniRoute-spawned) Dario process is restarted under OmniRoute's own supervisor on the next health-check cycle instead of being left as adopted-only. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/dario/auto-restart-adopted \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/dario/admin/login-start Start a Dario account-pool login (device-code style) Forwards to the running Dario instance's `POST /admin/login/start` using the stored admin token. The operator opens the returned `authorize_url`, approves in their own Claude account, then posts the displayed code to `/admin/login-complete`. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/dario/admin/login-start \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/dario/admin/login-complete Complete a Dario account-pool login Forwards to the running Dario instance's `POST /admin/login/complete`. On success the account becomes routable immediately (Dario hot-reloads its pool). **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/dario/admin/login-complete \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### GET /api/services/dario/admin/accounts List Dario account-pool accounts Forwards to the running Dario instance's `GET /admin/accounts`. **LOCAL_ONLY** — loopback only. ```bash curl http://localhost:20128/api/services/dario/admin/accounts \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" ``` ### DELETE /api/services/dario/admin/accounts Remove a Dario account-pool account Forwards to the running Dario instance's `DELETE /admin/accounts/`. The alias is taken from a `?alias=` query param or a `{ alias }` JSON body. **LOCAL_ONLY** — loopback only. ```bash curl -X DELETE http://localhost:20128/api/services/dario/admin/accounts \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" ``` ### GET /api/services/dario/admin/import-from-omniroute List OmniRoute claude connections eligible for Dario import Returns eligible OmniRoute `claude` OAuth provider connections (metadata only — id/name/email/org tier, never tokens) so the UI can offer a picker when more than one exists. **LOCAL_ONLY** — loopback only. ```bash curl http://localhost:20128/api/services/dario/admin/import-from-omniroute \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" ``` ### POST /api/services/dario/admin/import-from-omniroute Import an OmniRoute claude connection's OAuth tokens into Dario Writes the source connection's access/refresh token pair directly into Dario's own account-file store (`~/.dario/accounts/.json`), reusing the shared Claude Code OAuth client_id, then restarts the Dario supervisor so it picks up the new account. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/dario/admin/import-from-omniroute \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/llmlingua/install Install LLMLingua Installs `@atjsh/llmlingua-2` (real LLMLingua-2 ONNX prompt-compression package) plus its `@huggingface/transformers`/`js-tiktoken` peers under DATA_DIR/services/llmlingua/, and writes the sidecar server script. Accepts an optional `version` field (semver or `latest`). **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/llmlingua/install \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/llmlingua/start Start LLMLingua Starts the supervised LLMLingua sidecar process. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/llmlingua/start \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/llmlingua/stop Stop LLMLingua Stops the supervised LLMLingua sidecar process. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/llmlingua/stop \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/llmlingua/restart Restart LLMLingua Restarts the supervised LLMLingua sidecar process. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/llmlingua/restart \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/llmlingua/update Update LLMLingua Updates LLMLingua to the latest npm version. Stops the running process, installs the new version, and restarts if it was previously running. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/llmlingua/update \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### GET /api/services/llmlingua/status Get LLMLingua status Returns live and DB status for the supervised LLMLingua service. **LOCAL_ONLY** — loopback only. ```bash curl http://localhost:20128/api/services/llmlingua/status \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" ``` ### POST /api/services/llmlingua/auto-start Toggle LLMLingua auto-start When enabled, LLMLingua starts automatically on the next OmniRoute boot. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/llmlingua/auto-start \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### POST /api/services/llmlingua/auto-restart-adopted Toggle LLMLingua auto-restart-when-adopted When enabled, an externally-adopted (not OmniRoute-spawned) LLMLingua process is restarted under OmniRoute's own supervisor on the next health-check cycle instead of being left as adopted-only. **LOCAL_ONLY** — loopback only. ```bash curl -X POST http://localhost:20128/api/services/llmlingua/auto-restart-adopted \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### GET /api/services/{name}/logs Stream service logs via SSE Returns a Server-Sent Events stream from the service's in-memory ring buffer (5 MB, circular). Sends a `snapshot` event with historical lines first, then live `log` events, plus a `heartbeat` every 15 s. **LOCAL_ONLY** — loopback only. ```bash curl http://localhost:20128/api/services/{name}/logs \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" ``` ### GET /api/services/9router/models GET services › 9router › models ```bash curl http://localhost:20128/api/services/9router/models \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" ``` ### POST /api/services/9router/provider-expose POST services › 9router › provider expose ```bash curl -X POST http://localhost:20128/api/services/9router/provider-expose \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ``` ### GET /api/services/cliproxy/accounts GET services › cliproxy › accounts ```bash curl http://localhost:20128/api/services/cliproxy/accounts \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" ``` ### POST /api/services/cliproxy/provider-expose POST services › cliproxy › provider expose ```bash curl -X POST http://localhost:20128/api/services/cliproxy/provider-expose \ -H "Authorization: Bearer $OMNIROUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{}' ```