<!-- generated by src/lib/agentSkills/generator.ts; manual edits will be overwritten -->
Overview
Install, start, stop, restart, and update embedded services (9Router, CLIProxyAPI). Monitor service status, retrieve logs, and configure auto-start for local-only service endpoints.
Authentication
All requests require a valid Bearer token or session cookie. Obtain a token via
or configure
for local development.
Endpoints
POST /api/services/9router/install
Install 9Router from npm
Installs the
npm package under DATA_DIR/services/9router/. Uses execFile (no shell interpolation — hard rule #13).
LOCAL_ONLY — loopback only.
bash
curl -X POST https://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 https://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 https://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 https://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 https://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 https://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 https://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 https://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 https://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 https://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 https://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 https://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 https://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 https://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 https://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 https://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 https://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
npm package (coder/mux — local agent-orchestration daemon) under DATA_DIR/services/mux/.
LOCAL_ONLY — loopback only.
bash
curl -X POST https://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 <port>
. Idempotent if already running.
LOCAL_ONLY — loopback only.
bash
curl -X POST https://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 https://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 https://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 https://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 https://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 https://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 https://localhost:20128/api/services/mux/auto-restart-adopted \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
-H "Content-Type: application/json" \
-d '{}'
POST /api/services/bifrost/install
Install Bifrost
Installs the
npm package under DATA_DIR/services/bifrost/. The package downloads the Go binary on first run. Accepts an optional
field (semver or
).
LOCAL_ONLY — loopback only.
bash
curl -X POST https://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 https://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 https://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 https://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 https://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 https://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 https://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 https://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
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 https://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 https://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 https://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 https://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 https://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 https://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 https://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 https://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
using the stored admin token. The operator opens the returned
, approves in their own Claude account, then posts the displayed code to
.
LOCAL_ONLY — loopback only.
bash
curl -X POST https://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 https://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
.
LOCAL_ONLY — loopback only.
bash
curl https://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/<alias>
. The alias is taken from a
query param or a
JSON body.
LOCAL_ONLY — loopback only.
bash
curl -X DELETE https://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
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 https://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/<alias>.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 https://localhost:20128/api/services/dario/admin/import-from-omniroute \
-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
event with historical lines first, then live
events, plus a
every 15 s.
LOCAL_ONLY — loopback only.
bash
curl https://localhost:20128/api/services/{name}/logs \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
Payloads
See the full OpenAPI specification at
or
for detailed request/response schemas.