OM

omni-version-manager

Manages lifecycle and status of embedded local system services.

Install

mkdir -p .claude/skills/omni-version-manager && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/11135" && unzip -o skill.zip -d .claude/skills/omni-version-manager && rm skill.zip

Installs to .claude/skills/omni-version-manager

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Install, start, stop, restart, and update embedded services (9Router, CLIProxyAPI). Monitor service status, retrieve logs, and configure auto-start for local-only service endpoints.
181 charsno explicit “when” trigger
Intermediate

Key capabilities

  • Install embedded services
  • Start and stop service processes
  • Monitor service status
  • Stream service logs
  • Rotate API keys

How it works

It provides a REST API interface to manage the lifecycle of embedded services like 9Router and CLIProxyAPI via local loopback requests.

Inputs & outputs

You give it
Service name and command
You get back
Service status or log stream

When to use omni-version-manager

  • Managing local service processes
  • Checking service status
  • Updating local CLI tools

About this skill

<!-- 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.

curl -X POST https://localhost:20128/api/services/9router/install \
  -H "Authorization: Bearer $NEXTROUTE_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 $NEXTROUTE_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 $NEXTROUTE_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 $NEXTROUTE_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 $NEXTROUTE_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 $NEXTROUTE_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 $NEXTROUTE_TOKEN"

POST /api/services/9router/auto-start

Toggle 9Router auto-start

When enabled, 9Router starts automatically on the next NextRoute boot. LOCAL_ONLY — loopback only.

curl -X POST https://localhost:20128/api/services/9router/auto-start \
  -H "Authorization: Bearer $NEXTROUTE_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.

curl -X POST https://localhost:20128/api/services/cliproxy/install \
  -H "Authorization: Bearer $NEXTROUTE_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 $NEXTROUTE_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 $NEXTROUTE_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 $NEXTROUTE_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 $NEXTROUTE_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 $NEXTROUTE_TOKEN"

POST /api/services/cliproxy/auto-start

Toggle CLIProxyAPI auto-start

When enabled, CLIProxyAPI starts automatically on the next NextRoute boot. LOCAL_ONLY — loopback only.

curl -X POST https://localhost:20128/api/services/cliproxy/auto-start \
  -H "Authorization: Bearer $NEXTROUTE_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 $NEXTROUTE_TOKEN"

Payloads

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

When not to use it

  • Managing services outside the local environment
  • Non-loopback service endpoints

Prerequisites

Bearer token or session cookie

Limitations

  • LOCAL_ONLY , loopback only
  • Requires valid authentication

How it compares

It centralizes service management through a unified API rather than manual process control.

Compared to similar skills

omni-version-manager side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
omni-version-manager (this skill)02moReviewIntermediate
applescript288moReviewAdvanced
bazel-build-optimization142moNo flagsAdvanced
home-assistant-manager98moReviewAdvanced

Try saying

Example prompts that trigger this skill in your AI assistant.

Search skills

Search the agent skills registry