omnius 1.0.196 → 1.0.198

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,8 +7,12 @@ Configuration is layered from environment, global user settings, project setting
7
7
  | Variable | Purpose |
8
8
  | --- | --- |
9
9
  | `OMNIUS_HOST` | Bind host and port, for example `0.0.0.0:11435` |
10
- | `OMNIUS_API_KEY` | Single admin bearer token |
11
- | `OMNIUS_API_KEYS` | Multi-key auth: `key:scope:owner:rpm:tpd:max_jobs` |
10
+ | `OMNIUS_REST_API_KEY` | Single admin bearer token for the Omnius REST API |
11
+ | `OMNIUS_REST_API_KEYS` | Multi-key REST auth: `key:scope:owner:rpm:tpd:max_jobs` |
12
+ | `OMNIUS_PROVIDER_API_KEY` | Upstream model-provider bearer token |
13
+ | `OMNIUS_MODEL_API_KEY` | Alternate upstream model-provider bearer token |
14
+ | `OMNIUS_API_KEY` | Legacy fallback for provider auth and legacy REST auth |
15
+ | `OMNIUS_API_KEYS` | Legacy multi-key REST auth |
12
16
  | `OMNIUS_ACCESS` | Network access policy for the daemon |
13
17
  | `OMNIUS_DAEMON` | Start in daemon mode when set to `1` |
14
18
  | `OMNIUS_FORCE_NO_THINK` | Force `think: false` for Qwen-style backends |
@@ -76,6 +76,7 @@ pnpm docs:check
76
76
  | `PATCH` | `/v1/config` | Update daemon config |
77
77
  | `GET` | `/v1/config/model` | Current model |
78
78
  | `PUT` | `/v1/config/model` | Switch model |
79
+ | `POST` | `/v1/config/model/check` | Probe model readiness with non-empty text |
79
80
  | `GET` | `/v1/config/endpoint` | Current endpoint |
80
81
  | `PUT` | `/v1/config/endpoint` | Switch endpoint |
81
82
  | `POST` | `/v1/config/endpoint/test` | Probe endpoint |
@@ -64,8 +64,8 @@ OMNIUS_HOST=0.0.0.0:11435 omnius serve
64
64
  Local anonymous requests default to read behavior unless the runtime is configured for insecure loopback admin. Remote/shared deployments should use bearer keys.
65
65
 
66
66
  ```bash
67
- OMNIUS_API_KEY="admin-secret" omnius serve
68
- OMNIUS_API_KEYS="read-key:read:grafana,run-key:run:ci:60:100000:3,admin-key:admin:ops" omnius serve
67
+ OMNIUS_REST_API_KEY="admin-secret" omnius serve
68
+ OMNIUS_REST_API_KEYS="read-key:read:grafana,run-key:run:ci:60:100000:3,admin-key:admin:ops" omnius serve
69
69
  ```
70
70
 
71
71
  Scopes:
@@ -40,6 +40,7 @@ curl -s http://127.0.0.1:11435/version
40
40
 
41
41
  ```bash
42
42
  curl -s http://127.0.0.1:11435/v1/models
43
+ curl -s -X POST http://127.0.0.1:11435/v1/config/model/check
43
44
  ```
44
45
 
45
46
  ## Chat
@@ -104,6 +105,15 @@ curl -s -X POST http://127.0.0.1:11435/v1/tools/memory_search/call \
104
105
  -d '{"args":{"query":"rest api docs"}}'
105
106
  ```
106
107
 
108
+ Deterministic bookkeeping without an agent run:
109
+
110
+ ```bash
111
+ curl -s -X POST http://127.0.0.1:11435/v1/tools/todo_write/call \
112
+ -H 'content-type: application/json' \
113
+ -H 'x-omnius-session-id: regi-turn-123' \
114
+ -d '{"profile":"cygnus-regi-tracking","args":{"todos":[{"content":"Create NC report","status":"in_progress"}]}}'
115
+ ```
116
+
107
117
  ## Voice TTS
108
118
 
109
119
  ```bash
@@ -7,13 +7,13 @@ Omnius can run without auth for local development, but shared deployments should
7
7
  Single admin key:
8
8
 
9
9
  ```bash
10
- OMNIUS_API_KEY="admin-secret" omnius serve
10
+ OMNIUS_REST_API_KEY="admin-secret" omnius serve
11
11
  ```
12
12
 
13
13
  Multiple scoped keys:
14
14
 
15
15
  ```bash
16
- OMNIUS_API_KEYS="read-key:read:grafana,run-key:run:ci:60:100000:3,admin-key:admin:ops" omnius serve
16
+ OMNIUS_REST_API_KEYS="read-key:read:grafana,run-key:run:ci:60:100000:3,admin-key:admin:ops" omnius serve
17
17
  ```
18
18
 
19
19
  Format:
@@ -22,6 +22,10 @@ Format:
22
22
  key:scope:owner:rpm:tpd:max_jobs
23
23
  ```
24
24
 
25
+ Compatibility: `OMNIUS_API_KEY` and `OMNIUS_API_KEYS` are still accepted as legacy REST auth variables, but new deployments should use the `OMNIUS_REST_*` namespace.
26
+
27
+ Provider keys are separate from REST keys. Prefer `OMNIUS_PROVIDER_API_KEY`, `OMNIUS_MODEL_API_KEY`, or provider-native variables such as `VLLM_API_KEY` for upstream model auth. `OMNIUS_API_KEY` remains a legacy fallback for provider auth and legacy REST auth, so avoid it in new remote deployments. Scoped REST keys (`OMNIUS_REST_*` and `OMNIUS_API_KEYS`) are stripped before spawning agent subprocesses and are not forwarded as model-provider credentials.
28
+
25
29
  Fields:
26
30
 
27
31
  - `key`: bearer token.
@@ -84,6 +88,8 @@ Mint body:
84
88
 
85
89
  Tool calls are additionally gated by each tool's security metadata. Scope alone is not the only control.
86
90
 
91
+ Runtime keys may bind a tool profile. A run-scope key with profile `cygnus-regi-tracking` can update todos and notes but cannot expose or execute filesystem/search/shell tools.
92
+
87
93
  ## Request Header
88
94
 
89
95
  ```text
@@ -95,7 +101,7 @@ Authorization: Bearer <key>
95
101
  For local development, bind to loopback. For remote access, set explicit auth and access policy:
96
102
 
97
103
  ```bash
98
- OMNIUS_HOST=0.0.0.0:11435 OMNIUS_API_KEYS="run-key:run:remote" omnius serve
104
+ OMNIUS_HOST=0.0.0.0:11435 OMNIUS_REST_API_KEYS="run-key:run:remote" omnius serve
99
105
  ```
100
106
 
101
107
  Do not expose an unauthenticated daemon on a public interface.
@@ -8,6 +8,7 @@
8
8
  | `PATCH` | `/v1/config` | Update settings |
9
9
  | `GET` | `/v1/config/model` | Show active model |
10
10
  | `PUT` | `/v1/config/model` | Switch model |
11
+ | `POST` | `/v1/config/model/check` | Probe model readiness with non-empty text |
11
12
  | `GET` | `/v1/config/endpoint` | Show active backend endpoint |
12
13
  | `PUT` | `/v1/config/endpoint` | Switch endpoint with TUI-compatible normalization |
13
14
  | `POST` | `/v1/config/endpoint/test` | Probe endpoint from daemon process |
@@ -38,7 +39,9 @@ Endpoint history mirrors the `/endpoint` TUI flow. It records recently used endp
38
39
 
39
40
  ## Model Switching
40
41
 
41
- `PUT /v1/config/model` updates the active model for subsequent requests. Clients can still pass per-request `model` fields to chat endpoints.
42
+ `PUT /v1/config/model` updates the active model for subsequent requests and the daemon process, so `GET /v1/config/model` is read-after-write consistent. Clients can still pass per-request `model` fields to chat endpoints.
43
+
44
+ `POST /v1/config/model/check` performs a real chat probe and returns `ok`, `backend_normalized_model_id`, `provider_model_id`, endpoint metadata, and whether non-empty visible text was produced. Use it to distinguish model catalog visibility from compute readiness.
42
45
 
43
46
  ## Runtime Keys
44
47
 
@@ -35,6 +35,22 @@ Common body fields:
35
35
  | `profile` | Tool profile |
36
36
  | `timeout_s` | Wall-clock timeout |
37
37
 
38
+ Profiles are enforced twice:
39
+
40
+ - before model exposure, so disallowed tools are absent from tool schemas and prompts
41
+ - at execution time, so emitted disallowed tool calls are denied
42
+
43
+ The active profile name, source, search order, and allowed tool list are included in the accepted run metadata and persisted run record. `GET /v1/runs/{id}` is the canonical status source and includes output tail metadata when available. `/v1/runs/{id}/output` remains a raw log/delta endpoint.
44
+
45
+ For bookkeeping integrations, prefer direct calls instead of `/v1/run`:
46
+
47
+ ```bash
48
+ curl -s -X POST "$OMNIUS/v1/tools/todo_write/call" \
49
+ -H 'content-type: application/json' \
50
+ -H 'x-omnius-session-id: regi-turn-123' \
51
+ -d '{"profile":"cygnus-regi-tracking","args":{"todos":[{"content":"Create NC report","status":"in_progress"}]}}'
52
+ ```
53
+
38
54
  ## Abort
39
55
 
40
56
  `DELETE /v1/runs/{id}` aborts the job. The daemon signals the process group, escalates if needed, updates the job record, and decrements per-key active job counters.
@@ -17,12 +17,15 @@
17
17
 
18
18
  ## Tool Metadata
19
19
 
20
+ `GET /v1/tools` and `POST /v1/tools/{name}/call` use the same direct-call registry, built from the `@omnius/execution` tool manifest plus virtual lifecycle tools such as `task_complete`. If a tool appears in `/v1/tools` with `direct_callable: true`, the same name is callable at `/v1/tools/{name}/call`.
21
+
20
22
  `GET /v1/tools` returns each tool's:
21
23
 
22
24
  - name
23
25
  - class
24
26
  - description
25
27
  - JSON-schema parameters
28
+ - `direct_callable`
26
29
  - security categories
27
30
  - risk
28
31
  - required scope
@@ -36,16 +39,21 @@ Filters include:
36
39
  ?scope=read|run|admin
37
40
  ?risk=low|medium|high|critical
38
41
  ?limit=200&offset=0
42
+ ?profile=cygnus-regi-tracking
39
43
  ```
40
44
 
45
+ Profiles can also be selected with `X-Tool-Profile`. Named profiles resolve in this order: built-in preset, `{working_dir}/.omnius/profiles/{name}.json`, then `~/.omnius/profiles/{name}.json`. Missing profiles fail closed.
46
+
41
47
  ## Tool Calls
42
48
 
43
49
  `POST /v1/tools/{name}/call` body:
44
50
 
45
51
  ```json
46
52
  {
53
+ "session_id": "regi-turn-123",
47
54
  "args": {},
48
- "working_dir": "/path/to/repo"
55
+ "working_dir": "/path/to/repo",
56
+ "profile": "cygnus-regi-tracking"
49
57
  }
50
58
  ```
51
59
 
@@ -53,6 +61,17 @@ Filters include:
53
61
 
54
62
  Tool calls are gated by auth scope, tool policy, off-device policy, and profile restrictions.
55
63
 
64
+ Bookkeeping tools are direct-callable and do not require a model run:
65
+
66
+ ```bash
67
+ curl -s -X POST "$OMNIUS/v1/tools/todo_write/call" \
68
+ -H 'content-type: application/json' \
69
+ -H 'x-omnius-session-id: regi-turn-123' \
70
+ -d '{"profile":"cygnus-regi-tracking","args":{"todos":[{"content":"Create NC report","status":"in_progress"}]}}'
71
+ ```
72
+
73
+ Use `todo_write`, `todo_read`, `working_notes`, and `task_complete` this way for deterministic tracking. `task_complete` on this endpoint is only a bookkeeping boundary; `/v1/runs/{id}` remains the canonical run terminal state.
74
+
56
75
  ## MCP
57
76
 
58
77
  MCP endpoints list connected Model Context Protocol servers and invoke tools through the daemon with the same auth and audit envelope.
@@ -9,7 +9,7 @@ import OpenAI from "openai";
9
9
 
10
10
  const client = new OpenAI({
11
11
  baseURL: "http://127.0.0.1:11435/v1",
12
- apiKey: process.env.OMNIUS_API_KEY ?? "local-dev",
12
+ apiKey: process.env.OMNIUS_REST_API_KEY ?? "local-dev",
13
13
  });
14
14
 
15
15
  const response = await client.chat.completions.create({
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "omnius",
3
- "version": "1.0.196",
3
+ "version": "1.0.198",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "omnius",
9
- "version": "1.0.196",
9
+ "version": "1.0.198",
10
10
  "bundleDependencies": [
11
11
  "image-to-ascii"
12
12
  ],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omnius",
3
- "version": "1.0.196",
3
+ "version": "1.0.198",
4
4
  "description": "AI coding agent powered by open-source models (Ollama/vLLM) — interactive TUI with agentic tool-calling loop",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -142,5 +142,5 @@
142
142
  "transcribe-cli": "^2.0.1",
143
143
  "viem": "2.47.4"
144
144
  },
145
- "readme": "# Omnius\n\nOmnius is a local-first agentic coding runtime: terminal UI, autonomous coding loop, REST daemon, model router, memory layer, media tools, Telegram bridge, and peer-to-peer inference mesh in one CLI.\n\nIt is designed for open-weight and user-controlled models first, while still routing cleanly through Ollama, vLLM, OpenAI-compatible endpoints, OpenRouter, Groq, Chutes, sponsor peers, COHERE peers, and other configured providers.\n\n[![npm](https://img.shields.io/npm/v/omnius.svg)](https://www.npmjs.com/package/omnius)\n[![Node](https://img.shields.io/badge/node-%3E%3D22-brightgreen.svg)](https://nodejs.org/)\n[![License](https://img.shields.io/badge/license-CC--BY--NC--4.0-blue.svg)](LICENSE)\n\n## Install\n\n```bash\nnpm install -g omnius\nomnius\n```\n\nRequirements:\n\n- Node.js 22 or newer\n- npm 10 or newer for published CLI use\n- pnpm 9 or newer for workspace development\n- A local model or configured remote endpoint\n\nStart the REST daemon:\n\n```bash\nomnius serve\n```\n\nThe daemon defaults to `http://127.0.0.1:11435`. Open the interactive API docs at `http://127.0.0.1:11435/docs`.\n\n## What Omnius Does\n\n- Runs autonomous coding tasks, edits files, executes tools, tests changes, and iterates on failures.\n- Provides a dense terminal UI for model selection, endpoint routing, task control, shell output, voice, sponsors, Telegram, and system telemetry.\n- Exposes a REST daemon with OpenAI/Ollama-compatible inference, agentic task execution, memory, skills, tools, MCP, events, voice, projects, and governance endpoints.\n- Routes models through local, cloud, sponsor, and peer-to-peer endpoints without assuming local Ollama is the only source.\n- Supports realtime spoken conversation for ASR/TTS clients through `/realtime` and REST `realtime: true`.\n- Supports image, video, sound, music, TTS, ASR, voice clone references, Telegram media workflows, and sponsor-provided media generation.\n- Keeps project runtime state in `.omnius/`, which is intentionally ignored by git.\n\n## Common Workflows\n\n```bash\nomnius \"inspect this repo and summarize the main entrypoints\"\nomnius serve\n```\n\n```text\n/help command help\n/model select or inspect the active model\n/endpoint select or configure local, cloud, sponsor, or peer endpoints\n/realtime toggle short ASR/TTS-oriented conversation mode\n/broker inspect model broker, RAM/VRAM thresholds, and loaded models\n/sponsor expose local or upstream capacity to peers\n/cohere participate in distributed COHERE inference\n/telegram configure or toggle the Telegram bridge\n/skills list explorable skills and docs memories\n/pause pause after the current turn boundary\n/stop interrupt the active run\n/resume resume saved state\n```\n\n## Current Feature Areas\n\n| Area | What to read |\n| --- | --- |\n| Install and setup | [Install](docs/getting-started/install.md), [First run](docs/getting-started/first-run.md), [Model providers](docs/getting-started/model-providers.md) |\n| Terminal workflows | [TUI workflows](docs/guides/tui-workflows.md), [Slash commands](docs/reference/slash-commands.md) |\n| REST daemon | [REST reference](docs/reference/rest-api.md), [REST quickref](docs/rest/QUICKREF.md), [OpenAPI source](docs/rest/openapi-source.md) |\n| Realtime voice chat | [Realtime guide](docs/guides/realtime.md) |\n| Sponsor and COHERE mesh | [Sponsor and COHERE guide](docs/guides/sponsor-and-cohere.md) |\n| Telegram bridge | [Telegram guide](docs/guides/telegram.md) |\n| Media generation | [Media guide](docs/guides/media-generation.md) |\n| Operations | [Runtime hygiene](docs/operations/runtime-hygiene.md), [Security and remote access](docs/operations/security-and-remote-access.md) |\n| Architecture | [Architecture overview](docs/architecture/overview.md) |\n| Agent-explorable docs | [Agent memory docs index](docs/agent-memory/INDEX.md) |\n\n## Recent Highlights\n\n- `/realtime` and REST `realtime: true` provide short, natural, SOUL.md-aware conversation for ASR/TTS clients.\n- Endpoint setup and sponsor setup aggregate models from all enabled endpoints, including external OpenAI-compatible routers.\n- `/sponsor` can expose text inference and media generation for image, video, sound, and music with per-modality limits.\n- Sponsor and COHERE status surfaces now use shared telemetry concepts: concurrency, request rate, daily tokens, peer usage, model usage, and remote system metrics.\n- The TUI reports token production rate as `t/s`, supports Shift+Enter multiline input, and renders dynamic shell output inside bounded Unicode cards.\n- Telegram state is scoped by user and group, supports durable reply preferences, and feeds raw platform/tool failures back into the agent loop.\n- Ollama pool cleanup now accounts for process groups and orphan runner processes that can keep VRAM pinned.\n- REST documentation is available both as human docs and as Omnius-discoverable docs skills.\n\n## REST API\n\nStart:\n\n```bash\nomnius serve\n```\n\nUseful entrypoints:\n\n```text\nGET /docs\nGET /openapi.json\nPOST /v1/chat\nPOST /v1/chat/completions\nPOST /v1/run\nGET /v1/events\nGET /v1/skills\nPOST /v1/tools/{name}/call\nWS /v1/voicechat/ws\n```\n\nFor shared deployments, use bearer keys:\n\n```bash\nOMNIUS_API_KEYS=\"read-key:read:grafana,run-key:run:ci:60:100000:3,admin-key:admin:ops\" omnius serve\n```\n\nSee [docs/reference/rest-api.md](docs/reference/rest-api.md) for the maintained endpoint inventory. The canonical machine contract is generated from [packages/cli/src/api/openapi.ts](packages/cli/src/api/openapi.ts).\n\n## Agent-Explorable Documentation\n\nOmnius discovers project-local docs skills from `.aiwg/addons/*/skills`. The docs bundles in this repo expose high-signal entrypoints for agents:\n\n```text\n/skills omnius docs\nskill_execute name=\"omnius-docs\"\nskill_execute name=\"omnius-rest-docs\"\nskill_extract name=\"omnius-realtime-docs\" query=\"How does realtime REST mode work?\"\n```\n\nThe intended pattern is index first, targeted document second, not loading the whole manual into the active context.\n\n## Development\n\n```bash\npnpm install\npnpm -r build\npnpm docs:check\n```\n\nFocused checks used for the docs skill surface:\n\n```bash\npnpm --filter @omnius/execution exec vitest run tests/skill-discovery.test.ts\npnpm --filter omnius exec vitest run tests/realtime-mode.test.ts tests/command-registry.test.ts\n```\n\n## Publishing\n\nPublish only from `publish/`.\n\n```bash\ncd omnius\npnpm -r clean || true\nfind . -name 'tsconfig.tsbuildinfo' -not -path '*/node_modules/*' -delete\npnpm -r build\nnode scripts/build-publish.mjs\ncd publish\nmkdir -p .npm-cache\nNPM_CONFIG_CACHE=$(pwd)/.npm-cache npm pack --prefer-online --cache-min=0 --registry https://registry.npmjs.org/\nNPM_CONFIG_CACHE=$(pwd)/.npm-cache npm publish --access public --prefer-online --cache-min=0 --registry https://registry.npmjs.org/\n```\n\nBefore publishing, verify `README.md`, `package.json`, `dist/index.js`, and `dist/launcher.cjs` are in the tarball, and that `package.json` includes `readmeFilename: \"README.md\"` plus a string `readme`.\n\n## License\n\nOmnius is released under [CC-BY-NC-4.0](LICENSE) for non-commercial use. Commercial use, redistribution, hosted services, and enterprise deployment require a commercial license.\n"
145
+ "readme": "# Omnius\n\nOmnius is a local-first agentic coding runtime: terminal UI, autonomous coding loop, REST daemon, model router, memory layer, media tools, Telegram bridge, and peer-to-peer inference mesh in one CLI.\n\nIt is designed for open-weight and user-controlled models first, while still routing cleanly through Ollama, vLLM, OpenAI-compatible endpoints, OpenRouter, Groq, Chutes, sponsor peers, COHERE peers, and other configured providers.\n\n[![npm](https://img.shields.io/npm/v/omnius.svg)](https://www.npmjs.com/package/omnius)\n[![Node](https://img.shields.io/badge/node-%3E%3D22-brightgreen.svg)](https://nodejs.org/)\n[![License](https://img.shields.io/badge/license-CC--BY--NC--4.0-blue.svg)](LICENSE)\n\n## Install\n\n```bash\nnpm install -g omnius\nomnius\n```\n\nRequirements:\n\n- Node.js 22 or newer\n- npm 10 or newer for published CLI use\n- pnpm 9 or newer for workspace development\n- A local model or configured remote endpoint\n\nStart the REST daemon:\n\n```bash\nomnius serve\n```\n\nThe daemon defaults to `http://127.0.0.1:11435`. Open the interactive API docs at `http://127.0.0.1:11435/docs`.\n\n## What Omnius Does\n\n- Runs autonomous coding tasks, edits files, executes tools, tests changes, and iterates on failures.\n- Provides a dense terminal UI for model selection, endpoint routing, task control, shell output, voice, sponsors, Telegram, and system telemetry.\n- Exposes a REST daemon with OpenAI/Ollama-compatible inference, agentic task execution, memory, skills, tools, MCP, events, voice, projects, and governance endpoints.\n- Routes models through local, cloud, sponsor, and peer-to-peer endpoints without assuming local Ollama is the only source.\n- Supports realtime spoken conversation for ASR/TTS clients through `/realtime` and REST `realtime: true`.\n- Supports image, video, sound, music, TTS, ASR, voice clone references, Telegram media workflows, and sponsor-provided media generation.\n- Keeps project runtime state in `.omnius/`, which is intentionally ignored by git.\n\n## Common Workflows\n\n```bash\nomnius \"inspect this repo and summarize the main entrypoints\"\nomnius serve\n```\n\n```text\n/help command help\n/model select or inspect the active model\n/endpoint select or configure local, cloud, sponsor, or peer endpoints\n/realtime toggle short ASR/TTS-oriented conversation mode\n/broker inspect model broker, RAM/VRAM thresholds, and loaded models\n/sponsor expose local or upstream capacity to peers\n/cohere participate in distributed COHERE inference\n/telegram configure or toggle the Telegram bridge\n/skills list explorable skills and docs memories\n/pause pause after the current turn boundary\n/stop interrupt the active run\n/resume resume saved state\n```\n\n## Current Feature Areas\n\n| Area | What to read |\n| --- | --- |\n| Install and setup | [Install](docs/getting-started/install.md), [First run](docs/getting-started/first-run.md), [Model providers](docs/getting-started/model-providers.md) |\n| Terminal workflows | [TUI workflows](docs/guides/tui-workflows.md), [Slash commands](docs/reference/slash-commands.md) |\n| REST daemon | [REST reference](docs/reference/rest-api.md), [REST quickref](docs/rest/QUICKREF.md), [OpenAPI source](docs/rest/openapi-source.md) |\n| Realtime voice chat | [Realtime guide](docs/guides/realtime.md) |\n| Sponsor and COHERE mesh | [Sponsor and COHERE guide](docs/guides/sponsor-and-cohere.md) |\n| Telegram bridge | [Telegram guide](docs/guides/telegram.md) |\n| Media generation | [Media guide](docs/guides/media-generation.md) |\n| Operations | [Runtime hygiene](docs/operations/runtime-hygiene.md), [Security and remote access](docs/operations/security-and-remote-access.md) |\n| Architecture | [Architecture overview](docs/architecture/overview.md) |\n| Agent-explorable docs | [Agent memory docs index](docs/agent-memory/INDEX.md) |\n\n## Recent Highlights\n\n- `/realtime` and REST `realtime: true` provide short, natural, SOUL.md-aware conversation for ASR/TTS clients.\n- Endpoint setup and sponsor setup aggregate models from all enabled endpoints, including external OpenAI-compatible routers.\n- `/sponsor` can expose text inference and media generation for image, video, sound, and music with per-modality limits.\n- Sponsor and COHERE status surfaces now use shared telemetry concepts: concurrency, request rate, daily tokens, peer usage, model usage, and remote system metrics.\n- The TUI reports token production rate as `t/s`, supports Shift+Enter multiline input, and renders dynamic shell output inside bounded Unicode cards.\n- Telegram state is scoped by user and group, supports durable reply preferences, and feeds raw platform/tool failures back into the agent loop.\n- Ollama pool cleanup now accounts for process groups and orphan runner processes that can keep VRAM pinned.\n- REST documentation is available both as human docs and as Omnius-discoverable docs skills.\n\n## REST API\n\nStart:\n\n```bash\nomnius serve\n```\n\nUseful entrypoints:\n\n```text\nGET /docs\nGET /openapi.json\nPOST /v1/chat\nPOST /v1/chat/completions\nPOST /v1/run\nGET /v1/events\nGET /v1/skills\nPOST /v1/tools/{name}/call\nWS /v1/voicechat/ws\n```\n\nFor shared deployments, use bearer keys:\n\n```bash\nOMNIUS_REST_API_KEYS=\"read-key:read:grafana,run-key:run:ci:60:100000:3,admin-key:admin:ops\" omnius serve\n```\n\nSee [docs/reference/rest-api.md](docs/reference/rest-api.md) for the maintained endpoint inventory. The canonical machine contract is generated from [packages/cli/src/api/openapi.ts](packages/cli/src/api/openapi.ts).\n\n## Agent-Explorable Documentation\n\nOmnius discovers project-local docs skills from `.aiwg/addons/*/skills`. The docs bundles in this repo expose high-signal entrypoints for agents:\n\n```text\n/skills omnius docs\nskill_execute name=\"omnius-docs\"\nskill_execute name=\"omnius-rest-docs\"\nskill_extract name=\"omnius-realtime-docs\" query=\"How does realtime REST mode work?\"\n```\n\nThe intended pattern is index first, targeted document second, not loading the whole manual into the active context.\n\n## Development\n\n```bash\npnpm install\npnpm -r build\npnpm docs:check\n```\n\nFocused checks used for the docs skill surface:\n\n```bash\npnpm --filter @omnius/execution exec vitest run tests/skill-discovery.test.ts\npnpm --filter omnius exec vitest run tests/realtime-mode.test.ts tests/command-registry.test.ts\n```\n\n## Publishing\n\nPublish only from `publish/`.\n\n```bash\ncd omnius\npnpm -r clean || true\nfind . -name 'tsconfig.tsbuildinfo' -not -path '*/node_modules/*' -delete\npnpm -r build\nnode scripts/build-publish.mjs\ncd publish\nmkdir -p .npm-cache\nNPM_CONFIG_CACHE=$(pwd)/.npm-cache npm pack --prefer-online --cache-min=0 --registry https://registry.npmjs.org/\nNPM_CONFIG_CACHE=$(pwd)/.npm-cache npm publish --access public --prefer-online --cache-min=0 --registry https://registry.npmjs.org/\n```\n\nBefore publishing, verify `README.md`, `package.json`, `dist/index.js`, and `dist/launcher.cjs` are in the tarball, and that `package.json` includes `readmeFilename: \"README.md\"` plus a string `readme`.\n\n## License\n\nOmnius is released under [CC-BY-NC-4.0](LICENSE) for non-commercial use. Commercial use, redistribution, hosted services, and enterprise deployment require a commercial license.\n"
146
146
  }