Install, start, stop, restart, and update embedded services (9Router, CLIProxyAPI). Monitor service status, retrieve logs, and configure auto-start for local-only service endpoints.
52
57%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./skills/omni-version-manager/SKILL.mdInstall, start, stop, restart, and update embedded services (9Router, CLIProxyAPI). Monitor service status, retrieve logs, and configure auto-start for local-only service endpoints.
All requests require a valid Bearer token or session cookie. Obtain a token via POST /api/auth/login or configure REQUIRE_API_KEY=false for local development.
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.
curl -X POST https://localhost:20128/api/services/9router/install \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
-H "Content-Type: application/json" \
-d '{}'Start 9Router
Spawns the 9Router process. Idempotent if already running. LOCAL_ONLY — loopback only.
curl -X POST https://localhost:20128/api/services/9router/start \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
-H "Content-Type: application/json" \
-d '{}'Stop 9Router
Gracefully stops 9Router (SIGTERM → 15 s → SIGKILL). Idempotent. LOCAL_ONLY — loopback only.
curl -X POST https://localhost:20128/api/services/9router/stop \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
-H "Content-Type: application/json" \
-d '{}'Restart 9Router
Equivalent to stop() then start() under the operation lock. LOCAL_ONLY — loopback only.
curl -X POST https://localhost:20128/api/services/9router/restart \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
-H "Content-Type: application/json" \
-d '{}'Update 9Router to a newer npm version
Stops the service (if running), installs the newer npm version, then restarts. LOCAL_ONLY — loopback only.
curl -X POST https://localhost:20128/api/services/9router/update \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
-H "Content-Type: application/json" \
-d '{}'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.
curl -X POST https://localhost:20128/api/services/9router/rotate-key \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
-H "Content-Type: application/json" \
-d '{}'Get 9Router status
Returns combined live supervisor state and DB metadata. LOCAL_ONLY — loopback only.
curl https://localhost:20128/api/services/9router/status \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"Toggle 9Router auto-start
When enabled, 9Router starts automatically on the next OmniRoute boot. LOCAL_ONLY — loopback only.
curl -X POST https://localhost:20128/api/services/9router/auto-start \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
-H "Content-Type: application/json" \
-d '{}'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.
curl -X POST https://localhost:20128/api/services/9router/auto-restart-adopted \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
-H "Content-Type: application/json" \
-d '{}'Install CLIProxyAPI from npm
Installs the CLIProxyAPI package under DATA_DIR/services/cliproxy/. LOCAL_ONLY — loopback only.
curl -X POST https://localhost:20128/api/services/cliproxy/install \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
-H "Content-Type: application/json" \
-d '{}'Start CLIProxyAPI
Spawns the CLIProxyAPI process. Idempotent if already running. LOCAL_ONLY — loopback only.
curl -X POST https://localhost:20128/api/services/cliproxy/start \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
-H "Content-Type: application/json" \
-d '{}'Stop CLIProxyAPI
Gracefully stops CLIProxyAPI. Idempotent. LOCAL_ONLY — loopback only.
curl -X POST https://localhost:20128/api/services/cliproxy/stop \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
-H "Content-Type: application/json" \
-d '{}'Restart CLIProxyAPI
stop() then start() under the operation lock. LOCAL_ONLY — loopback only.
curl -X POST https://localhost:20128/api/services/cliproxy/restart \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
-H "Content-Type: application/json" \
-d '{}'Update CLIProxyAPI to a newer npm version
Stops, installs newer version, restarts. LOCAL_ONLY — loopback only.
curl -X POST https://localhost:20128/api/services/cliproxy/update \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
-H "Content-Type: application/json" \
-d '{}'Get CLIProxyAPI status
Returns live supervisor state and DB metadata (no apiKeyMasked — CLIProxyAPI does not use an injected API key). LOCAL_ONLY — loopback only.
curl https://localhost:20128/api/services/cliproxy/status \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"Toggle CLIProxyAPI auto-start
When enabled, CLIProxyAPI starts automatically on the next OmniRoute boot. LOCAL_ONLY — loopback only.
curl -X POST https://localhost:20128/api/services/cliproxy/auto-start \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
-H "Content-Type: application/json" \
-d '{}'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.
curl -X POST https://localhost:20128/api/services/cliproxy/auto-restart-adopted \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
-H "Content-Type: application/json" \
-d '{}'Install Mux from npm
Installs the mux npm package (coder/mux — local agent-orchestration daemon) under DATA_DIR/services/mux/. LOCAL_ONLY — loopback only.
curl -X POST https://localhost:20128/api/services/mux/install \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
-H "Content-Type: application/json" \
-d '{}'Start Mux
Spawns mux server --host 127.0.0.1 --port <port>. Idempotent if already running. LOCAL_ONLY — loopback only.
curl -X POST https://localhost:20128/api/services/mux/start \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
-H "Content-Type: application/json" \
-d '{}'Stop Mux
Gracefully stops Mux. Idempotent. LOCAL_ONLY — loopback only.
curl -X POST https://localhost:20128/api/services/mux/stop \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
-H "Content-Type: application/json" \
-d '{}'Restart Mux
stop() then start() under the operation lock. LOCAL_ONLY — loopback only.
curl -X POST https://localhost:20128/api/services/mux/restart \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
-H "Content-Type: application/json" \
-d '{}'Update Mux to a newer npm version
Stops, installs newer version, restarts. LOCAL_ONLY — loopback only.
curl -X POST https://localhost:20128/api/services/mux/update \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
-H "Content-Type: application/json" \
-d '{}'Get Mux status
Returns live supervisor state and DB metadata. LOCAL_ONLY — loopback only.
curl https://localhost:20128/api/services/mux/status \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"Toggle Mux auto-start
When enabled, Mux starts automatically on the next OmniRoute boot. LOCAL_ONLY — loopback only.
curl -X POST https://localhost:20128/api/services/mux/auto-start \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
-H "Content-Type: application/json" \
-d '{}'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.
curl -X POST https://localhost:20128/api/services/mux/auto-restart-adopted \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
-H "Content-Type: application/json" \
-d '{}'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.
curl -X POST https://localhost:20128/api/services/bifrost/install \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
-H "Content-Type: application/json" \
-d '{}'Start Bifrost
Starts the supervised Bifrost process. LOCAL_ONLY — loopback only.
curl -X POST https://localhost:20128/api/services/bifrost/start \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
-H "Content-Type: application/json" \
-d '{}'Stop Bifrost
Stops the supervised Bifrost process. LOCAL_ONLY — loopback only.
curl -X POST https://localhost:20128/api/services/bifrost/stop \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
-H "Content-Type: application/json" \
-d '{}'Restart Bifrost
Restarts the supervised Bifrost process. LOCAL_ONLY — loopback only.
curl -X POST https://localhost:20128/api/services/bifrost/restart \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
-H "Content-Type: application/json" \
-d '{}'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.
curl -X POST https://localhost:20128/api/services/bifrost/update \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
-H "Content-Type: application/json" \
-d '{}'Get Bifrost status
Returns live and DB status for the supervised Bifrost service. LOCAL_ONLY — loopback only.
curl https://localhost:20128/api/services/bifrost/status \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"Toggle Bifrost auto-start
When enabled, Bifrost starts automatically on the next OmniRoute boot. LOCAL_ONLY — loopback only.
curl -X POST https://localhost:20128/api/services/bifrost/auto-start \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
-H "Content-Type: application/json" \
-d '{}'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.
curl -X POST https://localhost:20128/api/services/bifrost/auto-restart-adopted \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
-H "Content-Type: application/json" \
-d '{}'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.
curl -X POST https://localhost:20128/api/services/dario/install \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
-H "Content-Type: application/json" \
-d '{}'Start Dario
Spawns the Dario process. Idempotent if already running. LOCAL_ONLY — loopback only.
curl -X POST https://localhost:20128/api/services/dario/start \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
-H "Content-Type: application/json" \
-d '{}'Stop Dario
Gracefully stops Dario. Idempotent — returns a stopped status even if no supervisor is currently tracking the process. LOCAL_ONLY — loopback only.
curl -X POST https://localhost:20128/api/services/dario/stop \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
-H "Content-Type: application/json" \
-d '{}'Restart Dario
Equivalent to stop() then start() under the operation lock. LOCAL_ONLY — loopback only.
curl -X POST https://localhost:20128/api/services/dario/restart \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
-H "Content-Type: application/json" \
-d '{}'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.
curl -X POST https://localhost:20128/api/services/dario/update \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
-H "Content-Type: application/json" \
-d '{}'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.
curl https://localhost:20128/api/services/dario/status \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"Toggle Dario auto-start
When enabled, Dario starts automatically on the next OmniRoute boot. LOCAL_ONLY — loopback only.
curl -X POST https://localhost:20128/api/services/dario/auto-start \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
-H "Content-Type: application/json" \
-d '{}'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.
curl -X POST https://localhost:20128/api/services/dario/auto-restart-adopted \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
-H "Content-Type: application/json" \
-d '{}'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.
curl -X POST https://localhost:20128/api/services/dario/admin/login-start \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
-H "Content-Type: application/json" \
-d '{}'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.
curl -X POST https://localhost:20128/api/services/dario/admin/login-complete \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
-H "Content-Type: application/json" \
-d '{}'List Dario account-pool accounts
Forwards to the running Dario instance's GET /admin/accounts. LOCAL_ONLY — loopback only.
curl https://localhost:20128/api/services/dario/admin/accounts \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"Remove a Dario account-pool account
Forwards to the running Dario instance's DELETE /admin/accounts/<alias>. The alias is taken from a ?alias= query param or a { alias } JSON body. LOCAL_ONLY — loopback only.
curl -X DELETE https://localhost:20128/api/services/dario/admin/accounts \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"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.
curl https://localhost:20128/api/services/dario/admin/import-from-omniroute \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"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.
curl -X POST https://localhost:20128/api/services/dario/admin/import-from-omniroute \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"
-H "Content-Type: application/json" \
-d '{}'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.
curl https://localhost:20128/api/services/{name}/logs \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"See the full OpenAPI specification at GET /api/openapi/spec or docs/openapi.yaml for detailed request/response schemas.
ea0cdc5
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.