Voice Operating System Specifications

August 13, 2026 · View on GitHub

Formal, implementation-agnostic specifications for a voice operating system — a platform that provides a stable application binary interface for voice-interactive applications.

This repository is the source of truth for how components talk to each other and what their data shapes mean. The specs are written generically so they can be implemented by any tool, in any language, and adopted by any voice-assistant project.

What a voice operating system is

A voice OS is not a voice assistant. A voice assistant is a product that answers questions. A voice OS is a platform: it defines the boundary between user input and computation, arbitrates which application handles each utterance, manages conversation state across interactions, and provides a stable ABI that arbitrary third-party applications run against without knowing anything about each other.

The analogy to a general-purpose OS is direct:

OS conceptVoice OS equivalent
Process schedulerPipeline plugin ordering (PIPELINE-1 §5–6)
IPC / message passingThe bus and MSG-1 envelope
Shared memorySession carrier (SESSION-1, SESSION-2)
Process supervisionHandler-lifecycle trio (PIPELINE-1 §8)
Loadable kernel modulesPipeline plugins, transformer plugins
System call ABIThe match(utterances, lang, session) → Match contract

The consequence is that this corpus does not describe a chatbot, an LLM wrapper, or a monolithic product. It describes a runtime: swap the scheduler (pipeline ordering), the NLU engines (pipeline plugins), the dialogue policy (converse / context), the output layer (TTS, display), or any combination — the ABI stays stable and the rest keeps working. A skill written against the intent stack runs on any conformant orchestrator, under any pipeline configuration, in any language a deployment supports.

Draft status. Every spec in this repository is at Draft status (the Status column below). A Draft spec is prescriptive: where an implementation diverges from it, the divergence is an implementation bug, not a defect in the specification (see Authority below).


Goals

The specs exist to make three things possible:

  • Interoperability. Multiple implementations — engines, hosts, plugins, entire assistants — can target the same observable contract instead of reverse-engineering each other's code.
  • Stability. Implementation churn no longer drifts the contract. Each spec is a versioned document; behaviour changes go through a pull request with a version bump.
  • Portability. The specs are written implementation-agnostically so any voice-assistant project can adopt the same formats, grammar, and bus contracts, independent of any one codebase.

The specs cover formats and contracts only. They do not mandate implementation choices — programming language, internal design, storage, threading, transport — those are the implementer's. What they fix is the observable contract.


Authority

These specifications are prescriptive, not descriptive. They define the intended architecture; they are not a transcript of how any current implementation behaves. Where an implementation diverges from a spec here, that divergence is a bug in the implementation, not in the specification.

Anyone is free to adopt these specifications and free to propose changes to them via pull request (see contributing below). Adoption is voluntary; conformance, once adopted, is not.


Specifications

The Version column carries the specification's compatibility class (VERSIONING.md; full policy in appendix/versioning.md).

Intent stack — what a skill defines

IDDocumentVersionStatus
OVOS-INTENT-1Sentence Template Grammar2Draft
OVOS-INTENT-2Locale Resource Formats2Draft
OVOS-INTENT-3Intent Definition1Draft
OVOS-INTENT-4Intent and Entity Registration Bus Contract2Draft

Bus stack — how components talk

IDDocumentVersionStatus
OVOS-MSG-1Bus Message1Draft
OVOS-SESSION-1Session1Draft
OVOS-SESSION-2Session Lifecycle and State Ownership1Draft
OVOS-BRIDGE-1Bus Bridge and Opaque Relay2Draft

Orchestrator stack — what processes utterances

IDDocumentVersionStatus
OVOS-PIPELINE-1Utterance Lifecycle and Pipeline2Draft
OVOS-TRANSFORM-1Transformer Plugins1Draft
OVOS-CONTEXT-1Intent Context2Draft
OVOS-CONVERSE-1Active Handlers and Interactive Response2Draft
OVOS-STOP-1Stop Pipeline Plugin2Draft
OVOS-PERSONA-1Persona Pipeline Plugin2Draft
OVOS-FALLBACK-1Fallback Pipeline Plugin2Draft
OVOS-COMMON-QUERY-1Common Query Pipeline Plugin2Draft

I/O stack — input and output surfaces

IDDocumentVersionStatus
OVOS-AUDIO-IN-1Audio Input Service2Draft
OVOS-AUDIO-1Audio Output Service2Draft
OVOS-GUI-1GUI Display Subsystem1Draft

Media stack — playback and transport

IDDocumentVersionStatus
OVOS-OCP-1Common Playback: the Virtual Media Player1Draft

Each spec carries its own scope statement, design rationale, and conformance section in its header. Open the document for the full picture — the tables above are an index.

Reading order by role:

  • Writing a skill? INTENT-1 → INTENT-2 → INTENT-3. INTENT-4 only if you need the registration wire format.
  • Building a pipeline plugin? PIPELINE-1, then SESSION-1 + SESSION-2, then the role spec (CONVERSE-1, CONTEXT-1, TRANSFORM-1, or STOP-1).
  • Building an orchestrator? MSG-1 → SESSION-1 → SESSION-2 → PIPELINE-1, then INTENT-4, CONTEXT-1, CONVERSE-1, TRANSFORM-1, STOP-1.
  • Surveying the architecture? appendix/overview.md §1 for the three-stack narrative.

For background — design rationale, comparisons with other systems, implementation pointers, the catalogue of known divergences, and known gaps — see APPENDIX.md (index) or browse by topic under appendix/. For term definitions, see GLOSSARY.md. For the version history of each spec, see CHANGELOG.md.


Contributing

Specifications are versioned documents, not living wikis. Any change to a spec — however small — MUST be submitted as a pull request, never committed directly.

Each PR that alters normative content MUST:

  • add a corresponding entry to CHANGELOG.md;
  • set the spec's Version field to its compatibility class — the field is a class, not a per-revision counter (VERSIONING.md).

PRs that touch only the non-normative material — APPENDIX.md and appendix/ files, GLOSSARY.md, this README, examples — do not require a version bump.

For the reference implementation, ecosystem tooling, and who this corpus is produced for, see appendix/overview.md §1.4–1.5.


Credits

NGI0 Commons Fund

This project was funded through the NGI0 Commons Fund, a fund established by NLnet with financial support from the European Commission's Next Generation Internet programme, under the aegis of DG Communications Networks, Content and Technology under grant agreement No 101135429.