diegosouzapw/omniroute

omni-version-manager

Install, start, stop, restart, and update embedded services (9Router, CLIProxyAPI). Monitor service status, retrieve logs, and configure auto-start for local-only service endpoints.

Trending #5327 First seen Jun 10, 2026

Installation

$ npx skills add diegosouzapw/omniroute --skill omni-version-manager

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from diegosouzapw/omniroute · top by installs.

npx skills add diegosouzapw/omniroute

Browse all from diegosouzapw/omniroute

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 63.0K
License LICENSE
Default branch release/v3.8.51
Open issues 279
Status Active

Skill metadata

Parsed from SKILL.md frontmatter.

Declared agents claude-code

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 18,968 B
  • docs SUMMARY.md 209 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 378 installs

SKILL.md

<!-- 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 POST /api/auth/login or configure REQUIREAPIKEY=false for local development.

Endpoints

POST /api/services/9router/install

Install 9Router from npm

Installs the 9router npm package under DATADIR/services/9router/. Uses execFile (no shell interpolation — hard rule #13). LOCALONLY — loopback only.

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.

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.

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.

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.

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.

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.

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.

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.

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 DATADIR/services/cliproxy/. LOCALONLY — loopback only.

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.

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.

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.

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.

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.

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.

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.

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 mux npm package (coder/mux — local agent-orchestration daemon) under DATADIR/services/mux/. LOCALONLY — loopback only.

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.

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.

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.

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.

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.

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.

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.

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 @maximhq/bifrost npm package under DATADIR/services/bifrost/. The package downloads the Go binary on first run. Accepts an optional version field (semver or latest). LOCALONLY — loopback only.

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.

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.

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.

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.

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.

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.

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.

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 @askalf/dario npm package (Claude-account-pool proxy) under DATADIR/services/dario/. Uses execFile (no shell interpolation — hard rule #13). LOCALONLY — loopback only.

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.

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.

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.

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.

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.

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.

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.

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 POST /admin/login/start using the stored admin token. The operator opens the returned authorizeurl, approves in their own Claude account, then posts the displayed code to /admin/login-complete. LOCALONLY — 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 '{}'

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.

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 GET /admin/accounts. LOCAL_ONLY — loopback only.

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 ?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"

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.

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 clientid, then restarts the Dario supervisor so it picks up the new account. LOCALONLY — 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 '{}'

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.

curl https://localhost:20128/api/services/{name}/logs \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN"

Payloads

See the full OpenAPI specification at GET /api/openapi/spec or docs/openapi.yaml for detailed request/response schemas.