omnius 1.0.607 → 1.0.609
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.
- package/.aiwg/addons/omnius-docs/README.md +3 -1
- package/.aiwg/addons/omnius-docs/manifest.json +4 -2
- package/.aiwg/addons/omnius-docs/skills/omnius-agent-onboarding/SKILL.md +70 -0
- package/.aiwg/addons/omnius-docs/skills/omnius-docs/SKILL.md +8 -4
- package/.aiwg/addons/omnius-rest-docs/README.md +2 -1
- package/.aiwg/addons/omnius-rest-docs/skills/omnius-rest-docs/SKILL.md +5 -3
- package/README.md +21 -5
- package/dist/discovery.d.ts +55 -2
- package/dist/index.js +8264 -6378
- package/dist/library.d.ts +2 -2
- package/dist/library.js +67 -7
- package/dist/scripts/vibevoice-asr-worker.py +195 -0
- package/dist/update-worker.js +211 -5
- package/docs/.vitepress/config.mts +2 -0
- package/docs/DISCOVERY.json +23847 -4981
- package/docs/DISCOVERY.md +415 -330
- package/docs/architecture/agent-system-map.md +176 -0
- package/docs/architecture/overview.md +5 -0
- package/docs/discovery/agent-map.json +119 -0
- package/docs/getting-started/install.md +1 -1
- package/docs/guides/agent-integration.md +69 -7
- package/docs/index.md +3 -1
- package/docs/reference/configuration.md +10 -0
- package/docs/reference/rest-api.md +26 -4
- package/docs/reference/slash-commands.md +31 -3
- package/docs/rest/INDEX.md +4 -3
- package/docs/rest/QUICKREF.md +1 -0
- package/docs/rest/endpoints/discovery.md +21 -3
- package/docs/rest/endpoints/voice-vision.md +21 -4
- package/npm-shrinkwrap.json +5 -5
- package/package.json +6 -3
- package/templates/OMNIUS.md +29 -5
|
@@ -24,7 +24,7 @@ Command metadata drives the TUI, REST command proxy, gateway exposure, and agent
|
|
|
24
24
|
| Tools And Skills | 6 |
|
|
25
25
|
| External Gateways | 2 |
|
|
26
26
|
| Secrets | 2 |
|
|
27
|
-
| Interface |
|
|
27
|
+
| Interface | 10 |
|
|
28
28
|
| Administration | 2 |
|
|
29
29
|
| Planned | 8 |
|
|
30
30
|
|
|
@@ -1376,13 +1376,18 @@ Toggle TTS voice feedback
|
|
|
1376
1376
|
| Safety | none |
|
|
1377
1377
|
| Aliases | - |
|
|
1378
1378
|
| Args | - |
|
|
1379
|
-
| Subcommands | clone |
|
|
1379
|
+
| Subcommands | clone, asr |
|
|
1380
1380
|
|
|
1381
1381
|
Signatures:
|
|
1382
1382
|
|
|
1383
1383
|
- `/voice` - Toggle TTS voice feedback
|
|
1384
|
-
- `/voice <model>` - Set
|
|
1384
|
+
- `/voice <model>` - Set voice: glados, overwatch, luxtts:announcer-testchamber03, kokoro, luxtts, misotts, supertonic, or a selected voicebox_* model
|
|
1385
1385
|
- `/voice clone <file>` - Set voice clone reference audio (wav/mp3/ogg/flac)
|
|
1386
|
+
- `/voice asr` - Open ASR system and model selection
|
|
1387
|
+
- `/voice asr status` - Show selected ASR engine/model and activation state
|
|
1388
|
+
- `/voice asr list` - List ASR engines, models, and live/file capabilities
|
|
1389
|
+
- `/voice asr use <engine> [model]` - Select and activate an installed ASR engine/model
|
|
1390
|
+
- `/voice asr setup <engine> [model] [device=N]` - Install pinned ASR runtime/weights and activate on an exact CUDA device
|
|
1386
1391
|
- `/voice clone glados` - Generate clone ref from GLaDOS for LuxTTS/MisoTTS voice cloning
|
|
1387
1392
|
- `/voice clone overwatch` - Generate clone ref from Overwatch for LuxTTS/MisoTTS voice cloning
|
|
1388
1393
|
|
|
@@ -1957,6 +1962,29 @@ Signatures:
|
|
|
1957
1962
|
|
|
1958
1963
|
- `/emojis` - Toggle emoji rendering in TUI messages
|
|
1959
1964
|
|
|
1965
|
+
### /indicator
|
|
1966
|
+
|
|
1967
|
+
Start the native system indicator and report readiness
|
|
1968
|
+
|
|
1969
|
+
| Field | Value |
|
|
1970
|
+
| --- | --- |
|
|
1971
|
+
| Category | Interface |
|
|
1972
|
+
| Status | implemented |
|
|
1973
|
+
| Surfaces | tui |
|
|
1974
|
+
| Safety | userOnly |
|
|
1975
|
+
| Aliases | /tray |
|
|
1976
|
+
| Args | - |
|
|
1977
|
+
| Subcommands | start, status |
|
|
1978
|
+
|
|
1979
|
+
Signatures:
|
|
1980
|
+
|
|
1981
|
+
- `/indicator` - Start the native system indicator and report readiness
|
|
1982
|
+
- `/indicator start` - Start the native system indicator and report readiness
|
|
1983
|
+
- `/indicator status` - Report native system indicator readiness and daemon health
|
|
1984
|
+
- `/tray` - Alias for /indicator
|
|
1985
|
+
- `/tray start` - Alias for /indicator start
|
|
1986
|
+
- `/tray status` - Alias for /indicator status
|
|
1987
|
+
|
|
1960
1988
|
### /mouse
|
|
1961
1989
|
|
|
1962
1990
|
Toggle terminal mouse tracking
|
package/docs/rest/INDEX.md
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
This directory is the human-readable REST API reference for Omnius. It is meant to be explored incrementally by agents and humans.
|
|
4
4
|
|
|
5
5
|
For intent-first lookup, start with
|
|
6
|
-
[Discovery](./endpoints/discovery.md), `GET /v1/discovery`,
|
|
6
|
+
[Discovery](./endpoints/discovery.md), `GET /v1/discovery/bootstrap`,
|
|
7
|
+
`GET /v1/discovery`, or the bundled
|
|
7
8
|
[`DISCOVERY.json`](../DISCOVERY.json). Use this index after the catalog points
|
|
8
9
|
to an endpoint family.
|
|
9
10
|
|
|
@@ -94,7 +95,7 @@ Scopes:
|
|
|
94
95
|
| Family | Representative endpoints |
|
|
95
96
|
| --- | --- |
|
|
96
97
|
| Health | `/health`, `/health/ready`, `/health/startup`, `/version`, `/metrics` |
|
|
97
|
-
| Discovery | `/v1/discovery`, `/v1/discovery/{id}` |
|
|
98
|
+
| Discovery | `/v1/discovery/bootstrap`, `/v1/discovery`, `/v1/discovery/{id}` |
|
|
98
99
|
| Inference and chat | `/v1/models`, `/v1/chat/completions`, `/v1/embeddings`, `/v1/chat`, `/v1/generate`, `/api/generate`, `/v1/chat/sessions`, `/v1/chat/check-in` |
|
|
99
100
|
| AIWG | `/v1/aiwg`, `/v1/aiwg/frameworks`, `/v1/aiwg/skills`, `/v1/aiwg/use`, `/v1/aiwg/expand` |
|
|
100
101
|
| Runs | `/v1/run`, `/v1/runs`, `/v1/runs/{id}`, `/v1/todos`, `/v1/todos/{session_id}` |
|
|
@@ -111,7 +112,7 @@ Scopes:
|
|
|
111
112
|
| Sessions and context | `/v1/sessions`, `/v1/sessions/{id}`, `/v1/context`, `/v1/context/window-dumps`, `/v1/context/window-dumps/{id}`, `/v1/context/save`, `/v1/context/restore`, `/v1/context/compact` |
|
|
112
113
|
| Nexus | `/v1/nexus/status`, `/v1/sponsors` |
|
|
113
114
|
| Ollama pool | `/v1/ollama/pool/processes`, `/v1/ollama/pool/cleanup` |
|
|
114
|
-
| Voice and audio | `/v1/voice/state`, `/v1/voice/models`, `/v1/voice/tts`, `/v1/audio/speech`, `/v1/
|
|
115
|
+
| Voice and audio | `/v1/voice/state`, `/v1/voice/models`, `/v1/voice/tts`, `/v1/audio/speech`, `/v1/asr/engines`, `/v1/asr/selection`, `/v1/asr/activate`, `/v1/asr/transcriptions`, `/v1/asr/test`, `/v1/audio/transcriptions`, `/v1/voicechat/ws` |
|
|
115
116
|
| Vision | `/v1/vision/describe` |
|
|
116
117
|
| Projects | `/v1/projects`, `/v1/projects/current`, `/v1/projects/switch`, `/v1/projects/register`, `/v1/projects/rename`, `/v1/projects/preferences` |
|
|
117
118
|
| Code graph | `/v1/codegraph/snapshot`, `/v1/codegraph/events` |
|
package/docs/rest/QUICKREF.md
CHANGED
|
@@ -44,6 +44,7 @@ curl -s http://127.0.0.1:11435/version
|
|
|
44
44
|
## Discovery
|
|
45
45
|
|
|
46
46
|
```bash
|
|
47
|
+
curl -s http://127.0.0.1:11435/v1/discovery/bootstrap
|
|
47
48
|
curl -s 'http://127.0.0.1:11435/v1/discovery?q=bring%20your%20own%20inference'
|
|
48
49
|
curl -s http://127.0.0.1:11435/v1/discovery/tool.web-search
|
|
49
50
|
```
|
|
@@ -5,19 +5,24 @@ and used by `omnius discover` / `omnius show`.
|
|
|
5
5
|
|
|
6
6
|
| Method | Path | Purpose |
|
|
7
7
|
| --- | --- | --- |
|
|
8
|
+
| `GET` | `/v1/discovery/bootstrap` | Compact agent strategy, profiles, intents, safety rules, and expanded start-here entries |
|
|
8
9
|
| `GET` | `/v1/discovery` | Search or list catalog entries |
|
|
9
10
|
| `GET` | `/v1/discovery/{id}` | Expand one stable entry |
|
|
10
11
|
|
|
11
12
|
## Search
|
|
12
13
|
|
|
13
14
|
```bash
|
|
14
|
-
curl -s
|
|
15
|
+
curl -s http://127.0.0.1:11435/v1/discovery/bootstrap
|
|
16
|
+
curl -s "http://127.0.0.1:11435/v1/discovery?q=web%20search&kind=workflow&audience=integrator&limit=5"
|
|
15
17
|
```
|
|
16
18
|
|
|
17
19
|
Query fields:
|
|
18
20
|
|
|
19
21
|
- `q`: free-text intent; omit to list entries.
|
|
20
22
|
- `kind`: one supported catalog kind.
|
|
23
|
+
- `audience`: require an exact audience tag.
|
|
24
|
+
- `layer`: require an exact architecture layer.
|
|
25
|
+
- `include_internal`: `true`/`1` to include internal notes hidden by default.
|
|
21
26
|
- `limit`: page size.
|
|
22
27
|
- `offset`: zero-based page offset.
|
|
23
28
|
|
|
@@ -31,14 +36,27 @@ curl -s http://127.0.0.1:11435/v1/discovery/tool.web-search
|
|
|
31
36
|
```
|
|
32
37
|
|
|
33
38
|
An entry contains its stable ID, kind, title, summary, aliases/keywords,
|
|
34
|
-
|
|
35
|
-
|
|
39
|
+
audiences/layer, use and avoid conditions, inputs/outputs, invocation
|
|
40
|
+
interfaces, workflow steps, verification, failure recovery, source-of-truth,
|
|
41
|
+
typed references, and related entries as applicable. Discovery is static,
|
|
42
|
+
read-scoped, cacheable, and does not probe hardware, install dependencies,
|
|
43
|
+
load models, or execute the selected capability.
|
|
36
44
|
|
|
37
45
|
Important entrypoints:
|
|
38
46
|
|
|
47
|
+
- `overview`
|
|
48
|
+
- `workflow.choose-entrypoint`
|
|
49
|
+
- `workflow.async-agent-run`
|
|
50
|
+
- `workflow.debug-runtime`
|
|
51
|
+
- `layer.orchestration`
|
|
52
|
+
- `store.project`
|
|
39
53
|
- `capability.bring-your-own-inference`
|
|
40
54
|
- `provider.anthropic`
|
|
41
55
|
- `provider.gemini`
|
|
42
56
|
- `tool.web-search`
|
|
43
57
|
- `api.tools`
|
|
44
58
|
- `operation.version-compatibility`
|
|
59
|
+
|
|
60
|
+
Static discovery describes declared behavior. For observed state, use the live
|
|
61
|
+
service endpoints named by an entry, such as `/version`, `/health/ready`,
|
|
62
|
+
`/v1/tools`, `/v1/asr/status`, or `/v1/voice/state`.
|
|
@@ -8,13 +8,18 @@
|
|
|
8
8
|
| `GET` | `/v1/voice/models` | List TTS voice models |
|
|
9
9
|
| `POST` | `/v1/voice/models/switch` | Switch active TTS model |
|
|
10
10
|
| `GET`/`PUT` | `/v1/voice/supertonic-settings` | Voice tuning settings |
|
|
11
|
-
| `GET` | `/v1/
|
|
12
|
-
| `
|
|
11
|
+
| `GET` | `/v1/asr/engines` | List ASR systems, models, capabilities, and readiness |
|
|
12
|
+
| `GET` | `/v1/asr/status` · `/v1/asr/selection` | Read selection and runtime status |
|
|
13
|
+
| `PATCH` | `/v1/asr/selection` | Persist and activate an exact ASR engine/model |
|
|
14
|
+
| `POST` | `/v1/asr/activate` | Activate and persist an exact ASR engine/model |
|
|
15
|
+
| `POST` | `/v1/asr/engines/{engineId}/setup` | Install a managed ASR runtime and pinned weights |
|
|
16
|
+
| `POST` | `/v1/asr/transcriptions` · `/v1/asr/test` | Transcribe/test with the selected backend |
|
|
17
|
+
| `GET`/`POST` | `/v1/voice/asr-models` · `/v1/voice/asr-models/switch` | Compatibility registry/activation aliases |
|
|
13
18
|
| `POST` | `/v1/voice/tts` | Synthesize text |
|
|
14
19
|
| `POST` | `/v1/audio/speech` | OpenAI-compatible TTS alias |
|
|
15
20
|
| `POST` | `/v1/voice/transcribe` | Transcribe audio |
|
|
16
21
|
| `POST` | `/v1/audio/transcriptions` | OpenAI-compatible transcription alias |
|
|
17
|
-
| `POST` | `/v1/voice/transcribe/stream` |
|
|
22
|
+
| `POST` | `/v1/voice/transcribe/stream` | Isolated final transcription over SSE |
|
|
18
23
|
| `GET` | `/v1/voice/clone-refs` | List clone references |
|
|
19
24
|
| `POST` | `/v1/voice/clone-refs/upload` | Upload clone reference |
|
|
20
25
|
| `POST` | `/v1/voice/clone-refs/from-url` | Fetch clone reference server-side |
|
|
@@ -37,12 +42,24 @@ POST /v1/audio/speech
|
|
|
37
42
|
|
|
38
43
|
## ASR
|
|
39
44
|
|
|
40
|
-
`POST /v1/
|
|
45
|
+
`POST /v1/asr/transcriptions` transcribes uploaded audio with the selected
|
|
46
|
+
engine. `/v1/asr/test` runs the same real path for readiness checks. The
|
|
47
|
+
OpenAI-compatible alias is:
|
|
41
48
|
|
|
42
49
|
```text
|
|
43
50
|
POST /v1/audio/transcriptions
|
|
44
51
|
```
|
|
45
52
|
|
|
53
|
+
VibeVoice is exposed as `vibevoice-transformers/vibevoice-asr-7b`. It is a
|
|
54
|
+
completed-file backend, not an incremental PCM stream: the response preserves
|
|
55
|
+
speaker IDs, segment timestamps, raw structured text, and warnings. Pass
|
|
56
|
+
`?context=` for customized hotwords/background context. Setup installs the
|
|
57
|
+
exact pinned `microsoft/VibeVoice-ASR` snapshot into the unified ASR cache;
|
|
58
|
+
activation requires an explicit GPU and verified placement, and never falls
|
|
59
|
+
back to CPU or another device. Discrete Linux uses `nvidia-smi`; Jetson/L4T,
|
|
60
|
+
where NVIDIA does not ship `nvidia-smi`, uses `tegrastats` plus CUDA Torch
|
|
61
|
+
device properties.
|
|
62
|
+
|
|
46
63
|
## Voicechat WebSocket
|
|
47
64
|
|
|
48
65
|
`/v1/voicechat/ws` supports full-duplex realtime voice.
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "omnius",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.609",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "omnius",
|
|
9
|
-
"version": "1.0.
|
|
9
|
+
"version": "1.0.609",
|
|
10
10
|
"bundleDependencies": [
|
|
11
11
|
"image-to-ascii"
|
|
12
12
|
],
|
|
@@ -3552,9 +3552,9 @@
|
|
|
3552
3552
|
}
|
|
3553
3553
|
},
|
|
3554
3554
|
"node_modules/express-rate-limit": {
|
|
3555
|
-
"version": "8.6.
|
|
3556
|
-
"resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.6.
|
|
3557
|
-
"integrity": "sha512-
|
|
3555
|
+
"version": "8.6.2",
|
|
3556
|
+
"resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.6.2.tgz",
|
|
3557
|
+
"integrity": "sha512-YH4ru+eOJxQABscKFfRCy9R7x9QFGdezclVMwwgFFndzS2Xnm0uo6B0ABZsLhcpeptGv2qvuJVWlQr9gQZoC3A==",
|
|
3558
3558
|
"license": "MIT",
|
|
3559
3559
|
"dependencies": {
|
|
3560
3560
|
"debug": "^4.4.3",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "omnius",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.609",
|
|
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/library.js",
|
|
@@ -33,7 +33,10 @@
|
|
|
33
33
|
"templates",
|
|
34
34
|
"prompts",
|
|
35
35
|
"vendor",
|
|
36
|
-
"voices",
|
|
36
|
+
"voices/personaplex/OverBarn.pt",
|
|
37
|
+
"voices/personaplex/clone-voice.py",
|
|
38
|
+
"voices/personaplex/dequant-loader.py",
|
|
39
|
+
"voices/personaplex/quantize-weights.py",
|
|
37
40
|
"npm-shrinkwrap.json",
|
|
38
41
|
"README.md",
|
|
39
42
|
"LICENSE"
|
|
@@ -161,5 +164,5 @@
|
|
|
161
164
|
"transcribe-cli": "^2.0.1",
|
|
162
165
|
"viem": "2.47.4"
|
|
163
166
|
},
|
|
164
|
-
"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[](https://www.npmjs.com/package/omnius)\n[](https://nodejs.org/)\n[](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\nRegister the native system tray indicator (Linux, macOS, and Windows x64):\n\n```bash\nomnius tray install\nomnius tray status\n```\n\nThe per-login indicator observes the daemon over loopback and provides health,\ndashboard, logs, and explicit daemon controls. See the\n[system tray guide](docs/guides/system-tray.md), including Ubuntu/GNOME setup.\n\n## Agent Discovery\n\nThe npm package ships its complete documentation and a machine-readable\ncapability catalog. An agent does not need to inspect Omnius source or guess\nwhich endpoint owns a capability:\n\n```bash\nomnius discover \"bring your own inference\"\nomnius show provider.anthropic\nomnius show provider.gemini\nomnius show tool.web-search\nomnius discover \"osint research\"\nomnius show capability.osint-research\nomnius capabilities --json\n```\n\nWith the daemon running, the same discovery cascade is available at\n`GET /v1/discovery`, with exact entry expansion at\n`GET /v1/discovery/{id}`. The live API contract remains available at\n`/openapi.json`, direct tool metadata at `/v1/tools`, and skills at\n`/v1/skills`.\n\nStart with [the discovery guide](docs/DISCOVERY.md) when integrating another\nagent or service. Use [bring-your-own inference](docs/guides/bring-your-own-inference.md)\nfor provider protocols and keys, and [tools and web search](docs/guides/tools-and-web-search.md)\nfor the distinction between direct tools and agent-bound tools. The\n[categorized OSINT research guide](docs/guides/osint-research.md) documents\nthe local discover → exact expansion → explicit web-tool workflow.\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| Agent discovery | [Discovery cascade](docs/DISCOVERY.md), [machine catalog](docs/DISCOVERY.json), [agent integration](docs/guides/agent-integration.md) |\n| Bring your own inference | [Provider protocols and keys](docs/guides/bring-your-own-inference.md) |\n| Tools and web search | [Tool discovery and invocation](docs/guides/tools-and-web-search.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| System tray | [Cross-platform tray and Ubuntu setup](docs/guides/system-tray.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| Service compatibility | [Runtime version gate](docs/operations/version-compatibility.md) |\n| Architecture | [Architecture overview](docs/architecture/overview.md) |\n| Agent-explorable docs | [Agent memory docs index](docs/agent-memory/INDEX.md) |\n\n## Shared Media Dependencies\n\nImage, video, audio, and music generation share a **single, system-wide dependency store** instead of duplicating heavy runtimes per project or per Telegram group.\n\nEarlier builds wrote a private Python venv plus Hugging Face / Torch / pip caches under every scoped working directory (for example `…/telegram-creative/<group-id>/.omnius/image-gen/.venv`). On a busy machine the same multi-gigabyte diffusers stack and model weights were re-downloaded once per group — tens of gigabytes of pure duplication.\n\nEverything now resolves to one source of truth under `~/.omnius` (override with `OMNIUS_HOME`):\n\n| Location | Holds |\n| --- | --- |\n| `~/.omnius/runtimes/<kind>/.venv-<backend>` | One shared Python venv per kind+backend (image/video/audio) |\n| `~/.omnius/models/huggingface/{hub,transformers,diffusers}` | Shared model weights — downloaded once, reused everywhere |\n| `~/.omnius/models/{torch,cache,pip-cache}` | Shared Torch hub, XDG, and pip caches |\n| `~/.omnius/models/_meta.json` | LRU usage index for automatic disk-pressure eviction |\n| `~/.omnius/media/{images,videos,audio,music}` | Global generated-media gallery (project-independent) |\n\nProject directories keep only lightweight session artifacts; no venvs or model weights are written per project.\n\n**Migrate and dedup existing machines.** A one-time cleanup consolidates any legacy per-group caches into the unified store — unique weights are moved (never re-downloaded), duplicates and stale venvs are reclaimed:\n\n```bash\n# TUI — current project only\n/models cleanup\n# TUI — every project + nested scoped group on this machine (dry-run first)\n/models cleanup --all --dry-run\n/models cleanup --all\n```\n\n```bash\n# REST — preview, then apply\ncurl -s -X POST localhost:11435/v1/media/migrate -H 'content-type: application/json' -d '{\"dryRun\":true}'\ncurl -s -X POST localhost:11435/v1/media/migrate -H 'content-type: application/json' -d '{}'\n# Inspect store + reclaimable legacy caches\ncurl -s localhost:11435/v1/media/store\n```\n\n**Generate over REST.** The daemon (default `127.0.0.1:11435`, a port in the IANA dynamic/private range that avoids common system-service collisions) exposes the local generators so any user on the machine can list models, generate, and browse the global gallery without the CLI:\n\n```bash\ncurl -s localhost:11435/v1/media/models\ncurl -s -X POST localhost:11435/v1/media/image -H 'content-type: application/json' -d '{\"prompt\":\"a compact robot painter\"}'\ncurl -s -X POST localhost:11435/v1/media/music -H 'content-type: application/json' -d '{\"prompt\":\"warm lo-fi piano loop\"}'\ncurl -s localhost:11435/v1/media/gallery\n```\n\nThe same surface drives the **Generate** tab in the web UI (`http://127.0.0.1:11435`) — pick a kind (image/video/audio/music), choose a model loaded from the system, generate, and review every previously generated file in one global gallery.\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 the daemon (default `http://127.0.0.1:11435`; interactive docs at `/docs`, machine spec at `/openapi.json`):\n\n```bash\nomnius serve\n```\n\nFor shared deployments, gate access with scoped bearer keys (`read` < `run` < `admin`):\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# then: Authorization: Bearer <key>\n```\n\nThe complete endpoint inventory follows. It is kept in lockstep with the served OpenAPI spec by `pnpm docs:check`; the canonical machine contract is generated from [`packages/cli/src/api/openapi.ts`](packages/cli/src/api/openapi.ts) and mirrored in [`docs/reference/rest-api.md`](docs/reference/rest-api.md).\n\n### Docs and compatibility aliases\n\n| Method | Path | Purpose |\n| --- | --- | --- |\n| `GET` | `/docs` · `/api/docs` · `/swagger-ui` | Swagger UI |\n| `GET` | `/openapi.json` · `/openapi.yaml` · `/v3/api-docs` · `/swagger.json` · `/api-docs` | OpenAPI spec (JSON/YAML + aliases) |\n| `GET` | `/redoc` | ReDoc renderer |\n\n### Health and observability\n\n| Method | Path | Purpose |\n| --- | --- | --- |\n| `GET` | `/health` · `/health/ready` · `/health/startup` | Liveness, backend readiness, startup probes |\n| `GET` | `/version` | Package version and platform |\n| `GET` | `/metrics` | Prometheus metrics |\n| `GET` | `/v1/events` | Server-sent event stream |\n| `GET` | `/v1/usage` | Token usage and rate limits |\n| `GET` | `/v1/audit` | Audit log query |\n| `GET` | `/v1/cost` | Cost tracker |\n| `GET` | `/v1/system` | CPU, RAM, GPU, and system snapshot |\n\n### Discovery\n\n| Method | Path | Purpose |\n| --- | --- | --- |\n| `GET` | `/v1/discovery` | Search or list the bundled capability catalog |\n| `GET` | `/v1/discovery/{id}` | Expand one stable capability entry |\n\n### Inference and chat\n\n| Method | Path | Purpose |\n| --- | --- | --- |\n| `GET` | `/v1/models` · `/api/tags` | Aggregated model list (OpenAI + Ollama tags) |\n| `POST` | `/v1/chat/completions` | OpenAI-compatible chat completion |\n| `POST` | `/v1/chat` | Stateful Omnius chat |\n| `POST` | `/api/chat` | Ollama-compatible chat alias |\n| `POST` | `/v1/generate` · `/api/generate` | One-shot generation (Ollama-compatible) |\n| `POST` | `/v1/embeddings` · `/api/embed` | Embeddings (OpenAI + Ollama aliases) |\n| `GET` | `/v1/chat/sessions` | Active chat sessions |\n| `POST` | `/v1/chat/check-in` | Steering check-in for active chat |\n\n### Agentic runs\n\n| Method | Path | Purpose |\n| --- | --- | --- |\n| `POST` | `/v1/run` | Submit agentic task |\n| `GET` | `/v1/runs` · `/v1/runs/{id}` | List runs · get run details |\n| `DELETE` | `/v1/runs/{id}` | Abort run |\n| `POST`/`GET` | `/v1/todos` | Create/update · list sessions with todos |\n| `GET`/`DELETE` | `/v1/todos/{session_id}` | Get · delete session todos |\n| `POST` | `/v1/evaluate` | Evaluate a run |\n| `POST` | `/v1/index` | Trigger repository indexing |\n\n### Configuration, keys, profiles, projects\n\n| Method | Path | Purpose |\n| --- | --- | --- |\n| `GET`/`PATCH` | `/v1/config` | Read · update daemon config |\n| `GET`/`PUT` | `/v1/config/model` | Current model · switch model |\n| `POST` | `/v1/config/model/check` | Probe model readiness |\n| `GET`/`PUT` | `/v1/config/endpoint` | Current endpoint · switch endpoint |\n| `POST` | `/v1/config/endpoint/test` | Probe endpoint |\n| `GET`/`DELETE` | `/v1/config/endpoint/history` | Endpoint history · remove item |\n| `POST` | `/v1/share/generate` | Generate remote-access share URL |\n| `GET`/`POST` | `/v1/keys` | List · mint runtime API keys |\n| `DELETE` | `/v1/keys/{prefix}` | Revoke runtime keys by prefix |\n| `GET`/`POST` | `/v1/profiles` | List · create tool profiles |\n| `GET`/`DELETE` | `/v1/profiles/{name}` | Get · delete profile |\n| `GET`/`DELETE` | `/v1/projects` | List · unregister projects |\n| `GET` | `/v1/projects/current` | Current project |\n| `POST` | `/v1/projects/switch` · `/v1/projects/register` · `/v1/projects/rename` | Switch · register · rename project |\n| `GET`/`PUT`/`DELETE` | `/v1/projects/preferences` | Read · patch · reset project preferences |\n\n### Skills, commands, tools, MCP\n\n| Method | Path | Purpose |\n| --- | --- | --- |\n| `GET` | `/v1/skills` · `/v1/skills/{name}` | List · load skill content |\n| `GET` | `/v1/commands` | List slash commands |\n| `POST` | `/v1/commands/{cmd}` | Execute slash command |\n| `GET` | `/v1/tools` · `/v1/tools/{name}` | List (built-in + external) · tool metadata |\n| `POST` | `/v1/tools/register` | Register an application-specific external tool |\n| `DELETE` | `/v1/tools/{name}` | Unregister an external tool |\n| `POST` | `/v1/tools/{name}/call` | Call tool |\n| `POST` | `/v1/tools/{name}/eval` | Evaluate an external tool against test cases |\n| `GET` | `/v1/mcps` · `/v1/mcps/{name}` | List · MCP server details |\n| `POST` | `/v1/mcps/{name}/call` | Call MCP tool |\n| `GET` | `/v1/hooks` · `/v1/agents` | Hook registry · agent type registry |\n| `GET` | `/v1/codegraph/snapshot` · `/v1/codegraph/events` | Code graph snapshot · SSE |\n\n### Registering application-specific tools\n\nAgents integrating Omnius into their own stack can register tools at runtime so the Omnius agent loop can call them alongside built-ins. Registration is a single unified contract — `transport.type` selects how Omnius reaches the implementation:\n\n- **`http`** — Omnius POSTs `{name, args, session_id}` to a `callback_url` your app hosts and relays the response.\n- **`mcp`** — the tool proxies to a named tool on an MCP server (auto-connected when you pass `connect`).\n\nRegistered tools are persisted per working directory (`.omnius/external-tools.json`), surface in `GET /v1/tools`, and respect the same scope/off-device security gate as built-ins. Registration needs `run` scope (remote callers need `admin`).\n\n```bash\n# Register an HTTP-backed tool\ncurl -s -X POST localhost:11435/v1/tools/register -H 'content-type: application/json' -d '{\n \"name\": \"lookup_order\",\n \"description\": \"Look up an order by id in the billing system\",\n \"parameters\": {\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"}},\"required\":[\"id\"]},\n \"security\": {\"requires_scope\":\"run\",\"risk\":\"low\"},\n \"transport\": {\"type\":\"http\",\"callback_url\":\"https://app.internal/tools/lookup_order\",\"auth_header\":\"Bearer …\"}\n}'\n\n# It now appears in the registry and is directly callable\ncurl -s localhost:11435/v1/tools/lookup_order\ncurl -s -X POST localhost:11435/v1/tools/lookup_order/call -H 'content-type: application/json' -d '{\"args\":{\"id\":\"A-1001\"}}'\n\n# Evaluate it against cases during development (pass/fail + metrics)\ncurl -s -X POST localhost:11435/v1/tools/lookup_order/eval -H 'content-type: application/json' -d '{\n \"cases\": [\n {\"name\":\"known order\",\"args\":{\"id\":\"A-1001\"},\"expect\":{\"success\":true,\"output_contains\":\"A-1001\"}},\n {\"name\":\"missing order\",\"args\":{\"id\":\"nope\"},\"expect\":{\"success\":false}}\n ]\n}'\n\n# Unregister when done\ncurl -s -X DELETE localhost:11435/v1/tools/lookup_order\n```\n\nThe same registration accepts an MCP transport, e.g. `\"transport\":{\"type\":\"mcp\",\"server\":\"acme\",\"tool\":\"search\",\"connect\":{\"url\":\"https://app.internal/mcp\",\"transport\":\"streamable-http\"}}`.\n\n### AIWG\n\n| Method | Path | Purpose |\n| --- | --- | --- |\n| `GET` | `/v1/aiwg` | AIWG root and control map |\n| `GET` | `/v1/aiwg/frameworks` · `/v1/aiwg/frameworks/{name}` · `/v1/aiwg/frameworks/{name}/content` | List · details · tier-aware content |\n| `GET` | `/v1/aiwg/skills` · `/v1/aiwg/skills/{name}` | List · load AIWG skill |\n| `GET` | `/v1/aiwg/agents` · `/v1/aiwg/agents/{name}` | List · load AIWG agent |\n| `GET` | `/v1/aiwg/addons` | List AIWG addons |\n| `POST` | `/v1/aiwg/use` · `/v1/aiwg/expand` | Activation bundle · expand item |\n\n### Memory, sessions, context\n\n| Method | Path | Purpose |\n| --- | --- | --- |\n| `GET` | `/v1/memory` | Memory backend summary |\n| `POST` | `/v1/memory/search` · `/v1/memory/write` | Search · write memory |\n| `GET` | `/v1/memory/episodes` · `/v1/memory/failures` | List episodes · failures |\n| `GET` | `/v1/sessions` · `/v1/sessions/{id}` | List task sessions · get history |\n| `GET` | `/v1/context` | Current context snapshot |\n| `GET` | `/v1/context/window-dumps` · `/v1/context/window-dumps/{id}` | List/fetch full outbound model context-window dumps |\n| `POST` | `/v1/context/save` · `/v1/context/compact` | Save entry · request compaction |\n| `GET` | `/v1/context/restore` | Build restore prompt |\n\nContext-window dumps are written for main agents, sub-agents, internal runners, and adversary audits before backend inference. Use `GET /v1/context/window-dumps?agent_type=main` for summaries with signal/noise metrics, or `GET /v1/context/window-dumps/latest` for the full request payload. Dumps include focus-supervisor state when the runner is enforcing a next-action contract. Set `OMNIUS_CONTEXT_WINDOW_DUMP_DIR` to relocate dumps, `OMNIUS_DISABLE_CONTEXT_WINDOW_DUMPS=1` to disable them, or `OMNIUS_FOCUS_SUPERVISOR=off|auto|strict` to tune small-model focus enforcement.\n\n### Files, nexus, ollama pool\n\n| Method | Path | Purpose |\n| --- | --- | --- |\n| `GET` | `/v1/files` | List workspace directory |\n| `POST` | `/v1/files/read` | Read workspace file |\n| `GET` | `/v1/nexus/status` | Nexus peer state |\n| `GET` | `/v1/sponsors` | Sponsor directory cache |\n| `GET` | `/v1/ollama/pool/processes` | Ollama process inventory |\n| `POST` | `/v1/ollama/pool/cleanup` | Cleanup stale Ollama pool processes |\n\n### Voice, audio, vision\n\n| Method | Path | Purpose |\n| --- | --- | --- |\n| `GET` | `/v1/voice/state` | Voice runtime status |\n| `POST` | `/v1/voice/start` · `/v1/voice/stop` | Enable/warm voice · pause voice input |\n| `GET`/`POST` | `/v1/voice/models` · `/v1/voice/models/switch` | List · switch and enable an exact TTS model |\n| `GET`/`POST` | `/v1/voice/supertonic-settings` | Read · update voice tuning |\n| `GET`/`POST` | `/v1/voice/asr-models` · `/v1/voice/asr-models/switch` | List · switch ASR model |\n| `POST` | `/v1/voice/tts` · `/v1/audio/speech` | Synthesize speech (+ OpenAI alias) |\n| `POST` | `/v1/voice/transcribe` · `/v1/audio/transcriptions` · `/v1/voice/transcribe/stream` | Transcribe (+ alias + streaming) |\n| `GET`/`POST` | `/v1/voice/clone-refs` | List · upload clone reference |\n| `POST` | `/v1/voice/clone-refs/upload` · `/v1/voice/clone-refs/from-url` | Upload · fetch clone reference |\n| `POST` | `/v1/voice/clone-refs/{filename}/activate` · `/v1/voice/clone-refs/{filename}/rename` | Activate · rename clone reference |\n| `DELETE` | `/v1/voice/clone-refs/{filename}` | Delete clone reference |\n| `POST` | `/v1/voice/speak` | Broadcast speech to voicechat clients |\n| `GET` | `/v1/voicechat/ws` | WebSocket upgrade for full-duplex voicechat |\n| `POST` | `/v1/vision/describe` | Vision describe placeholder |\n\nTTS requests auto-warm the daemon and never silently fall back to a different\nvoice. The built-in registry includes GLaDOS, Overwatch, and the packaged\n`luxtts:announcer-testchamber03` clone source. Voicebox defaults to its stable\nsub-model set; use `OMNIUS_VOICEBOX_MODELS=all` for the full suite or a\ncomma-separated list of `voicebox_*` IDs for an explicit subset.\n\n### Generative media\n\nBacked by the unified `~/.omnius` store and shared venvs (see [Shared Media Dependencies](#shared-media-dependencies)). Outputs land in the global gallery at `~/.omnius/media/{images,videos,audio,music}`.\n\n| Method | Path | Purpose |\n| --- | --- | --- |\n| `GET` | `/v1/media/models` | List available image/video/audio/music models |\n| `GET` | `/v1/media/store` | Unified store disk usage + reclaimable legacy caches |\n| `POST` | `/v1/media/migrate` | Dedup + migrate legacy per-group caches into the unified store |\n| `POST` | `/v1/media/image` · `/v1/media/video` · `/v1/media/audio` · `/v1/media/music` | Generate media (run scope) |\n| `GET` | `/v1/media/gallery` | List previously generated media (global, newest first) |\n| `GET` | `/v1/media/file` | Stream one generated media file |\n\n### Engines and scheduled jobs\n\n| Method | Path | Purpose |\n| --- | --- | --- |\n| `GET` | `/v1/engines` | Long-running engine status |\n| `GET` | `/v1/scheduled` · `/v1/scheduled/all` · `/v1/scheduled/status` | List · list all · scheduler status |\n| `POST` | `/v1/scheduled/kill` · `/v1/scheduled/fixup` · `/v1/scheduled/reconcile` | Kill · reconcile · force reconcile |\n| `GET` | `/v1/services/systemd` | Systemd service status |\n| `GET` | `/v1/update` | Self-update status |\n\n### AIMS governance (ISO/IEC 42001:2023)\n\n| Method | Path | Purpose |\n| --- | --- | --- |\n| `GET` | `/v1/aims` | AIMS root and endpoint index |\n| `GET`/`PUT` | `/v1/aims/policies` | Policy register · replace |\n| `GET` | `/v1/aims/roles` · `/v1/aims/resources` | Roles · resource inventory |\n| `GET`/`POST` | `/v1/aims/impact-assessments` | List · file impact assessment |\n| `GET` | `/v1/aims/lifecycle` · `/v1/aims/data-quality` · `/v1/aims/transparency` · `/v1/aims/usage` · `/v1/aims/suppliers` | Lifecycle, data quality, transparency, usage, suppliers |\n| `GET`/`POST` | `/v1/aims/incidents` | List · file incident |\n| `GET` | `/v1/aims/oversight` · `/v1/aims/decisions` · `/v1/aims/config-history` | Oversight gates · decision log · config history |\n\nFor per-endpoint schemas, parameters, and response shapes, see the served `/openapi.json` and the maintained inventory in [`docs/reference/rest-api.md`](docs/reference/rest-api.md).\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"
|
|
167
|
+
"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[](https://www.npmjs.com/package/omnius)\n[](https://nodejs.org/)\n[](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\nRegister the native system tray indicator (Linux, macOS, and Windows x64):\n\n```bash\nomnius tray install\nomnius tray status\n```\n\nThe per-login indicator observes the daemon over loopback and provides health,\ndashboard, logs, and explicit daemon controls. See the\n[system tray guide](docs/guides/system-tray.md), including Ubuntu/GNOME setup.\n\n## Agent Discovery\n\nThe npm package ships its complete documentation and a machine-readable\ncapability catalog. An agent does not need to inspect Omnius source or guess\nwhich endpoint owns a capability:\n\n```bash\nomnius discover \"bring your own inference\"\nomnius show workflow.choose-entrypoint\nomnius show layer.orchestration\nomnius show store.project\nomnius show provider.anthropic\nomnius show provider.gemini\nomnius show tool.web-search\nomnius discover \"osint research\"\nomnius show capability.osint-research\nomnius capabilities --json\n```\n\nWith the daemon running, begin at `GET /v1/discovery/bootstrap`. The same\ndiscovery cascade is available at `GET /v1/discovery`, with exact entry expansion at\n`GET /v1/discovery/{id}`. The live API contract remains available at\n`/openapi.json`, direct tool metadata at `/v1/tools`, and skills at\n`/v1/skills`.\n\nStart with [the discovery guide](docs/DISCOVERY.md) when integrating another\nagent or service, and use the [agent system map](docs/architecture/agent-system-map.md)\nto trace layers, modules, runtimes, and state ownership. Use [bring-your-own inference](docs/guides/bring-your-own-inference.md)\nfor provider protocols and keys, and [tools and web search](docs/guides/tools-and-web-search.md)\nfor the distinction between direct tools and agent-bound tools. The\n[categorized OSINT research guide](docs/guides/osint-research.md) documents\nthe local discover → exact expansion → explicit web-tool workflow.\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| Agent discovery | [Discovery cascade](docs/DISCOVERY.md), [machine catalog](docs/DISCOVERY.json), [agent integration](docs/guides/agent-integration.md) |\n| Bring your own inference | [Provider protocols and keys](docs/guides/bring-your-own-inference.md) |\n| Tools and web search | [Tool discovery and invocation](docs/guides/tools-and-web-search.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| System tray | [Cross-platform tray and Ubuntu setup](docs/guides/system-tray.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| Service compatibility | [Runtime version gate](docs/operations/version-compatibility.md) |\n| Architecture | [Architecture overview](docs/architecture/overview.md) |\n| Agent-explorable docs | [Agent memory docs index](docs/agent-memory/INDEX.md) |\n\n## Shared Media Dependencies\n\nImage, video, audio, and music generation share a **single, system-wide dependency store** instead of duplicating heavy runtimes per project or per Telegram group.\n\nEarlier builds wrote a private Python venv plus Hugging Face / Torch / pip caches under every scoped working directory (for example `…/telegram-creative/<group-id>/.omnius/image-gen/.venv`). On a busy machine the same multi-gigabyte diffusers stack and model weights were re-downloaded once per group — tens of gigabytes of pure duplication.\n\nEverything now resolves to one source of truth under `~/.omnius` (override with `OMNIUS_HOME`):\n\n| Location | Holds |\n| --- | --- |\n| `~/.omnius/runtimes/<kind>/.venv-<backend>` | One shared Python venv per kind+backend (image/video/audio) |\n| `~/.omnius/models/huggingface/{hub,transformers,diffusers}` | Shared model weights — downloaded once, reused everywhere |\n| `~/.omnius/models/{torch,cache,pip-cache}` | Shared Torch hub, XDG, and pip caches |\n| `~/.omnius/models/_meta.json` | LRU usage index for automatic disk-pressure eviction |\n| `~/.omnius/media/{images,videos,audio,music}` | Global generated-media gallery (project-independent) |\n\nProject directories keep only lightweight session artifacts; no venvs or model weights are written per project.\n\n**Migrate and dedup existing machines.** A one-time cleanup consolidates any legacy per-group caches into the unified store — unique weights are moved (never re-downloaded), duplicates and stale venvs are reclaimed:\n\n```bash\n# TUI — current project only\n/models cleanup\n# TUI — every project + nested scoped group on this machine (dry-run first)\n/models cleanup --all --dry-run\n/models cleanup --all\n```\n\n```bash\n# REST — preview, then apply\ncurl -s -X POST localhost:11435/v1/media/migrate -H 'content-type: application/json' -d '{\"dryRun\":true}'\ncurl -s -X POST localhost:11435/v1/media/migrate -H 'content-type: application/json' -d '{}'\n# Inspect store + reclaimable legacy caches\ncurl -s localhost:11435/v1/media/store\n```\n\n**Generate over REST.** The daemon (default `127.0.0.1:11435`, a port in the IANA dynamic/private range that avoids common system-service collisions) exposes the local generators so any user on the machine can list models, generate, and browse the global gallery without the CLI:\n\n```bash\ncurl -s localhost:11435/v1/media/models\ncurl -s -X POST localhost:11435/v1/media/image -H 'content-type: application/json' -d '{\"prompt\":\"a compact robot painter\"}'\ncurl -s -X POST localhost:11435/v1/media/music -H 'content-type: application/json' -d '{\"prompt\":\"warm lo-fi piano loop\"}'\ncurl -s localhost:11435/v1/media/gallery\n```\n\nThe same surface drives the **Generate** tab in the web UI (`http://127.0.0.1:11435`) — pick a kind (image/video/audio/music), choose a model loaded from the system, generate, and review every previously generated file in one global gallery.\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 the daemon (default `http://127.0.0.1:11435`; interactive docs at `/docs`, machine spec at `/openapi.json`):\n\n```bash\nomnius serve\n```\n\nFor shared deployments, gate access with scoped bearer keys (`read` < `run` < `admin`):\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# then: Authorization: Bearer <key>\n```\n\nThe complete endpoint inventory follows. It is kept in lockstep with the served OpenAPI spec by `pnpm docs:check`; the canonical machine contract is generated from [`packages/cli/src/api/openapi.ts`](packages/cli/src/api/openapi.ts) and mirrored in [`docs/reference/rest-api.md`](docs/reference/rest-api.md).\n\n### Docs and compatibility aliases\n\n| Method | Path | Purpose |\n| --- | --- | --- |\n| `GET` | `/docs` · `/api/docs` · `/swagger-ui` | Swagger UI |\n| `GET` | `/openapi.json` · `/openapi.yaml` · `/v3/api-docs` · `/swagger.json` · `/api-docs` | OpenAPI spec (JSON/YAML + aliases) |\n| `GET` | `/redoc` | ReDoc renderer |\n\n### Health and observability\n\n| Method | Path | Purpose |\n| --- | --- | --- |\n| `GET` | `/health` · `/health/ready` · `/health/startup` | Liveness, backend readiness, startup probes |\n| `GET` | `/version` | Package version and platform |\n| `GET` | `/metrics` | Prometheus metrics |\n| `GET` | `/v1/events` | Server-sent event stream |\n| `GET` | `/v1/usage` | Token usage and rate limits |\n| `GET` | `/v1/audit` | Audit log query |\n| `GET` | `/v1/cost` | Cost tracker |\n| `GET` | `/v1/system` | CPU, RAM, GPU, and system snapshot |\n\n### Discovery\n\n| Method | Path | Purpose |\n| --- | --- | --- |\n| `GET` | `/v1/discovery/bootstrap` | Compact agent bootstrap and start-here map |\n| `GET` | `/v1/discovery` | Search or list the bundled capability catalog |\n| `GET` | `/v1/discovery/{id}` | Expand one stable capability entry |\n\n### Inference and chat\n\n| Method | Path | Purpose |\n| --- | --- | --- |\n| `GET` | `/v1/models` · `/api/tags` | Aggregated model list (OpenAI + Ollama tags) |\n| `POST` | `/v1/chat/completions` | OpenAI-compatible chat completion |\n| `POST` | `/v1/chat` | Stateful Omnius chat |\n| `POST` | `/api/chat` | Ollama-compatible chat alias |\n| `POST` | `/v1/generate` · `/api/generate` | One-shot generation (Ollama-compatible) |\n| `POST` | `/v1/embeddings` · `/api/embed` | Embeddings (OpenAI + Ollama aliases) |\n| `GET` | `/v1/chat/sessions` | Active chat sessions |\n| `POST` | `/v1/chat/check-in` | Steering check-in for active chat |\n\n### Agentic runs\n\n| Method | Path | Purpose |\n| --- | --- | --- |\n| `POST` | `/v1/run` | Submit agentic task |\n| `GET` | `/v1/runs` · `/v1/runs/{id}` | List runs · get run details |\n| `DELETE` | `/v1/runs/{id}` | Abort run |\n| `POST`/`GET` | `/v1/todos` | Create/update · list sessions with todos |\n| `GET`/`DELETE` | `/v1/todos/{session_id}` | Get · delete session todos |\n| `POST` | `/v1/evaluate` | Evaluate a run |\n| `POST` | `/v1/index` | Trigger repository indexing |\n\n### Configuration, keys, profiles, projects\n\n| Method | Path | Purpose |\n| --- | --- | --- |\n| `GET`/`PATCH` | `/v1/config` | Read · update daemon config |\n| `GET`/`PUT` | `/v1/config/model` | Current model · switch model |\n| `POST` | `/v1/config/model/check` | Probe model readiness |\n| `GET`/`PUT` | `/v1/config/endpoint` | Current endpoint · switch endpoint |\n| `POST` | `/v1/config/endpoint/test` | Probe endpoint |\n| `GET`/`DELETE` | `/v1/config/endpoint/history` | Endpoint history · remove item |\n| `POST` | `/v1/share/generate` | Generate remote-access share URL |\n| `GET`/`POST` | `/v1/keys` | List · mint runtime API keys |\n| `DELETE` | `/v1/keys/{prefix}` | Revoke runtime keys by prefix |\n| `GET`/`POST` | `/v1/profiles` | List · create tool profiles |\n| `GET`/`DELETE` | `/v1/profiles/{name}` | Get · delete profile |\n| `GET`/`DELETE` | `/v1/projects` | List · unregister projects |\n| `GET` | `/v1/projects/current` | Current project |\n| `POST` | `/v1/projects/switch` · `/v1/projects/register` · `/v1/projects/rename` | Switch · register · rename project |\n| `GET`/`PUT`/`DELETE` | `/v1/projects/preferences` | Read · patch · reset project preferences |\n\n### Skills, commands, tools, MCP\n\n| Method | Path | Purpose |\n| --- | --- | --- |\n| `GET` | `/v1/skills` · `/v1/skills/{name}` | List · load skill content |\n| `GET` | `/v1/commands` | List slash commands |\n| `POST` | `/v1/commands/{cmd}` | Execute slash command |\n| `GET` | `/v1/tools` · `/v1/tools/{name}` | List (built-in + external) · tool metadata |\n| `POST` | `/v1/tools/register` | Register an application-specific external tool |\n| `DELETE` | `/v1/tools/{name}` | Unregister an external tool |\n| `POST` | `/v1/tools/{name}/call` | Call tool |\n| `POST` | `/v1/tools/{name}/eval` | Evaluate an external tool against test cases |\n| `GET` | `/v1/mcps` · `/v1/mcps/{name}` | List · MCP server details |\n| `POST` | `/v1/mcps/{name}/call` | Call MCP tool |\n| `GET` | `/v1/hooks` · `/v1/agents` | Hook registry · agent type registry |\n| `GET` | `/v1/codegraph/snapshot` · `/v1/codegraph/events` | Code graph snapshot · SSE |\n\n### Registering application-specific tools\n\nAgents integrating Omnius into their own stack can register tools at runtime so the Omnius agent loop can call them alongside built-ins. Registration is a single unified contract — `transport.type` selects how Omnius reaches the implementation:\n\n- **`http`** — Omnius POSTs `{name, args, session_id}` to a `callback_url` your app hosts and relays the response.\n- **`mcp`** — the tool proxies to a named tool on an MCP server (auto-connected when you pass `connect`).\n\nRegistered tools are persisted per working directory (`.omnius/external-tools.json`), surface in `GET /v1/tools`, and respect the same scope/off-device security gate as built-ins. Registration needs `run` scope (remote callers need `admin`).\n\n```bash\n# Register an HTTP-backed tool\ncurl -s -X POST localhost:11435/v1/tools/register -H 'content-type: application/json' -d '{\n \"name\": \"lookup_order\",\n \"description\": \"Look up an order by id in the billing system\",\n \"parameters\": {\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"}},\"required\":[\"id\"]},\n \"security\": {\"requires_scope\":\"run\",\"risk\":\"low\"},\n \"transport\": {\"type\":\"http\",\"callback_url\":\"https://app.internal/tools/lookup_order\",\"auth_header\":\"Bearer …\"}\n}'\n\n# It now appears in the registry and is directly callable\ncurl -s localhost:11435/v1/tools/lookup_order\ncurl -s -X POST localhost:11435/v1/tools/lookup_order/call -H 'content-type: application/json' -d '{\"args\":{\"id\":\"A-1001\"}}'\n\n# Evaluate it against cases during development (pass/fail + metrics)\ncurl -s -X POST localhost:11435/v1/tools/lookup_order/eval -H 'content-type: application/json' -d '{\n \"cases\": [\n {\"name\":\"known order\",\"args\":{\"id\":\"A-1001\"},\"expect\":{\"success\":true,\"output_contains\":\"A-1001\"}},\n {\"name\":\"missing order\",\"args\":{\"id\":\"nope\"},\"expect\":{\"success\":false}}\n ]\n}'\n\n# Unregister when done\ncurl -s -X DELETE localhost:11435/v1/tools/lookup_order\n```\n\nThe same registration accepts an MCP transport, e.g. `\"transport\":{\"type\":\"mcp\",\"server\":\"acme\",\"tool\":\"search\",\"connect\":{\"url\":\"https://app.internal/mcp\",\"transport\":\"streamable-http\"}}`.\n\n### AIWG\n\n| Method | Path | Purpose |\n| --- | --- | --- |\n| `GET` | `/v1/aiwg` | AIWG root and control map |\n| `GET` | `/v1/aiwg/frameworks` · `/v1/aiwg/frameworks/{name}` · `/v1/aiwg/frameworks/{name}/content` | List · details · tier-aware content |\n| `GET` | `/v1/aiwg/skills` · `/v1/aiwg/skills/{name}` | List · load AIWG skill |\n| `GET` | `/v1/aiwg/agents` · `/v1/aiwg/agents/{name}` | List · load AIWG agent |\n| `GET` | `/v1/aiwg/addons` | List AIWG addons |\n| `POST` | `/v1/aiwg/use` · `/v1/aiwg/expand` | Activation bundle · expand item |\n\n### Memory, sessions, context\n\n| Method | Path | Purpose |\n| --- | --- | --- |\n| `GET` | `/v1/memory` | Memory backend summary |\n| `POST` | `/v1/memory/search` · `/v1/memory/write` | Search · write memory |\n| `GET` | `/v1/memory/episodes` · `/v1/memory/failures` | List episodes · failures |\n| `GET` | `/v1/sessions` · `/v1/sessions/{id}` | List task sessions · get history |\n| `GET` | `/v1/context` | Current context snapshot |\n| `GET` | `/v1/context/window-dumps` · `/v1/context/window-dumps/{id}` | List/fetch full outbound model context-window dumps |\n| `POST` | `/v1/context/save` · `/v1/context/compact` | Save entry · request compaction |\n| `GET` | `/v1/context/restore` | Build restore prompt |\n\nContext-window dumps are written for main agents, sub-agents, internal runners, and adversary audits before backend inference. Use `GET /v1/context/window-dumps?agent_type=main` for summaries with signal/noise metrics, or `GET /v1/context/window-dumps/latest` for the full request payload. Dumps include focus-supervisor state when the runner is enforcing a next-action contract. Set `OMNIUS_CONTEXT_WINDOW_DUMP_DIR` to relocate dumps, `OMNIUS_DISABLE_CONTEXT_WINDOW_DUMPS=1` to disable them, or `OMNIUS_FOCUS_SUPERVISOR=off|auto|strict` to tune small-model focus enforcement.\n\n### Files, nexus, ollama pool\n\n| Method | Path | Purpose |\n| --- | --- | --- |\n| `GET` | `/v1/files` | List workspace directory |\n| `POST` | `/v1/files/read` | Read workspace file |\n| `GET` | `/v1/nexus/status` | Nexus peer state |\n| `GET` | `/v1/sponsors` | Sponsor directory cache |\n| `GET` | `/v1/ollama/pool/processes` | Ollama process inventory |\n| `POST` | `/v1/ollama/pool/cleanup` | Cleanup stale Ollama pool processes |\n\n### Voice, audio, vision\n\n| Method | Path | Purpose |\n| --- | --- | --- |\n| `GET` | `/v1/voice/state` | Voice runtime status |\n| `POST` | `/v1/voice/start` · `/v1/voice/stop` | Enable/warm voice · pause voice input |\n| `GET`/`POST` | `/v1/voice/models` · `/v1/voice/models/switch` | List · switch and enable an exact TTS model |\n| `GET`/`POST` | `/v1/voice/supertonic-settings` | Read · update voice tuning |\n| `GET`/`PATCH` | `/v1/asr/engines` · `/v1/asr/selection` | List readiness/capabilities · select exact ASR engine/model |\n| `POST` | `/v1/asr/activate` · `/v1/asr/engines/{engineId}/setup` | Activate · install pinned ASR runtime/weights |\n| `POST` | `/v1/asr/transcriptions` · `/v1/asr/test` | Transcribe · test the selected ASR backend |\n| `POST` | `/v1/voice/tts` · `/v1/audio/speech` | Synthesize speech (+ OpenAI alias) |\n| `POST` | `/v1/voice/transcribe` · `/v1/audio/transcriptions` · `/v1/voice/transcribe/stream` | Transcribe (+ alias + isolated final SSE) |\n| `GET`/`POST` | `/v1/voice/clone-refs` | List · upload clone reference |\n| `POST` | `/v1/voice/clone-refs/upload` · `/v1/voice/clone-refs/from-url` | Upload · fetch clone reference |\n| `POST` | `/v1/voice/clone-refs/{filename}/activate` · `/v1/voice/clone-refs/{filename}/rename` | Activate · rename clone reference |\n| `DELETE` | `/v1/voice/clone-refs/{filename}` | Delete clone reference |\n| `POST` | `/v1/voice/speak` | Broadcast speech to voicechat clients |\n| `GET` | `/v1/voicechat/ws` | WebSocket upgrade for full-duplex voicechat |\n| `POST` | `/v1/vision/describe` | Vision describe placeholder |\n\nTTS requests auto-warm the daemon and never silently fall back to a different\nvoice. The built-in registry includes GLaDOS, Overwatch, and the packaged\n`luxtts:announcer-testchamber03` clone source. Voicebox defaults to its stable\nsub-model set; use `OMNIUS_VOICEBOX_MODELS=all` for the full suite or a\ncomma-separated list of `voicebox_*` IDs for an explicit subset.\n\nASR is a separate multi-engine registry: Whisper, managed transcribe-cli,\nNemotron readiness, and pinned `microsoft/VibeVoice-ASR`. VibeVoice is a\nfile/final backend (not incremental PCM) with up to 60-minute transcription,\nspeaker diarization, timestamps, and optional context/hotwords. Its ~17.35 GB\nweights are installed into the unified ASR cache on demand and never bundled\nin npm; activation is CUDA-only and fails closed unless the exact GPU is\nverified through `nvidia-smi` (discrete Linux) or `tegrastats` plus CUDA Torch\ndevice properties (Jetson/L4T).\n\n### Generative media\n\nBacked by the unified `~/.omnius` store and shared venvs (see [Shared Media Dependencies](#shared-media-dependencies)). Outputs land in the global gallery at `~/.omnius/media/{images,videos,audio,music}`.\n\n| Method | Path | Purpose |\n| --- | --- | --- |\n| `GET` | `/v1/media/models` | List available image/video/audio/music models |\n| `GET` | `/v1/media/store` | Unified store disk usage + reclaimable legacy caches |\n| `POST` | `/v1/media/migrate` | Dedup + migrate legacy per-group caches into the unified store |\n| `POST` | `/v1/media/image` · `/v1/media/video` · `/v1/media/audio` · `/v1/media/music` | Generate media (run scope) |\n| `GET` | `/v1/media/gallery` | List previously generated media (global, newest first) |\n| `GET` | `/v1/media/file` | Stream one generated media file |\n\n### Engines and scheduled jobs\n\n| Method | Path | Purpose |\n| --- | --- | --- |\n| `GET` | `/v1/engines` | Long-running engine status |\n| `GET` | `/v1/scheduled` · `/v1/scheduled/all` · `/v1/scheduled/status` | List · list all · scheduler status |\n| `POST` | `/v1/scheduled/kill` · `/v1/scheduled/fixup` · `/v1/scheduled/reconcile` | Kill · reconcile · force reconcile |\n| `GET` | `/v1/services/systemd` | Systemd service status |\n| `GET` | `/v1/update` | Self-update status |\n\n### AIMS governance (ISO/IEC 42001:2023)\n\n| Method | Path | Purpose |\n| --- | --- | --- |\n| `GET` | `/v1/aims` | AIMS root and endpoint index |\n| `GET`/`PUT` | `/v1/aims/policies` | Policy register · replace |\n| `GET` | `/v1/aims/roles` · `/v1/aims/resources` | Roles · resource inventory |\n| `GET`/`POST` | `/v1/aims/impact-assessments` | List · file impact assessment |\n| `GET` | `/v1/aims/lifecycle` · `/v1/aims/data-quality` · `/v1/aims/transparency` · `/v1/aims/usage` · `/v1/aims/suppliers` | Lifecycle, data quality, transparency, usage, suppliers |\n| `GET`/`POST` | `/v1/aims/incidents` | List · file incident |\n| `GET` | `/v1/aims/oversight` · `/v1/aims/decisions` · `/v1/aims/config-history` | Oversight gates · decision log · config history |\n\nFor per-endpoint schemas, parameters, and response shapes, see the served `/openapi.json` and the maintained inventory in [`docs/reference/rest-api.md`](docs/reference/rest-api.md).\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"
|
|
165
168
|
}
|
package/templates/OMNIUS.md
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
<!-- omnius:discovery:start -->
|
|
2
|
-
# Omnius
|
|
2
|
+
# Omnius Agent Guide
|
|
3
3
|
|
|
4
|
-
This project uses Omnius.
|
|
4
|
+
This project uses Omnius. Search the installed discovery contract before
|
|
5
|
+
guessing a command, route, tool, provider, state path, or source owner:
|
|
5
6
|
|
|
6
7
|
```bash
|
|
7
8
|
omnius discover "your task"
|
|
@@ -10,11 +11,34 @@ omnius docs
|
|
|
10
11
|
omnius capabilities --json
|
|
11
12
|
```
|
|
12
13
|
|
|
13
|
-
|
|
14
|
-
`
|
|
15
|
-
|
|
14
|
+
Start with `workflow.choose-entrypoint`, then expand the relevant `layer.*`,
|
|
15
|
+
`module.*`, `runtime.*`, `store.*`, or task-specific `workflow.*` entry.
|
|
16
|
+
|
|
17
|
+
| Need | Use |
|
|
18
|
+
| --- | --- |
|
|
19
|
+
| Interactive chat and human-only slash commands | `omnius` |
|
|
20
|
+
| One foreground coding task | `omnius "<task>"` |
|
|
21
|
+
| Stateful daemon conversation | `POST /v1/chat` |
|
|
22
|
+
| Long task with ID, events, polling, and cancel | `POST /v1/run` |
|
|
23
|
+
| OpenAI-compatible client | `POST /v1/chat/completions` |
|
|
24
|
+
| One direct tool | Only the exact `rest-call` interface returned by tool metadata |
|
|
25
|
+
|
|
26
|
+
For a running daemon, bootstrap from `GET /v1/discovery/bootstrap`, then check
|
|
27
|
+
`GET /version`, `GET /health/ready`, `GET /openapi.json`, and the relevant live
|
|
28
|
+
registry such as `GET /v1/tools`. Send `X-Omnius-Min-Version` on execution
|
|
29
|
+
requests so a stale runtime fails before creating work.
|
|
30
|
+
|
|
31
|
+
State is deliberately split: project sessions/tasks/context belong in
|
|
32
|
+
`<project>/.omnius`; daemon identity, credentials, managed runtimes, and shared
|
|
33
|
+
model/media storage belong in `~/.omnius`. Resolve the active workspace before
|
|
34
|
+
touching project state, and never emit secrets from global state.
|
|
16
35
|
|
|
17
36
|
`web_search` is agent-bound: inspect `GET /v1/tools/web_search`, then use
|
|
18
37
|
`/v1/run`, `/v1/chat`, or `/v1/chat/completions` with
|
|
19
38
|
`agent_loop:true` and `include_daemon_tools:["read"]`.
|
|
39
|
+
|
|
40
|
+
Never infer REST exposure from a slash command or direct-call exposure from a
|
|
41
|
+
tool name. Treat queued/accepted as non-terminal; verify the observable result.
|
|
42
|
+
Small-context agents should expand one workflow and its references. Maintainer
|
|
43
|
+
agents should also expand the owning layer/module and run discovery freshness.
|
|
20
44
|
<!-- omnius:discovery:end -->
|