Install, start, stop, restart, and update embedded services (9Router, CLIProxyAPI). Monitor service status, retrieve logs, and configure auto-start for local-only service endpoints.
Scanned 9/8/2026
Install to Claude Code
npx -y skills add jaccen/AIRoute --skill omni-version-manager --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Omni Version Manager?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/jaccen-omni-version-manager)More formats (shields.io, HTML) on the badges page.
---
name: omni-version-manager
description: Install, start, stop, restart, and update embedded services (9Router, CLIProxyAPI). Monitor service status, retrieve logs, and configure auto-start for local-only service endpoints.
---
<!-- 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 `REQUIRE_API_KEY=false` for local development.
## Endpoints
### 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 https://localhost:20128/api/services/9router/install \
-H "Authorization: Bearer $AIRoute_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 $AIRoute_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 $AIRoute_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 $AIRoute_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 $AIRoute_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 $AIRoute_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 $AIRoute_TOKEN"
```
### POST /api/services/9router/auto-start
Toggle 9Router auto-start
When enabled, 9Router starts automatically on the next AIRoute boot. **LOCAL_ONLY** — loopback only.
```bash
curl -X POST https://localhost:20128/api/services/9router/auto-start \
-H "Authorization: Bearer $AIRoute_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 $AIRoute_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 $AIRoute_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 $AIRoute_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 $AIRoute_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 $AIRoute_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 $AIRoute_TOKEN"
```
### POST /api/services/cliproxy/auto-start
Toggle CLIProxyAPI auto-start
When enabled, CLIProxyAPI starts automatically on the next AIRoute boot. **LOCAL_ONLY** — loopback only.
```bash
curl -X POST https://localhost:20128/api/services/cliproxy/auto-start \
-H "Authorization: Bearer $AIRoute_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 https://localhost:20128/api/services/mux/install \
-H "Authorization: Bearer $AIRoute_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 $AIRoute_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 $AIRoute_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 $AIRoute_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 $AIRoute_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 $AIRoute_TOKEN"
```
### POST /api/services/mux/auto-start
Toggle Mux auto-start
When enabled, Mux starts automatically on the next AIRoute boot. **LOCAL_ONLY** — loopback only.
```bash
curl -X POST https://localhost:20128/api/services/mux/auto-start \
-H "Authorization: Bearer $AIRoute_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 https://localhost:20128/api/services/bifrost/install \
-H "Authorization: Bearer $AIRoute_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 $AIRoute_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 $AIRoute_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 $AIRoute_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 $AIRoute_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 $AIRoute_TOKEN"
```
### POST /api/services/bifrost/auto-start
Toggle Bifrost auto-start
When enabled, Bifrost starts automatically on the next AIRoute boot. **LOCAL_ONLY** — loopback only.
```bash
curl -X POST https://localhost:20128/api/services/bifrost/auto-start \
-H "Authorization: Bearer $AIRoute_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 https://localhost:20128/api/services/{name}/logs \
-H "Authorization: Bearer $AIRoute_TOKEN"
```
## Payloads
See the full OpenAPI specification at `GET /api/openapi/spec` or `docs/openapi.yaml` for detailed request/response schemas.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!