Skip to content
Back to skills

Omni Version Manager

ASecurity

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

  • 34 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added September 8, 2026
ai-agentsgoshellbashapi

Works with

  • cli
  • api

Security analysis

A96/100
  • mediumUses curl or wget to download content

Pro shows the line behind each finding and how to fix it

Scanned September 8, 2026

npx -y skills add jaccen/AIRoute --skill omni-version-manager --agent claude-code

Installs 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 with every re-scan.

Security grade badge for Omni Version Manager
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/jaccen-omni-version-manager/badge)](https://www.skillsdirectory.com/skills/jaccen-omni-version-manager)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

View all in ai-agents →

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.