omnius 1.0.869 → 1.0.870

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.
Files changed (26) hide show
  1. package/README.md +48 -840
  2. package/dist/index.js +2 -2
  3. package/dist/tui/native/worker.js +11 -0
  4. package/docs/DISCOVERY.json +778 -109
  5. package/docs/DISCOVERY.md +19 -1
  6. package/docs/design/single-final-response-TODO.md +93 -0
  7. package/docs/reference/rest-api.md +17 -5
  8. package/docs/work-orders/evidence/final-reply-browser-20261016.json +1225 -0
  9. package/docs/work-orders/evidence/final-reply-dark-1440-accepted-final.png +0 -0
  10. package/docs/work-orders/evidence/final-reply-light-320-accepted-final.png +0 -0
  11. package/docs/work-orders/evidence/instrument-completion-live-20261016/completion-failed-partial.png +0 -0
  12. package/docs/work-orders/evidence/instrument-completion-live-20261016/completion-final-100x30.png +0 -0
  13. package/docs/work-orders/evidence/instrument-completion-live-20261016/completion-final-120x36.png +0 -0
  14. package/docs/work-orders/evidence/instrument-completion-live-20261016/completion-final-160x48.png +0 -0
  15. package/docs/work-orders/evidence/instrument-completion-live-20261016/completion-final-60x20.png +0 -0
  16. package/docs/work-orders/evidence/instrument-completion-live-20261016/completion-final-80x24.png +0 -0
  17. package/docs/work-orders/evidence/instrument-completion-live-20261016/completion-final-clean.png +0 -0
  18. package/docs/work-orders/evidence/instrument-completion-live-20261016/completion-live-clean.png +0 -0
  19. package/docs/work-orders/evidence/instrument-completion-live-20261016/completion-paused-partial.png +0 -0
  20. package/docs/work-orders/evidence/instrument-completion-live-20261016/completion-restored-clean.png +0 -0
  21. package/docs/work-orders/evidence/instrument-completion-live-20261016/completion-technical-expanded.png +0 -0
  22. package/docs/work-orders/evidence/instrument-completion-live-20261016/report.json +743 -0
  23. package/docs/work-orders/evidence/native-completion-presentation-verification-20261016.json +65 -0
  24. package/docs/work-orders/evidence/tui-response-ownership-verification-20261016.json +79 -0
  25. package/npm-shrinkwrap.json +2 -2
  26. package/package.json +2 -2
package/README.md CHANGED
@@ -1,893 +1,101 @@
1
1
  # Omnius
2
2
 
3
- Omnius 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.
3
+ Omnius is a local-first runtime for AI-assisted software development and generative work. It brings a terminal interface, browser dashboard, automation API, agent execution, memory, and media tools into one workspace-oriented system.
4
4
 
5
- It 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.
5
+ Omnius connects to local and remote model providers. Projects retain their own sessions and generated artifacts, while model weights and runtime dependencies are shared across workspaces.
6
6
 
7
7
  [![npm](https://img.shields.io/npm/v/omnius.svg)](https://www.npmjs.com/package/omnius)
8
8
  [![Node](https://img.shields.io/badge/node-%3E%3D22-brightgreen.svg)](https://nodejs.org/)
9
- [![License](https://img.shields.io/badge/license-CC--BY--NC--4.0-blue.svg)](LICENSE)
9
+ [![License](https://img.shields.io/badge/license-CC--BY--NC--4.0-blue.svg)](https://creativecommons.org/licenses/by-nc/4.0/)
10
10
 
11
- ## Install
11
+ ## Get started
12
+
13
+ Requires Node.js 22 or newer and npm 10 or newer.
12
14
 
13
15
  ```bash
14
16
  npm install -g omnius
15
17
  omnius
16
18
  ```
17
19
 
18
- With no inference profile selected, Omnius starts with **Built-in free** models.
19
- No API key or local model download is required. It selects the highest-ranked
20
- compatible free model from the current catalog and retains a known default
21
- when catalog discovery is temporarily unavailable. Use `/model` to choose among
22
- the built-in free models and models on your configured endpoint. Existing local
23
- and cloud profiles are preserved, including temporarily offline endpoints.
24
-
25
- Automatic fallback tries compatible alternatives within its time and rate-limit
26
- bounds. External services can still be unavailable; Omnius reports exhaustion
27
- without claiming a successful answer. `/fallback manual` asks before switching
28
- to an alternative after the selected endpoint or model fails.
29
-
30
- Use `/setup` for optional provider configuration, `/free` inside setup to return
31
- to built-in free inference, or `/setup local` for local model setup. Setup asks
32
- for a key only when you choose a provider that requires one. Keys stay local;
33
- the setup helper sees opaque references, and only the selected provider receives
34
- its key for the connection check. Local model downloads remain an explicit choice.
35
-
36
- The base install is compiler-free: a fresh machine does not need `make`, a C++
37
- toolchain, or Python just to install and launch Omnius. The installer provisions
38
- the AIWG companion separately without its optional native semantic-index addon,
39
- so an unavailable native build cannot roll back the Omnius CLI.
40
-
41
- If npm succeeds but a new terminal reports `omnius: command not found`, inspect
42
- the global prefix and add its command directory to `PATH`:
43
-
44
- ```bash
45
- npm prefix -g
46
- export PATH="$(npm prefix -g)/bin:$PATH"
47
- hash -r
48
- omnius --version
49
- ```
50
-
51
- Persist that export in the profile used by your shell, or open a new terminal
52
- after an nvm/fnm setup change. `npx omnius@latest` is an immediate fallback.
53
-
54
- Requirements:
55
-
56
- - Node.js 22 or newer
57
- - npm 10 or newer for published CLI use
58
- - pnpm 9 or newer for workspace development
59
- - Internet access for built-in free inference, or a configured local model or remote endpoint
60
-
61
- Start the REST daemon:
62
-
63
- ```bash
64
- omnius serve
65
- ```
66
-
67
- The daemon defaults to `http://127.0.0.1:11435`. Open the interactive API docs at `http://127.0.0.1:11435/docs`.
68
-
69
- Register the native system tray indicator (Linux, macOS, and Windows x64):
70
-
71
- ```bash
72
- omnius tray install
73
- omnius tray status
74
- ```
75
-
76
- The per-login indicator observes the daemon over loopback, checks health and npm
77
- updates every 10 seconds, and provides dashboard, logs, and explicit daemon
78
- controls. Its version row is passive when current and becomes a verified global
79
- update action only when a newer exact semver is available. See the
80
- [system tray guide](docs/guides/system-tray.md), including Ubuntu/GNOME setup.
20
+ Use `/setup` to configure inference and `/help` to explore terminal commands. See [installation](docs/getting-started/install.md), [first run](docs/getting-started/first-run.md), and [model providers](docs/getting-started/model-providers.md) for setup details.
81
21
 
82
- ## Agent Discovery
83
-
84
- The npm package ships its complete documentation and a machine-readable
85
- capability catalog. An agent does not need to inspect Omnius source or guess
86
- which endpoint owns a capability:
22
+ To open the browser dashboard and API:
87
23
 
88
24
  ```bash
89
- omnius discover "bring your own inference"
90
- omnius show workflow.choose-entrypoint
91
- omnius show layer.orchestration
92
- omnius show store.project
93
- omnius show provider.anthropic
94
- omnius show provider.gemini
95
- omnius show tool.web-search
96
- omnius discover "evidence-bound decision impasse"
97
- omnius show tool.adjudicate
98
- omnius discover "osint research"
99
- omnius show capability.osint-research
100
- omnius capabilities --json
101
- ```
102
-
103
- With the daemon running, begin at `GET /v1/discovery/bootstrap`. The same
104
- discovery cascade is available at `GET /v1/discovery`, with exact entry expansion at
105
- `GET /v1/discovery/{id}`. The live API contract remains available at
106
- `/openapi.json`, direct tool metadata at `/v1/tools`, and skills at
107
- `/v1/skills`.
108
-
109
- Start with [the discovery guide](docs/DISCOVERY.md) when integrating another
110
- agent or service, and use the [agent system map](docs/architecture/agent-system-map.md)
111
- to trace layers, modules, runtimes, and state ownership. Use [bring-your-own inference](docs/guides/bring-your-own-inference.md)
112
- for provider protocols and keys, and [tools and web search](docs/guides/tools-and-web-search.md)
113
- for the distinction between direct tools and agent-bound tools. The
114
- [evidence-bound adjudication guide](docs/ADJUDICATION.md) explains how a
115
- top-level full agent freezes an admissible record, isolates a genuine decision
116
- impasse from accumulated working context, fans review out across fresh
117
- evidence-scoped constituents, validates evidence citations and quorum, and
118
- produces a durable verdict receipt. Top-level runtimes execute constituents in
119
- a dedicated `full_sub_agent` process profile that cannot load tools, project
120
- context, memory, or the ambient parent environment. The process runs outside
121
- the project directory. Cancellation and deadlines terminate its child processes;
122
- ordinary child transport failure is recorded before bounded direct fallback.
123
- Planner schema drift uses a deterministic question-framing fallback, and
124
- durable artifact replay verifies the case, findings, verdict, and receipt
125
- hashes without new inference. The
126
- [categorized OSINT research guide](docs/guides/osint-research.md) documents
127
- the local discover → exact expansion → explicit web-tool workflow.
128
-
129
- ## What Omnius Does
130
-
131
- - Runs autonomous coding tasks, edits files, executes tools, tests changes, and iterates on failures.
132
- - Resolves genuine decision impasses in fresh evidence-scoped contexts that reduce parent-context anchoring, with host-validated citations, quorum, preserved dissent, and durable verdict receipts.
133
- - Provides a dense terminal UI for model selection, endpoint routing, task control, shell output, voice, sponsors, Telegram, and system telemetry.
134
- - Exposes a REST daemon with OpenAI/Ollama-compatible inference, agentic task execution, memory, skills, tools, MCP, events, voice, projects, and governance endpoints.
135
- - Routes models through local, cloud, sponsor, and peer-to-peer endpoints without assuming local Ollama is the only source.
136
- - Supports realtime spoken conversation for ASR/TTS clients through `/realtime` and REST `realtime: true`.
137
- - Supports image, video, sound, music, TTS, ASR, voice clone references, Telegram media workflows, and sponsor-provided media generation.
138
- - Keeps project runtime state in `.omnius/`, which is intentionally ignored by git.
139
-
140
- ## Common Workflows
141
-
142
- For large PDF collections, Omnius retains originals in a durable scoped index
143
- and processes ordering, manipulation, summary and extraction in resumable steps.
144
- See the [PDF collections guide](docs/guides/pdf-collections.md) for coverage,
145
- source provenance, numeric checks and complete delivery of large results.
146
-
147
- ```bash
148
- omnius "inspect this repo and summarize the main entrypoints"
149
25
  omnius serve
150
26
  ```
151
27
 
152
- ```text
153
- /help command help
154
- /model select or inspect the active model
155
- /endpoint select or configure local, cloud, sponsor, or peer endpoints
156
- /title name the current session
157
- /realtime toggle short ASR/TTS-oriented conversation mode
158
- /voice choose TTS, voice-clone, voicechat, and ASR controls
159
- /voice asr select, set up, activate, or test an exact ASR engine/model
160
- /indicator reconcile the daemon, then start the native tray indicator
161
- /update check force an update availability check
162
- /update quick run the verified global update with live TUI progress
163
- /update full run the full clean/build/install/restart verification flow
164
- /broker inspect model broker, RAM/VRAM thresholds, and loaded models
165
- /sponsor expose local or upstream capacity to peers
166
- /cohere participate in distributed COHERE inference
167
- /telegram configure or toggle the Telegram bridge
168
- /skills list explorable skills and docs memories
169
- /pause pause after the current turn boundary
170
- /stop interrupt the active run
171
- /resume resume saved state
172
- ```
173
-
174
- ## Current Feature Areas
175
-
176
- | Area | What to read |
177
- | --- | --- |
178
- | 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) |
179
- | Agent discovery | [Discovery cascade](docs/DISCOVERY.md), [machine catalog](docs/DISCOVERY.json), [agent integration](docs/guides/agent-integration.md) |
180
- | Bring your own inference | [Provider protocols and keys](docs/guides/bring-your-own-inference.md) |
181
- | Tools and web search | [Tool discovery and invocation](docs/guides/tools-and-web-search.md) |
182
- | Evidence-bound adjudication | [Adjudication tool, panel workflow, verdict contract, and harness](docs/ADJUDICATION.md) |
183
- | Terminal workflows | [TUI workflows](docs/guides/tui-workflows.md), [Slash commands](docs/reference/slash-commands.md) |
184
- | Web dashboard | [All dashboard routes, workspaces, sessions, Voice, Generate, updates, and observability](docs/guides/dashboard.md) |
185
- | REST daemon | [REST reference](docs/reference/rest-api.md), [REST quickref](docs/rest/QUICKREF.md), [OpenAPI source](docs/rest/openapi-source.md) |
186
- | System tray | [Cross-platform tray and Ubuntu setup](docs/guides/system-tray.md) |
187
- | Realtime voice chat | [Realtime guide](docs/guides/realtime.md) |
188
- | TTS and selectable ASR | [Voice/vision REST guide](docs/rest/endpoints/voice-vision.md), [Dashboard Voice page](docs/guides/dashboard.md#voice-and-asr) |
189
- | Sponsor and COHERE mesh | [Sponsor and COHERE guide](docs/guides/sponsor-and-cohere.md) |
190
- | Telegram bridge | [Telegram guide](docs/guides/telegram.md) |
191
- | Media generation | [Media guide](docs/guides/media-generation.md) |
192
- | Operations | [Runtime hygiene](docs/operations/runtime-hygiene.md), [Security and remote access](docs/operations/security-and-remote-access.md) |
193
- | Service compatibility | [Runtime version gate](docs/operations/version-compatibility.md) |
194
- | Architecture | [Architecture overview](docs/architecture/overview.md) |
195
- | Agent-explorable docs | [Agent memory docs index](docs/agent-memory/INDEX.md) |
196
-
197
- ## Web Dashboard
198
-
199
- `omnius serve` exposes a self-contained operational dashboard at
200
- `http://127.0.0.1:11435/`. All pages use the same compact NOCLIP-derived style
201
- tokens and responsive observability-card grid, while keeping workspace, model,
202
- session, run, service, and update state visible instead of hiding it behind
203
- decorative pages.
204
-
205
- | Route | Purpose |
206
- | --- | --- |
207
- | `/chat` (`/`) | Stateful browser and imported TUI chats, full-history hydration, live run recovery, attachments, files, plan/context, and steering check-ins |
208
- | `/agent` | One-shot task contracts, personas/profiles, tool/isolation controls, run records, output, and events |
209
- | `/voice` | Voicechat, exact TTS model/options, clone references, ASR engine/model setup and activation, real-file ASR testing, transcript, and TTS testing |
210
- | `/generate` | Image/video/audio/music jobs, AV analysis, model/store controls, relocation progress, and global gallery |
211
- | `/projects` | Scan, register, rename, activate, and remove workspaces |
212
- | `/dashboard` (`/jobs`) | CPU/RAM/GPU/VRAM, processes, scheduler, services, usage, and verified updates |
213
- | `/activity` | Live run/tool/memory/engine event observability |
214
- | `/discover` | Agent bootstrap, capability intent search, and exact entry expansion |
215
- | `/settings` (`/config`) | Models, endpoints, voice, runtime, access, keys, appearance, and services |
216
-
217
- The clickable sidebar brand opens the registered-workspace picker. Workspace
218
- selection scopes preferences, files, session history, chat pins/folders/search,
219
- and agent defaults. Chats, TUI visual history, and one-shot agent runs are
220
- distinct records: `/quit`, `/exit`, manual-save noise, empty histories, and
221
- duplicate TUI transcripts are rejected from the chat projection; selecting a
222
- valid session loads its full history and in-flight status from the daemon.
223
- The chat top bar also reports the effective API base path and authentication
224
- mode. Streams retain split frames, Stop terminates the daemon-owned process
225
- lease, and assistant-provided web/file links stay inert until the daemon
226
- returns a validation receipt.
227
-
228
- The dashboard checks for updates every 10 seconds. An update button appears only
229
- for a newer exact semver and drives `POST /v1/update`, then polls the durable
230
- transaction until the global npm package, resolved executable, restarted daemon,
231
- package/boot hashes, and tray runtime are reconciled. See the
232
- [complete dashboard guide](docs/guides/dashboard.md) for state ownership,
233
- security, page-by-page behavior, and exact REST flows.
234
-
235
- ## Terminal Over SSH
236
-
237
- The TUI paints for a local terminal, where a full-area repaint costs nothing.
238
- Over a network the same cadence has to share the link with your keystrokes, so
239
- Omnius detects a remote session (`SSH_TTY` / `SSH_CONNECTION` / `SSH_CLIENT`)
240
- and paces itself: decorative chrome animates slower, a wheel-scroll burst is
241
- collapsed into a single repaint, unchanged footer frames are not re-sent, and
242
- the mouse filter allows more time for escape sequences split across packets.
243
- Nothing changes about how the TUI looks, and local sessions are unaffected.
244
-
245
- Detection is environment-based, so it can miss a session where those variables
246
- do not reach the process — most often tmux or mosh, whose panes may inherit a
247
- stale environment from the server. Force the profile when that happens:
248
-
249
- ```bash
250
- OMNIUS_TUI_PACING=remote omnius # pace for a network link
251
- OMNIUS_TUI_PACING=local omnius # force local cadence
252
- ```
253
-
254
- If scrolling or typing still feels heavy, `OMNIUS_TUI_PROFILE=compatible`
255
- additionally drops the animated truecolor chrome, and `OMNIUS_TUI_PERF=1` logs
256
- any content reflow that overruns its frame budget to stderr.
257
-
258
- ## Shared Media Dependencies
259
-
260
- Image, video, audio, and music generation share a **single, system-wide dependency store** instead of duplicating heavy runtimes per project or per Telegram group.
28
+ The default dashboard address is `http://127.0.0.1:11435/`, with interactive API documentation at `/docs`.
261
29
 
262
- Earlier 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.
30
+ ## System overview
263
31
 
264
- Everything now resolves to one source of truth under `~/.omnius` (override with `OMNIUS_HOME`):
265
-
266
- | Location | Holds |
32
+ | Layer | Responsibility |
267
33
  | --- | --- |
268
- | `~/.omnius/runtimes/<kind>/.venv-<backend>` | One shared Python venv per kind+backend (image/video/audio) |
269
- | `~/.omnius/models/huggingface/{hub,transformers,diffusers}` | Shared model weights — downloaded once, reused everywhere |
270
- | `~/.omnius/models/{torch,cache,pip-cache}` | Shared Torch hub, XDG, and pip caches |
271
- | `~/.omnius/models/_meta.json` | LRU usage index for automatic disk-pressure eviction |
272
- | `~/.omnius/media/{images,videos,audio,music}` | Global generated-media gallery (project-independent) |
34
+ | Interfaces | Terminal sessions, browser workspaces, command-line automation, and system tray integration |
35
+ | Agent runtime | Task execution, tool use, delegated agents, verification, and resumable work |
36
+ | Inference | Model selection and routing across local servers, configured providers, and peers |
37
+ | Tools | Files, code, shell commands, web access, browser automation, and extensible capabilities |
38
+ | Memory and retrieval | Project context, indexed material, persistent memory, and targeted retrieval |
39
+ | Media and voice | Image, video, audio, music, speech recognition, and speech synthesis |
40
+ | Integration | REST APIs, events, MCP, Telegram, and shared inference services |
273
41
 
274
- Project directories keep only lightweight session artifacts; no venvs or model weights are written per project.
42
+ The [architecture overview](docs/architecture/overview.md) and [agent system map](docs/architecture/agent-system-map.md) describe the runtime boundaries and state ownership.
275
43
 
276
- **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:
44
+ ## Workspaces and sessions
277
45
 
278
- ```bash
279
- # TUI — current project only
280
- /models cleanup
281
- # TUI — every project + nested scoped group on this machine (dry-run first)
282
- /models cleanup --all --dry-run
283
- /models cleanup --all
284
- ```
46
+ A project provides the working directory for files, tools, conversations, and generated media. Terminal and browser interfaces expose saved sessions and project artifacts. Operational details remain available alongside the conversation without replacing its authored content.
285
47
 
286
- ```bash
287
- # REST — preview, then apply
288
- curl -s -X POST localhost:11435/v1/media/migrate -H 'content-type: application/json' -d '{"dryRun":true}'
289
- curl -s -X POST localhost:11435/v1/media/migrate -H 'content-type: application/json' -d '{}'
290
- # Inspect store + reclaimable legacy caches
291
- curl -s localhost:11435/v1/media/store
292
- ```
48
+ Project state lives under `.omnius/`. Shared model weights and runtime dependencies are managed separately from project-generated media. See [terminal workflows](docs/guides/tui-workflows.md), the [dashboard guide](docs/guides/dashboard.md), and [media generation](docs/guides/media-generation.md).
293
49
 
294
- **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:
50
+ ## Automation and discovery
295
51
 
296
- ```bash
297
- curl -s localhost:11435/v1/media/models
298
- curl -s -X POST localhost:11435/v1/media/image -H 'content-type: application/json' -d '{"prompt":"a compact robot painter"}'
299
- curl -s -X POST localhost:11435/v1/media/music -H 'content-type: application/json' -d '{"prompt":"warm lo-fi piano loop"}'
300
- curl -s localhost:11435/v1/media/gallery
301
- ```
302
-
303
- The 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.
304
-
305
- ## Recent Highlights
306
-
307
- - The dashboard now has nine route-level operational surfaces with shared modular observability grids, a searchable workspace picker, and project-scoped navigation state.
308
- - Chat history unifies persisted browser sessions with quality-filtered TUI transcripts, rejects command/noise sessions such as `/quit`, hydrates full history on selection, and exposes summaries, follow-up suggestions, reactive live deltas, and canonical deletion.
309
- - `/indicator` reconciles daemon ownership and health before launching the tray; the tray polls every 10 seconds and turns its version row into a retryable verified-update action only when an update exists.
310
- - Dashboard, tray, and TUI update actions now share an exact-version global transaction with live phase/output and package, executable, daemon, hash, restart, and tray verification.
311
- - TTS exposes GLaDOS, Overwatch, `luxtts:announcer-testchamber03`, and configurable Voicebox models; ASR independently exposes Whisper, managed `transcribe-cli`, Nemotron readiness, and pinned Microsoft VibeVoice ASR with Jetson/ARM64 CUDA-aware setup.
312
- - LuxTTS auto-setup on Jetson ARM64 requires CPU ONNX Runtime at import time, validates CUDA Torch separately against the host runtime, preserves existing caches during repair, and never substitutes generic PyPI Torch or automatic sudo for an AGX Orin deployment.
313
- - `/realtime` and REST `realtime: true` provide short, natural, SOUL.md-aware conversation for ASR/TTS clients.
314
- - Endpoint setup and sponsor setup aggregate models from all enabled endpoints, including external OpenAI-compatible routers.
315
- - `/sponsor` can expose text inference and media generation for image, video, sound, and music with per-modality limits.
316
- - Sponsor and COHERE status surfaces now use shared telemetry concepts: concurrency, request rate, daily tokens, peer usage, model usage, and remote system metrics.
317
- - The TUI reports token production rate as `t/s`, supports Shift+Enter multiline input, and renders dynamic shell output inside bounded Unicode cards.
318
- - Telegram state is scoped by user and group, supports durable reply preferences, and feeds raw platform/tool failures back into the agent loop.
319
- - Telegram media ingress is byte- and duration-bounded, cache-only before routing, deduplicated by Telegram file identity, and evidence-gated after admission. Speech uses scoped transcription; music/general audio uses typed semantic or explicitly acoustic-only analysis without false listening claims.
320
- - Telegram public creative work now includes typed PDF/DOCX creation and hash-guarded review, fixed-operation FFmpeg audio editing, and root-confined image crop/resize/mask/composite workflows. Host-signed content capabilities bind review evidence and durable Telegram delivery to the exact artifact bytes.
321
- - Ollama pool cleanup now accounts for process groups and orphan runner processes that can keep VRAM pinned.
322
- - REST documentation is available both as human docs and as Omnius-discoverable docs skills.
323
-
324
- ## REST API
325
-
326
- Start the daemon (default `http://127.0.0.1:11435`; interactive docs at `/docs`, machine spec at `/openapi.json`):
52
+ Omnius can run a task directly from the command line:
327
53
 
328
54
  ```bash
329
- omnius serve
55
+ omnius "inspect this repository and explain its main entrypoints"
330
56
  ```
331
57
 
332
- For shared deployments, gate access with scoped bearer keys (`read` < `run` < `admin`):
58
+ Agents and integrations can discover capabilities through the CLI or daemon:
333
59
 
334
60
  ```bash
335
- OMNIUS_REST_API_KEYS="read-key:read:grafana,run-key:run:ci:60:100000:3,admin-key:admin:ops" omnius serve
336
- # then: Authorization: Bearer <key>
61
+ omnius discover "bring your own inference"
62
+ omnius show layer.orchestration
63
+ omnius capabilities --json
337
64
  ```
338
65
 
339
- The complete supported endpoint inventory follows. The canonical machine
340
- contract is generated from [`packages/cli/src/api/openapi.ts`](packages/cli/src/api/openapi.ts),
341
- validated against [`docs/reference/rest-api.md`](docs/reference/rest-api.md),
342
- and projected into the generated block below. `pnpm docs:check` now fails when
343
- any of those three surfaces drift. Browser HTML pages, Swagger static assets,
344
- and implementation-only compatibility bridges are intentionally outside this
345
- stable REST contract.
66
+ The daemon provides stateful chat, agent execution, tools, memory, media, and OpenAI/Ollama-compatible inference interfaces. Begin with [agent integration](docs/guides/agent-integration.md) and the [discovery guide](docs/DISCOVERY.md).
346
67
 
347
68
  <!-- BEGIN GENERATED REST INVENTORY -->
348
- ### Docs And Compatibility Aliases
349
-
350
- | Method | Path | Purpose |
351
- | --- | --- | --- |
352
- | `GET` | `/docs` | Swagger UI |
353
- | `GET` | `/api/docs` | Swagger UI alias |
354
- | `GET` | `/openapi.json` | OpenAPI JSON |
355
- | `GET` | `/openapi.yaml` | OpenAPI YAML |
356
- | `GET` | `/v3/api-docs` | OpenAPI alias |
357
- | `GET` | `/swagger.json` | Swagger-era alias |
358
- | `GET` | `/api-docs` | OpenAPI alias |
359
- | `GET` | `/swagger-ui` | Swagger UI alias |
360
- | `GET` | `/redoc` | ReDoc renderer |
361
- | `GET` | `/` | HATEOAS API root when the client does not request HTML |
362
- | `GET` | `/help` | Compact daemon integration help |
363
- | `GET` | `/v1/routes` | Flat grep-friendly daemon route summary |
364
- | `GET` | `/routes` | Route-summary compatibility alias |
365
- | `GET` | `/asyncapi.json` | AsyncAPI 2.6 voicechat WebSocket contract |
366
- | `GET` | `/asyncapi` | AsyncAPI compatibility alias |
367
-
368
- ### Health And Observability
369
-
370
- | Method | Path | Purpose |
371
- | --- | --- | --- |
372
- | `GET` | `/health` | Liveness probe |
373
- | `GET` | `/health/ready` | Backend readiness |
374
- | `GET` | `/health/startup` | Startup probe |
375
- | `GET` | `/version` | Package version and platform |
376
- | `GET` | `/metrics` | Prometheus metrics |
377
- | `GET` | `/v1/events` | Server-sent event stream |
378
- | `GET` | `/v1/usage` | Token usage and rate limits |
379
- | `GET` | `/v1/audit` | Audit log query |
380
- | `GET` | `/v1/cost` | Cost tracker |
381
- | `GET` | `/v1/system` | CPU, RAM, GPU, and system snapshot |
382
-
383
- ### Discovery
384
-
385
- | Method | Path | Purpose |
386
- | --- | --- | --- |
387
- | `GET` | `/v1/discovery/bootstrap` | Compact agent bootstrap and start-here map |
388
- | `GET` | `/v1/discovery` | Search layers, workflows, runtimes, modules, stores, and capabilities |
389
- | `GET` | `/v1/discovery/{id}` | Expand one stable capability entry |
390
-
391
- ### Inference And Chat
392
-
393
- | Method | Path | Purpose |
394
- | --- | --- | --- |
395
- | `GET` | `/v1/models` | Aggregated model list |
396
- | `POST` | `/v1/chat/completions` | OpenAI-compatible chat completion |
397
- | `POST` | `/v1/chat` | Stateful Omnius chat |
398
- | `POST` | `/api/chat` | Ollama-compatible chat alias |
399
- | `POST` | `/v1/generate` | Ollama-compatible one-shot generation |
400
- | `POST` | `/api/generate` | Ollama-compatible generate alias |
401
- | `POST` | `/v1/embeddings` | OpenAI-compatible embeddings |
402
- | `POST` | `/api/embed` | Ollama-compatible embeddings alias |
403
- | `GET` | `/api/tags` | Ollama-compatible model tags |
404
- | `POST` | `/realtime` | Text-only voice-adapter reply from a transcript |
405
- | `POST` | `/v1/realtime` | Auth-scoped realtime adapter alias |
406
- | `GET` | `/v1/chat/sessions` | Workspace-scoped persisted browser chats and importable TUI sessions |
407
- | `GET` | `/v1/chat/sessions/{id}` | Hydrate full session history, transcript, and in-flight state |
408
- | `DELETE` | `/v1/chat/sessions/{id}` | Permanently delete a canonical chat or TUI history session |
409
- | `POST` | `/v1/chat/sessions/{id}/summarize` | Generate + cache an inference-based session title/summary |
410
- | `POST` | `/v1/chat/suggest-followup` | Suggest one short next-message follow-up (ghost-text input) |
411
- | `GET` | `/v1/chat/sessions/{id}/status` | Reactive recall: live run status + unseen deltas (`?since=<seq>`) |
412
- | `POST` | `/v1/chat/sessions/{id}/pause` | Pause the exact daemon-owned chat generation at a safe admission boundary |
413
- | `POST` | `/v1/chat/sessions/{id}/resume` | Resume the exact paused daemon-owned chat generation |
414
- | `POST` | `/v1/chat/sessions/{id}/stop` | Stop the daemon-owned chat process lease; idle/terminal calls are idempotent |
415
- | `POST` | `/v1/chat/check-in` | Steering check-in for active chat |
416
- | `POST` | `/v1/chat/attachments` | Upload an attachment for a stateful chat |
417
- | `POST` | `/v1/links/validate` | Validate an external HTTP(S) destination under the daemon egress policy |
418
-
419
- #### Session History Contract
420
-
421
- `GET /v1/chat/sessions` is a history index, not merely a list of processes that
422
- are currently active. It returns canonical persisted browser chats for the
423
- selected workspace and, by default, quality-filtered TUI visual sessions that
424
- can be imported on demand. Pass `?root=/absolute/workspace` to scope the list and
425
- `?include_tui=0` to omit TUI history. Exit-only inputs such as `/quit` and
426
- `/exit`, manual-save noise, empty transcripts, and duplicate normalized TUI
427
- sessions are rejected by the session-quality projection rather than presented as
428
- chats.
429
-
430
- Selecting a row should call `GET /v1/chat/sessions/{id}`. That response hydrates
431
- the complete public message history (system prompts are intentionally omitted),
432
- the original TUI transcript when applicable, token counts, timestamps, source
433
- and project identity, and any in-flight run with a bounded partial-output tail.
434
- Use the `status` endpoint with `?since=<seq>` for cheap reactive polling while a
435
- run is active. `DELETE /v1/chat/sessions/{id}` is an admin operation and removes
436
- the canonical record; deleting only a browser-side row does not remove daemon
437
- history.
438
-
439
- Pause and resume use the exact session and active external-run identity. Both
440
- operations require `run` scope. An idle session returns `200`. An accepted
441
- request returns `200` with the lifecycle acknowledgement, owner generation,
442
- current phase, resumability, and pending acknowledgement count. A lifecycle
443
- rejection returns `409`. A live owner that does not acknowledge within the
444
- control deadline returns `504`. Clients must not treat a local UI pause as a
445
- daemon pause.
446
-
447
- `POST /realtime` and `/v1/realtime` are text-only conversation adapters. They
448
- accept transcript text through `message`, `text`, `recent_turn`, `asr_text`, or
449
- `callerText`, optionally accept adapter-local `soul_md`, and can return plain
450
- text with `Accept: text/plain` or `format: "text"`. ASR and TTS remain separate
451
- operations.
452
-
453
- ### Agentic Runs
454
-
455
- | Method | Path | Purpose |
456
- | --- | --- | --- |
457
- | `POST` | `/v1/run` | Submit agentic task |
458
- | `GET` | `/v1/runs` | List runs |
459
- | `GET` | `/v1/runs/{id}` | Get run details |
460
- | `GET` | `/v1/runs/{id}/output` | Read captured run output and status |
461
- | `DELETE` | `/v1/runs/{id}` | Abort run |
462
- | `POST` | `/v1/todos` | Create or update todos for current session |
463
- | `GET` | `/v1/todos` | List sessions with todos |
464
- | `GET` | `/v1/todos/{session_id}` | Get session todos |
465
- | `DELETE` | `/v1/todos/{session_id}` | Delete session todos |
466
- | `POST` | `/v1/evaluate` | Evaluate a run |
467
- | `POST` | `/v1/index` | Trigger repository indexing |
468
-
469
- ### Configuration, Keys, Profiles, Projects
470
-
471
- An authenticated `PUT /v1/config/model` records a new operator model choice,
472
- including when the selected name has not changed. A running TUI adopts that
473
- choice for its next main task or inherited Telegram turn at the same backend
474
- endpoint and provider. Existing runners and explicit Telegram overrides retain
475
- their configuration. Startup CLI/environment choices take precedence over old
476
- saved settings; a later operator selection acts like a new local `/model`
477
- command. This behavior requires the updated TUI process.
478
-
479
- | Method | Path | Purpose |
480
- | --- | --- | --- |
481
- | `GET` | `/v1/config` | Read daemon config |
482
- | `PATCH` | `/v1/config` | Update daemon config |
483
- | `GET` | `/v1/config/model` | Current model |
484
- | `PUT` | `/v1/config/model` | Switch model |
485
- | `POST` | `/v1/config/model/check` | Probe model readiness with non-empty text |
486
- | `GET` | `/v1/config/endpoint` | Current endpoint |
487
- | `PUT` | `/v1/config/endpoint` | Switch endpoint |
488
- | `POST` | `/v1/config/endpoint/test` | Probe endpoint |
489
- | `GET` | `/v1/config/endpoint/history` | Endpoint history |
490
- | `DELETE` | `/v1/config/endpoint/history` | Remove endpoint history item |
491
- | `POST` | `/v1/share/generate` | Generate remote-access share URL |
492
- | `GET` | `/v1/keys` | List runtime API keys |
493
- | `POST` | `/v1/keys` | Mint runtime API key |
494
- | `DELETE` | `/v1/keys/{prefix}` | Revoke runtime API keys by prefix |
495
- | `GET` | `/v1/profiles` | List tool profiles |
496
- | `POST` | `/v1/profiles` | Create tool profile |
497
- | `GET` | `/v1/profiles/{name}` | Get profile |
498
- | `DELETE` | `/v1/profiles/{name}` | Delete profile |
499
- | `GET` | `/v1/projects` | List known projects |
500
- | `DELETE` | `/v1/projects` | Unregister a project |
501
- | `GET` | `/v1/projects/current` | Current project |
502
- | `POST` | `/v1/projects/switch` | Switch project |
503
- | `POST` | `/v1/projects/register` | Register project |
504
- | `POST` | `/v1/projects/rename` | Rename project |
505
- | `GET` | `/v1/projects/preferences` | Read project preferences |
506
- | `PUT` | `/v1/projects/preferences` | Patch project preferences |
507
- | `DELETE` | `/v1/projects/preferences` | Reset project preferences |
508
- | `GET` | `/v1/projects/scan` | Scan configured roots for discoverable workspaces |
509
- | `GET` | `/v1/admin/access` | Read the daemon network access mode |
510
- | `POST` | `/v1/admin/access` | Change and persist access mode from loopback only |
511
-
512
- ### Skills, Commands, Tools, MCP
513
-
514
- | Method | Path | Purpose |
515
- | --- | --- | --- |
516
- | `GET` | `/v1/skills` | List skills |
517
- | `GET` | `/v1/skills/{name}` | Load skill content |
518
- | `GET` | `/v1/commands` | List slash commands |
519
- | `POST` | `/v1/commands/{cmd}` | Execute slash command |
520
- | `GET` | `/v1/tools` | List tools (built-in + external) |
521
- | `POST` | `/v1/tools/register` | Register an application-specific external tool |
522
- | `GET` | `/v1/tools/{name}` | Tool metadata |
523
- | `DELETE` | `/v1/tools/{name}` | Unregister an external tool |
524
- | `POST` | `/v1/tools/{name}/call` | Call tool |
525
- | `POST` | `/v1/tools/{name}/eval` | Evaluate an external tool against test cases |
526
- | `GET` | `/v1/mcps` | List MCP servers |
527
- | `GET` | `/v1/mcps/{name}` | MCP server details |
528
- | `POST` | `/v1/mcps/{name}/call` | Call MCP tool |
529
- | `GET` | `/v1/hooks` | Hook registry |
530
- | `GET` | `/v1/agents` | Agent type registry |
531
- | `GET` | `/v1/codegraph/snapshot` | Code graph snapshot |
532
- | `GET` | `/v1/codegraph/events` | Code graph SSE |
533
-
534
- #### Registering Application-Specific Tools
535
-
536
- Applications can register their own tools so Omnius agents can discover and
537
- invoke them alongside built-ins. `transport.type` selects the bridge:
538
-
539
- - `http` makes Omnius POST `{name, args, session_id}` to the application's
540
- `callback_url` and relay the result.
541
- - `mcp` proxies to a named tool on an MCP server and can auto-connect from the
542
- supplied connection descriptor.
543
-
544
- Registrations persist per workspace at `.omnius/external-tools.json`, appear in
545
- `GET /v1/tools`, and use the same scope and off-device security gates as built-in
546
- tools. Registration needs `run` scope; a non-loopback caller needs `admin`.
547
-
548
- ```bash
549
- curl -s -X POST localhost:11435/v1/tools/register -H 'content-type: application/json' -d '{
550
- "name": "lookup_order",
551
- "description": "Look up an order by id",
552
- "parameters": {"type":"object","properties":{"id":{"type":"string"}},"required":["id"]},
553
- "security": {"requires_scope":"run","risk":"low"},
554
- "transport": {"type":"http","callback_url":"https://app.internal/tools/lookup_order","auth_header":"Bearer …"}
555
- }'
556
- curl -s localhost:11435/v1/tools/lookup_order
557
- curl -s -X POST localhost:11435/v1/tools/lookup_order/call -H 'content-type: application/json' -d '{"args":{"id":"A-1001"}}'
558
- curl -s -X POST localhost:11435/v1/tools/lookup_order/eval -H 'content-type: application/json' -d '{"cases":[{"name":"known","args":{"id":"A-1001"},"expect":{"success":true}}]}'
559
- curl -s -X DELETE localhost:11435/v1/tools/lookup_order
560
- ```
561
-
562
- The MCP equivalent uses a transport such as
563
- `{"type":"mcp","server":"acme","tool":"search","connect":{"url":"https://app.internal/mcp","transport":"streamable-http"}}`.
564
-
565
- ### AIWG
566
-
567
- | Method | Path | Purpose |
568
- | --- | --- | --- |
569
- | `GET` | `/v1/aiwg` | AIWG root and control map |
570
- | `GET` | `/v1/aiwg/frameworks` | List frameworks |
571
- | `GET` | `/v1/aiwg/frameworks/{name}` | Framework details |
572
- | `GET` | `/v1/aiwg/frameworks/{name}/content` | Tier-aware content |
573
- | `GET` | `/v1/aiwg/skills` | List AIWG skills |
574
- | `GET` | `/v1/aiwg/skills/{name}` | Load AIWG skill |
575
- | `GET` | `/v1/aiwg/agents` | List AIWG agents |
576
- | `GET` | `/v1/aiwg/agents/{name}` | Load AIWG agent |
577
- | `GET` | `/v1/aiwg/addons` | List AIWG addons |
578
- | `POST` | `/v1/aiwg/use` | Tier-sized activation bundle |
579
- | `POST` | `/v1/aiwg/expand` | Expand matching AIWG item |
580
-
581
- ### Memory, Sessions, Context
582
-
583
- | Method | Path | Purpose |
584
- | --- | --- | --- |
585
- | `GET` | `/v1/memory` | Memory backend summary |
586
- | `POST` | `/v1/memory/search` | Search memory |
587
- | `POST` | `/v1/memory/write` | Write memory |
588
- | `GET` | `/v1/memory/episodes` | List episodes |
589
- | `GET` | `/v1/memory/failures` | List failure records |
590
- | `POST` | `/v1/memory/ingest` | Ingest content or files into memory |
591
- | `GET` | `/v1/memory/entities` | List extracted memory entities |
592
- | `POST` | `/v1/memory/jobs/run` | Run a named memory-maintenance job |
593
- | `POST` | `/v1/memory/feedback` | Record relevance or quality feedback for a memory item |
594
- | `POST` | `/v1/memory/speaker-identities/enroll` | Admin-only, explicit-consent speaker exemplar enrollment in one exact vector space |
595
- | `POST` | `/v1/memory/speaker-identities/match` | Admin-only provisional speaker candidate matching without durable assignment |
596
- | `GET` | `/v1/sessions` | List task sessions |
597
- | `GET` | `/v1/sessions/{id}` | Get session history |
598
- | `GET` | `/v1/context` | Current context snapshot |
599
- | `GET` | `/v1/context/window-dumps` | List persisted outbound model context-window dumps |
600
- | `GET` | `/v1/context/window-dumps/{id}` | Fetch a full outbound model context-window dump |
601
- | `POST` | `/v1/context/save` | Save context entry |
602
- | `GET` | `/v1/context/restore` | Build restore prompt |
603
- | `POST` | `/v1/context/compact` | Request compaction |
604
-
605
- Context-window dumps are written before backend inference for main agents, sub-agents, internal runners, and adversary audits. Query
606
- `GET /v1/context/window-dumps?agent_type=main` for summaries with signal/noise
607
- metrics, or fetch a full payload by id. Dumps include focus-supervisor state when
608
- a next-action contract is active. Set `OMNIUS_CONTEXT_WINDOW_DUMP_DIR` to move
609
- the store, `OMNIUS_DISABLE_CONTEXT_WINDOW_DUMPS=1` to disable it, and
610
- `OMNIUS_FOCUS_SUPERVISOR=off|auto|strict` to tune focus enforcement.
611
-
612
- ### Files, Web, Nexus, Ollama Pool
613
-
614
- | Method | Path | Purpose |
615
- | --- | --- | --- |
616
- | `GET` | `/v1/files` | List workspace directory |
617
- | `POST` | `/v1/files/read` | Read workspace file |
618
- | `GET` | `/v1/files/raw` | Stream raw workspace bytes with content type and range support |
619
- | `HEAD` | `/v1/files/raw` | Inspect raw-file response metadata |
620
- | `GET` | `/v1/web/search` | Inspect web-search availability, schema, and security policy |
621
- | `POST` | `/v1/web/search` | Search the web directly through the Omnius tool runtime |
622
- | `GET` | `/v1/web/fetch` | Inspect web-fetch availability, schema, and security policy |
623
- | `POST` | `/v1/web/fetch` | Fetch a URL directly through the Omnius tool runtime |
624
- | `GET` | `/v1/web/crawl` | Inspect web-crawl availability, schema, and security policy |
625
- | `POST` | `/v1/web/crawl` | Crawl a website directly through the Omnius tool runtime |
626
- | `GET` | `/v1/nexus/status` | Nexus peer state |
627
- | `GET` | `/v1/sponsors` | Sponsor directory cache |
628
- | `GET` | `/v1/ollama/pool/processes` | Ollama process inventory |
629
- | `POST` | `/v1/ollama/pool/cleanup` | Cleanup stale Ollama pool processes |
630
-
631
- The `/v1/web/*` routes are stable aliases of the shared tool registry. `GET`
632
- returns the corresponding tool metadata. `POST` uses the same authentication,
633
- profile, origin, timeout, output-size, audit, and network-egress policy as a
634
- direct tool call. Send search requests as
635
- `{"args":{"query":"...","num_results":5,"provider":"duckduckgo"}}` and
636
- fetch requests as `{"args":{"url":"https://example.com"}}`. Crawl uses the
637
- schema returned by its `GET` route and requires the browser dependencies that
638
- the metadata reports. POST responses use the standard `ToolResult` envelope.
639
-
640
- ### Voice, Audio, Vision
641
-
642
- | Method | Path | Purpose |
643
- | --- | --- | --- |
644
- | `GET` | `/v1/voice/state` | Voice runtime status |
645
- | `POST` | `/v1/voice/start` | Select an optional model, enable voice, and wait for readiness |
646
- | `POST` | `/v1/voice/stop` | Pause daemon voice input while leaving TTS warm |
647
- | `GET` | `/v1/voice/models` | TTS models |
648
- | `POST` | `/v1/voice/models/switch` | Switch and enable an exact TTS model by default |
649
- | `POST` | `/v1/voice/models/{modelId}/pull` | Install runtime prerequisites and pull one managed TTS model |
650
- | `POST` | `/v1/voice/models/{modelId}/deploy` | Pull and deploy one managed CUDA TTS model |
651
- | `GET` | `/v1/voice/supertonic-settings` | Voice tuning settings |
652
- | `POST` | `/v1/voice/supertonic-settings` | Update voice tuning settings |
653
- | `GET` | `/v1/asr/engines` | Canonical ASR engines/models, capabilities, readiness, and selection |
654
- | `GET` | `/v1/asr/status` · `/v1/asr/selection` | Selected engine/model and runtime status |
655
- | `GET` | `/v1/asr/downloads` | List persistent ASR weight download and deployment transitions |
656
- | `POST` | `/v1/asr/downloads` | Start or resume an ASR weight download |
657
- | `GET` | `/v1/asr/downloads/{engineId}/{modelId}` | Poll one ASR download and deployment transition |
658
- | `POST` | `/v1/asr/downloads/{engineId}/{modelId}` | Start or resume this model download |
659
- | `POST` | `/v1/asr/downloads/{engineId}/{modelId}/retry` | Retry or resume a failed or interrupted ASR weight download |
660
- | `PATCH` | `/v1/asr/selection` | Persist and activate an exact engine/model |
661
- | `POST` | `/v1/asr/activate` | Activate and persist an exact engine/model |
662
- | `POST` | `/v1/asr/engines/{engineId}/setup` | Install a managed runtime and pinned weights |
663
- | `POST` | `/v1/asr/engines/{engineId}/models/{modelId}/pull` | Pull one exact ASR model and validate its managed runtime |
664
- | `POST` | `/v1/asr/engines/{engineId}/models/{modelId}/deploy` | Pull, select, and activate one exact ASR model |
665
- | `POST` | `/v1/asr/transcriptions` · `/v1/asr/test` | Transcribe/test using the real selected backend |
666
- | `GET` | `/v1/voice/asr-models` | Compatibility registry alias |
667
- | `POST` | `/v1/voice/asr-models/switch` | Compatibility activation alias |
668
- | `POST` | `/v1/voice/tts` | Synthesize speech |
669
- | `POST` | `/v1/audio/speech` | OpenAI-compatible TTS alias |
670
- | `GET` | `/v1/audio/classify/health` | Jetson CUDA/TensorRT YAMNet readiness |
671
- | `POST` | `/v1/audio/classify/setup` | Provision and warm the pinned JetPack TensorRT YAMNet runtime |
672
- | `POST` | `/v1/audio/classify` | Direct-tool compatible CUDA audio classification |
673
- | `GET` | `/v1/audio/embed/health` | Role-typed embedding readiness (`?kind=acoustic|speaker|semantic`) |
674
- | `POST` | `/v1/audio/embed/setup` | Provision/warm one role-typed embedding runtime (admin; `?kind=...`) |
675
- | `POST` | `/v1/audio/embed` | Managed role-typed audio embedding (`?kind=...`) |
676
- | `GET` | `/v1/audio/diarization/live/readiness` | Non-mutating managed Sortformer worker readiness |
677
- | `POST` | `/v1/audio/diarization/live/setup` | Verify and warm a local Sortformer runtime (admin) |
678
- | `POST` | `/v1/audio/diarization/live` | Managed live/session-local speaker-turn diarization |
679
- | `POST` | `/v1/audio/diarization/live/cancel` | Terminate live worker work and clear its queue |
680
- | `GET` | `/v1/audio/diarization/reconcile/readiness` | Non-mutating managed Community-1 worker readiness |
681
- | `POST` | `/v1/audio/diarization/reconcile/setup` | Verify and warm a local Community-1 runtime (admin) |
682
- | `POST` | `/v1/audio/diarization/reconcile` | Managed offline/dream reconciliation proposals |
683
- | `POST` | `/v1/audio/diarization/reconcile/cancel` | Terminate reconciliation work and clear its queue |
684
- | `POST` | `/v1/voice/transcribe` | Transcribe audio |
685
- | `POST` | `/v1/voice/asr` | Legacy transcription alias |
686
- | `POST` | `/v1/audio/transcriptions` | OpenAI-compatible transcription alias |
687
- | `POST` | `/v1/voice/transcribe/stream` | Isolated final transcription over SSE (no shared mic state or fake partials) |
688
- | `POST` | `/v1/voice/clone-refs` | Upload voice clone reference |
689
- | `GET` | `/v1/voice/clone-refs` | List clone references |
690
- | `POST` | `/v1/voice/clone-refs/upload` | Upload clone reference |
691
- | `POST` | `/v1/voice/clone-refs/from-url` | Fetch clone reference |
692
- | `POST` | `/v1/voice/clone-refs/{filename}/activate` | Activate clone reference |
693
- | `POST` | `/v1/voice/clone-refs/{filename}/rename` | Rename clone reference |
694
- | `DELETE` | `/v1/voice/clone-refs/{filename}` | Delete clone reference |
695
- | `POST` | `/v1/voice/speak` | Broadcast speech to voicechat clients |
696
- | `GET` | `/v1/voicechat/ws` | WebSocket upgrade for full-duplex voicechat |
697
- | `POST` | `/v1/vision/describe` | Vision describe placeholder |
698
- | `GET` | `/v1/vision/embed/readiness` | Non-mutating isolated OpenCLIP readiness |
699
- | `POST` | `/v1/vision/embed/setup` | Explicit isolated OpenCLIP setup (admin scope) |
700
- | `POST` | `/v1/vision/embed` | Create a vision embedding from media |
701
- | `GET` | `/v1/ocr/readiness` | Non-mutating advanced-OCR dependency and backend readiness |
702
- | `POST` | `/v1/ocr/setup` | Create and verify the isolated OCR venv (admin scope) |
703
- | `POST` | `/v1/ocr/advanced` | Agent-equivalent managed advanced OCR (alias of `/v1/tools/ocr_image_advanced/call`) |
704
-
705
- `POST /v1/voice/tts` and `/v1/audio/speech` automatically warm the daemon.
706
- An explicit model must render exactly or the request fails; Omnius does not
707
- silently synthesize with another voice. Responses include `X-Voice-Model`,
708
- `X-Voice-Backend`, and `X-Sample-Rate`. Available models include GLaDOS,
709
- Overwatch, `luxtts:announcer-testchamber03`, and the selected Voicebox suite.
710
- Set `OMNIUS_VOICEBOX_MODELS=all` for every carried-in Voicebox model, leave it
711
- at `stable` for the default set, or provide a comma-separated subset.
712
-
713
- ASR selection is independent from TTS selection. The registry currently exposes
714
- OpenAI Whisper, managed `transcribe-cli`, NVIDIA Nemotron (reported unavailable
715
- until its legacy bootstrap is migrated), and Microsoft VibeVoice ASR. VibeVoice
716
- uses the exact pinned `microsoft/VibeVoice-ASR` checkpoint, reports setup and
717
- activation separately, supports completed files up to 60 minutes with speakers,
718
- timestamps, and `?context=` hotwords, and is deliberately not advertised as an
719
- incremental PCM backend. Its managed setup inherits the host CUDA-enabled Torch
720
- build (needed on Jetson/ARM64), never installs generic PyPI Torch, and activation
721
- requires one explicit capable GPU. Discrete Linux uses `nvidia-smi` process/GPU
722
- evidence; Jetson/L4T uses NVIDIA's documented `tegrastats` plus CUDA Torch device
723
- properties because `nvidia-smi` is unavailable there. Model weights live under
724
- the unified Omnius ASR cache and are not shipped in the npm package.
725
-
726
- ### Generative Media
727
-
728
- All generation is backed by the unified `~/.omnius` model store and shared venvs (single source of truth — no per-project duplication). Generated files are consolidated into the global gallery at `~/.omnius/media/{images,videos,audio,music}`.
729
-
730
- | Method | Path | Purpose |
731
- | --- | --- | --- |
732
- | `GET` | `/v1/media/models` | List available image/video/audio/music models |
733
- | `GET` | `/v1/media/store` | Unified store disk usage + reclaimable legacy caches |
734
- | `POST` | `/v1/media/migrate` | Dedup + migrate legacy per-group caches into the unified store |
735
- | `POST` | `/v1/media/relocate` | Relocate the whole media store (weights/venvs/gallery) to a chosen folder |
736
- | `GET` | `/v1/media/relocate/status` | Status + progress of the media-store relocation job |
737
- | `POST` | `/v1/media/av/analyze` | Analyze a media file into a grounded entity/event answer (AV comprehension) |
738
- | `POST` | `/v1/media/image` | Generate an image |
739
- | `POST` | `/v1/media/video` | Generate a video |
740
- | `POST` | `/v1/media/audio` | Generate a sound effect |
741
- | `POST` | `/v1/media/music` | Generate music |
742
- | `GET` | `/v1/media/gallery` | List previously generated media (global, newest first) |
743
- | `GET` | `/v1/media/file` | Stream one generated media file |
744
-
745
- Managed TTS `pull` installs the model's runtime prerequisites and weights. It
746
- does not start inference. Managed TTS `deploy` also verifies the selected CUDA
747
- device and starts the persistent runtime. Both operations return `200` when
748
- ready, `404` when the model has no matching managed adapter, and `500` when
749
- installation, download, CUDA preflight, or startup fails.
750
-
751
- ASR download requests use `{engineId, modelId, device?}`. A collection POST
752
- returns `200` when weights are ready or `202` with `statusUrl`, `retryUrl`, and
753
- `pollAfterMs` while work is pending. Duplicate work coalesces. Poll the model
754
- URL until its download is ready and its deployment is active. A missing job
755
- returns `404`. Model-specific POST and retry requests return `200` when ready or
756
- `202` when accepted. The model `pull` and `deploy` routes accept optional
757
- `{device}`. Pull validates the managed runtime and CUDA placement. Deploy also
758
- persists the selection after readiness and returns a pollable `202` transition
759
- when activation is pending.
760
-
761
- ### Engines And Scheduled Jobs
762
-
763
- | Method | Path | Purpose |
764
- | --- | --- | --- |
765
- | `GET` | `/v1/engines` | Long-running engine status |
766
- | `GET` | `/v1/services` | List all active daemon-owned REST services and their routes |
767
- | `GET` | `/v1/services/{id}` | Get one daemon-owned REST service contract |
768
- | `GET` | `/v1/scheduled` | List scheduled jobs |
769
- | `DELETE` | `/v1/scheduled/all` | Delete all tasks, timers, cron entries, and persisted sources |
770
- | `GET` | `/v1/scheduled/status` | Scheduler status |
771
- | `POST` | `/v1/scheduled/{id}` | Enable or disable one scheduled task or user timer |
772
- | `DELETE` | `/v1/scheduled/{id}` | Delete one scheduled task or user timer |
773
- | `POST` | `/v1/scheduled/kill` | Kill scheduled job |
774
- | `POST` | `/v1/scheduled/fixup` | Reconcile scheduled state |
775
- | `GET` | `/v1/scheduled/reconcile` | Preview scheduled reconciliation |
776
- | `POST` | `/v1/scheduled/reconcile` | Preview or apply scheduled reconciliation |
777
- | `GET` | `/v1/services/systemd` | Systemd service status |
778
- | `POST` | `/v1/services/systemd/{unit}` | Act on one user-level systemd unit |
779
- | `GET` | `/v1/update` | Self-update status |
780
- | `POST` | `/v1/update` | Start an exact-version verified global update transaction |
781
-
782
- `GET /v1/services` is the agent-readable service inventory generated from the
783
- OpenAPI document. Each entry states lifecycle ownership, interactive-session
784
- dependency, registered routes, and a readiness or status route when one exists.
785
- `GET /v1/services/{id}` returns one service contract or `404` for an unknown
786
- service ID. These discovery routes do not mutate services. `/listen` and
787
- `/hangup` control voice sessions only and do not own the REST daemon.
788
-
789
- #### Verified Global Update Transaction
790
-
791
- `POST /v1/update` is not a CLI-local package edit. It starts one durable
792
- transaction that installs the requested exact npm version globally, verifies
793
- the installed package and resolved `omnius` executable, restarts and verifies
794
- the daemon, verifies package/hash/runtime agreement, and relaunches the tray if
795
- it was running. The response is `202` with operation state; poll
796
- `GET /v1/update` for live phase, subprocess output, verification evidence, and
797
- the final success or failure. Concurrent transactions and requests with no
798
- available target return `409`.
799
-
800
- The web dashboard and native tray both use this same endpoint. Update discovery
801
- is shared and semver-aware, so an older cached registry result cannot downgrade
802
- or falsely present an update. A completed transaction means the global package,
803
- executable, daemon, and tray runtime were all reconciled—not merely that `npm`
804
- exited successfully.
805
-
806
- ### AIMS Governance
807
-
808
- | Method | Path | Purpose |
809
- | --- | --- | --- |
810
- | `GET` | `/v1/aims` | AIMS root and endpoint index |
811
- | `GET` | `/v1/aims/policies` | Policy register |
812
- | `PUT` | `/v1/aims/policies` | Replace policy register |
813
- | `GET` | `/v1/aims/roles` | Roles and responsibilities |
814
- | `GET` | `/v1/aims/resources` | Resource inventory |
815
- | `GET` | `/v1/aims/impact-assessments` | Impact assessments |
816
- | `POST` | `/v1/aims/impact-assessments` | File impact assessment |
817
- | `GET` | `/v1/aims/lifecycle` | Lifecycle state |
818
- | `GET` | `/v1/aims/data-quality` | Data quality controls |
819
- | `GET` | `/v1/aims/transparency` | Model cards and transparency |
820
- | `GET` | `/v1/aims/usage` | AIMS usage view |
821
- | `GET` | `/v1/aims/suppliers` | Supplier inventory |
822
- | `GET` | `/v1/aims/incidents` | Incident records |
823
- | `POST` | `/v1/aims/incidents` | File incident |
824
- | `GET` | `/v1/aims/oversight` | Human oversight gates |
825
- | `GET` | `/v1/aims/decisions` | Consequential decision log |
826
- | `GET` | `/v1/aims/config-history` | Config change history |
827
-
828
- ### Browser And Compatibility Surfaces
829
-
830
- The dashboard HTML routes (`/`, `/chat`, `/agent`, `/voice`, `/generate`,
831
- `/projects`, `/dashboard`, `/jobs`, `/activity`, `/discover`, `/settings`, and
832
- `/config`) are documented in the [dashboard guide](../guides/dashboard.md). They
833
- are pages, not JSON API operations; `/` returns the HATEOAS JSON root when the
834
- client does not request HTML.
835
-
836
- Swagger/ReDoc trailing-slash variants, `/api/docs/*` static assets, and
837
- `/favicon.ico` exist for browsers. They are delivery details rather than stable
838
- integration endpoints. The daemon also retains browser/legacy bridges at
839
- `/v1/model`, `/v1/endpoint`, `/v1/theme`, `/v1/tor/*`, `/v1/remote-proxy`, and
840
- `/v1/command`. New clients should prefer `/v1/config/model`,
841
- `/v1/config/endpoint`, `/v1/config`, and `/v1/commands/{cmd}`. Compatibility
842
- handlers may accept additional HTTP verbs for old dashboard bundles; only the
843
- methods in the supported inventory above are contractual.
69
+ The complete API inventory is maintained in the [REST reference](docs/reference/rest-api.md). The running daemon serves its machine-readable contract at `/openapi.json`.
844
70
  <!-- END GENERATED REST INVENTORY -->
845
- ## Agent-Explorable Documentation
846
-
847
- Omnius discovers project-local docs skills from `.aiwg/addons/*/skills`. The docs bundles in this repo expose high-signal entrypoints for agents:
848
71
 
849
- ```text
850
- /skills omnius docs
851
- skill_execute name="omnius-docs"
852
- skill_execute name="omnius-rest-docs"
853
- skill_extract name="omnius-realtime-docs" query="How does realtime REST mode work?"
854
- ```
72
+ ## Documentation
855
73
 
856
- The intended pattern is index first, targeted document second, not loading the whole manual into the active context.
74
+ | Topic | Guide |
75
+ | --- | --- |
76
+ | Inference configuration | [Provider protocols and keys](docs/guides/bring-your-own-inference.md) |
77
+ | Commands and tools | [Slash commands](docs/reference/slash-commands.md), [tool discovery](docs/guides/tools-and-web-search.md) |
78
+ | Agent coordination | [Adjudication](docs/ADJUDICATION.md), [agent system map](docs/architecture/agent-system-map.md) |
79
+ | Browser interface | [Dashboard](docs/guides/dashboard.md) |
80
+ | Voice and media | [Realtime voice](docs/guides/realtime.md), [media generation](docs/guides/media-generation.md) |
81
+ | Connected services | [Telegram](docs/guides/telegram.md), [system tray](docs/guides/system-tray.md), [sponsor and peer inference](docs/guides/sponsor-and-cohere.md) |
82
+ | Runtime administration | [Runtime hygiene](docs/operations/runtime-hygiene.md), [access control](docs/operations/security-and-remote-access.md) |
83
+ | Agent-readable documentation | [Documentation index](docs/agent-memory/INDEX.md) |
857
84
 
858
85
  ## Development
859
86
 
860
- ```bash
861
- pnpm install
862
- pnpm -r build
863
- pnpm docs:check
864
- ```
87
+ The repository is a pnpm workspace. `packages/cli` contains the interfaces and daemon; `packages/orchestrator` coordinates agent execution; `packages/execution` provides tools. Supporting packages cover memory, indexing, retrieval, schemas, prompts, and backend integration.
865
88
 
866
- Focused checks used for the docs skill surface:
89
+ Requires pnpm 9 or newer.
867
90
 
868
91
  ```bash
869
- pnpm --filter @omnius/execution exec vitest run tests/skill-discovery.test.ts
870
- pnpm --filter omnius exec vitest run tests/realtime-mode.test.ts tests/command-registry.test.ts
871
- ```
872
-
873
- ## Publishing
874
-
875
- Publish only from `publish/`.
876
-
877
- ```bash
878
- cd omnius
879
- pnpm -r clean || true
880
- find . -name 'tsconfig.tsbuildinfo' -not -path '*/node_modules/*' -delete
92
+ pnpm install
881
93
  pnpm -r build
882
- node scripts/build-publish.mjs
883
- cd publish
884
- mkdir -p .npm-cache
885
- NPM_CONFIG_CACHE=$(pwd)/.npm-cache npm pack --prefer-online --cache-min=0 --registry https://registry.npmjs.org/
886
- NPM_CONFIG_CACHE=$(pwd)/.npm-cache npm publish --access public --prefer-online --cache-min=0 --registry https://registry.npmjs.org/
94
+ pnpm docs:check
887
95
  ```
888
96
 
889
- Before 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`.
97
+ Publishing uses the generated `publish/` package. The build, verification, and release procedure is documented in [AGENTS.md](AGENTS.md).
890
98
 
891
99
  ## License
892
100
 
893
- Omnius 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.
101
+ Omnius is released under [CC-BY-NC-4.0](https://creativecommons.org/licenses/by-nc/4.0/) for non-commercial use. Commercial use, redistribution, hosted services, and enterprise deployment require a commercial license.