This release is a pre-release and may not be stable for production use.
VoiceMD
A version-controlled communication contract for AI agents.
VOICE.md defines how an agent communicates: how it explains uncertainty,
disagrees, adapts to an audience, structures an answer, and speaks through a
voice interface. It does not grant capabilities or override facts, safety,
permissions, tools, exact quotations, or required schemas.
Website · Specification · JSON Schema · Azure proof · Azure Voice Lab · Security model
Status: independent draft
0.1.0-draft.2, dated 2026-08-24, with Python reference implementation0.1.0a3. Usable and testable; not a vendor-adopted or standards-body-approved format.
AGENTS.md what the agent does and how it works
DESIGN.md how the product looks and behaves visually
STORYLINE.md how the experience unfolds
VOICE.md how the agent communicates and interacts
See the difference
The three contract-compliant reference outputs below use the same synthetic
incident facts. They are deterministic examples derived from the bundled L3
contract cases; only the selected VOICE.md changes.
Known facts: service degraded; p95 latency 840 ms; no data loss reported; cause not confirmed; rollout paused.
| Contract | Contract-compliant reference output | Communication behavior |
|---|---|---|
incident_commander |
“The service is degraded. No data loss is reported. The ninety-fifth percentile latency is 840 milliseconds. Keep the rollout paused while we verify the cause.” | Verified status → impact → next action |
calm_support |
“I know this disruption is frustrating. The service is degraded, with 840-millisecond latency, but no data loss is reported. Please keep the rollout paused while the team investigates the unconfirmed cause.” | Acknowledge impact without false reassurance |
executive_brief |
“Decision: keep the rollout paused. The service is degraded, with 840-millisecond latency and no reported data loss. The cause is unconfirmed, so resuming now creates avoidable operational risk.” | Decision → evidence → material risk |
Listen to the recorded Azure samples and inspect their exact transcripts.
Recorded Azure proof snapshot
One local proof run on 2026-08-24 produced 11 manifests that passed the evidence schema at capture time and are hash-bound in the public snapshot. The synthetic 3×3 matrix completed all nine provider calls and retained every exact output together with its deterministic contract-check record.
| Azure deployment | Lane | Runs completed | What was captured |
|---|---|---|---|
gpt-audio-1.5 |
Chat Completions text + audio | 3/3 | Non-realtime audio output under three contracts |
gpt-realtime-2.1 |
Realtime WebSocket text → audio | 3/3 | Effective session instructions and spoken responses |
gpt-realtime-2.1-mini |
Realtime WebSocket text → audio | 3/3 | The same contract matrix on the smaller Realtime deployment |
gpt-live-transcribe |
Realtime transcription | 1/1 | Raw provider segments without VoiceMD rewriting |
gpt-live-transcribe → gpt-realtime-2.1 |
End-to-end showcase | 1/1 | Raw ASR remained raw; VoiceMD shaped only the spoken response |
The proof page includes playable samples, exact transcripts, deterministic contract-check records, and the authority-boundary showcase. These observations are not a benchmark, SLA, quality score, fixed model-identity claim, or production readiness certification. Microsoft currently documents GPT Realtime 2.x as preview; recheck availability and lifecycle before production use.
Install and run
Python package
python -m pip install voicemd
voicemd init --mode full
voicemd validate --strict
voicemd compile --profile executive_brief
voicemd test
For Azure audio, Realtime, and transcription demos:
python -m pip install 'voicemd[azure-voice]'
voicemd-azure doctor
Python 3.10–3.14 is supported.
Zero-install Markdown
Copy the simple template and include it only when generating human-facing language:
cp templates/simple/VOICE.md ./VOICE.md
from pathlib import Path
voice = Path("VOICE.md").read_text(encoding="utf-8")
system_prompt = BASE_SYSTEM_PROMPT + "\n\n" + voice
This is conformance level L0 Plain and needs no package or parser. Minimal loaders are also available in Python, Node.js, and shell:
python lite/voice_loader.py
node lite/load-voice.mjs
bash lite/load-voice.sh
Write a contract
A VOICE.md can be plain Markdown or structured YAML frontmatter plus Markdown.
The structured form can be selected, compiled, linted, and tested.
---
voice_spec: "0.1"
kind: VoiceContract
name: "Direct technical advisor"
version: "1.0.0"
activation:
mode: contextual
include: [chat, explanation, document, spoken]
exclude: [code, structured_data, tool_call, exact_quote]
authority:
may_control: [tone, vocabulary, structure, verbosity]
must_not_control: [facts, safety, permissions, tools, schemas]
identity:
sounds_like:
- A practitioner who has done the work
not_like:
- A marketing copywriter
epistemics:
uncertainty: State the missing variable and why it matters.
interaction:
disagreement: Correct false premises directly and provide the better model.
lexicon:
forbidden: ["Great question", "Absolutely!"]
profiles:
spoken:
surface: spoken
overrides:
response:
max_words: 80
---
# Core behavior
Lead with the conclusion. Prefer concrete examples and failure modes over
abstract claims.
Start from the smallest suitable template:
| Template | Level | Use it when |
|---|---|---|
templates/simple/VOICE.md |
L0 | A model only needs readable Markdown |
templates/full/VOICE.md |
L3 | You need profiles, hierarchy, lint rules, and tests |
templates/spoken/VOICE.md |
L3 | The output is speech/TTS or realtime dialogue |
Coding-agent adapters
voicemd install --target all --mode auto
voicemd doctor
auto installs a small managed bootstrap and a voice-contract Agent Skill.
The harness loads the full contract for human-facing output, not for code
patches, tool calls, raw data, or mandatory JSON.
explicit requires native invocation where supported:
voicemd install --target all --mode explicit
- Codex:
$voice-contract - Claude Code, GitHub Copilot CLI, Cursor:
/voice-contract - portable marker after a contract is already available:
@voiceorvoice:on - Aider: start the opted-in session with
aider --config .aider.voice.yml
Included compatibility adapters cover Codex, Claude Code, Gemini CLI, Cursor,
GitHub Copilot, Cline, Windsurf, OpenCode, Aider, and generic Agent
Skills-compatible harnesses. Compatibility does not imply vendor endorsement
or native recognition of the VOICE.md filename. See
docs/HARNESS_COMPATIBILITY.md.
Applications and sidecar
Compile a selected contract directly:
voicemd compile --profile executive_brief
voicemd compile --profile voicechat --compact --max-chars 5000
voicemd compile --profile nemotron_voicechat --format nemotron-ascii
voicemd compile --profile executive_brief --format sha256
Or use the provider-neutral HTTP sidecar:
voicemd serve --host 127.0.0.1 --port 8765
curl 'http://127.0.0.1:8765/v1/voice/prompt?surface=chat&audience=engineer'
Endpoints:
GET /healthGET /v1/voice/contractGET /v1/voice/promptPOST /v1/voice/lint
The repository includes a Python API/middleware, TypeScript and .NET clients, OpenAPI, optional MCP server, Docker Compose, Kubernetes sidecar, and examples for OpenAI-compatible servers, Transformers, vLLM, Ollama, and llama.cpp.
Azure Voice Proof Lab
The optional proof harness compares three generation deployments against three
contrasting L3 spoken contracts. Separate commands exercise
gpt-live-transcribe and the transcription-to-Realtime authority boundary.
Create an ignored .env file with mode 0600; the CLI loads it by default:
AZURE_OPENAI_ENDPOINT=https://YOUR-RESOURCE.openai.azure.com
AZURE_OPENAI_API_KEY=YOUR-KEY
chmod 600 .env
voicemd-azure doctor
voicemd-azure matrix --scenario degraded-service-en
voicemd-azure gallery
matrix performs nine billable calls by default. Restrict it while developing:
voicemd-azure matrix \
--scenario degraded-service-en \
--lanes realtime-mini
Raw live transcription deliberately runs with VoiceMD activation disabled:
voicemd-azure transcribe \
--input-audio input-24k-mono.wav \
--language en \
--delay medium
The end-to-end authority demo first stores raw ASR, then sends it as untrusted user speech to a fresh VoiceMD-governed Realtime response:
voicemd-azure showcase \
--input-audio input-24k-mono.wav \
--voice examples/azure-voice/contracts/executive_brief/VOICE.md
Each run writes a schema-validated manifest, SHA-256 inventory, exact context
snapshots, sanitized event timing, transcript, and playable WAV where
applicable. Credentials stay in environment state or an ignored environment
file. Manifests store only endpoint fingerprints; WebSocket and REST redirects
are rejected. Read the paid-call warning, PCM input requirements, complete
commands, and proof boundaries in
examples/azure-voice/README.md.
Discovery, hierarchy, and precedence
The reference implementation resolves sources broad-to-specific:
- Explicit
--pathvalues, orVOICE_MD, replace automatic discovery. - An optional global contract is read from
${VOICE_MD_HOME:-~/.config/voicemd}. - From project root to the current directory, at most one file wins per level:
VOICE.override.md,VOICE.md,.voice/VOICE.override.md, then.voice/VOICE.md. - Local
extendsfiles load before the file that extends them. - More specific values win; rules and tests merge deterministically by ID.
repo/VOICE.md organization defaults
repo/apps/VOICE.md product behavior
repo/apps/support/VOICE.override.md support-agent override
Remote extends are rejected. Explicit, discovered, and inherited sources must
remain inside an approved canonical root; symlinks and .env files cannot
widen that boundary. File, aggregate, source-count, YAML-node, alias, and
inheritance-depth limits are enforced.
Activation and authority
Apply VoiceMD to:
- chat, explanations, messages, reports, summaries, and UI copy;
- audience-specific or tone-specific human communication;
- spoken dialogue and TTS-friendly rendering.
Do not transform:
- code, patches, SQL, or configuration syntax;
- tool calls or tool results;
- required JSON/XML/YAML or another exact schema;
- exact quotations, raw data, or raw transcripts;
- faithful translation unless adaptation is explicitly required.
Higher-priority safety, facts, permissions, tools, legal requirements, and
application instructions always win. VOICE.md is communication policy, not
an authorization system or prompt-injection security boundary.
Conformance and portability
| Level | Meaning |
|---|---|
| L0 Plain | Readable non-empty Markdown |
| L1 Core | Valid structured metadata plus concrete guidance |
| L2 Contextual | Activation, authority, epistemics, interaction, profiles, or speech behavior |
| L3 Testable | At least one non-vacuous deterministic rule or inline executable test |
An invalid or empty contract is nonconforming. The exact selected
profile/audience/surface/tone result is validated again before compilation,
linting, sidecar output, or provider submission.
Structured frontmatter uses the YAML 1.2 JSON schema subset. Canonical JSON and SHA-256 use RFC 8785 JCS after VoiceMD's stricter portable safe-integer checks and exclude host filesystem paths.
Run the language-neutral core suite with the independent TypeScript verifier:
node integrations/typescript/generated/conformance-verifier.js \
conformance/vectors.json
The 57 vectors cover merge, selection, compact rendering, JCS, and hashing. This bundled Python-independent verifier is not a complete second implementation of YAML parsing, filesystem discovery, or runtime adapters.
CLI reference
| Command | Purpose |
|---|---|
voicemd init |
Create simple, full, or spoken templates |
voicemd discover |
Show active files in precedence order |
voicemd validate |
Run schema and semantic validation |
voicemd compile |
Render prompt, compact, JSON, canonical hash, or ASCII output |
voicemd lint |
Apply deterministic rules to generated prose |
voicemd test |
Run inline contract cases |
voicemd install |
Add managed harness adapters |
voicemd uninstall |
Remove only managed adapter content |
voicemd doctor |
Inspect contract and adapter health |
voicemd serve |
Run the HTTP sidecar |
voicemd-azure |
Run Azure audio/Realtime/transcription proof commands |
Use voicemd <command> --help or voicemd-azure --help for full options.
Repository map
| Path | Contents |
|---|---|
SPECIFICATION.md |
Normative discovery, merge, authority, compilation, security, and conformance rules |
schema/ |
Public JSON Schema |
src/voicemd/ |
Python reference implementation and packaged resources |
.agents/skills/ |
Canonical on-demand Agent Skill |
templates/ |
Simple, full, and spoken starter contracts |
adapters/ |
Coding-harness compatibility notes and bootstrap payloads |
integrations/ |
APIs, clients, sidecars, model runtimes, containers, and MCP |
examples/azure-voice/ |
Azure proof contracts, scenarios, schema, and operator guide |
evals/ |
Deterministic and model-based evaluation pack |
conformance/ |
Language-neutral vectors and bundled Python-independent TypeScript core verifier |
lite/ |
Minimal Python, Node.js, and shell loaders |
site/ |
Standard website plus checksum-bound Azure evidence page |
tests/ |
Unit, regression, security, release, and adapter tests |
docs/ |
Architecture, activation, merge, security, compatibility, ADRs, and references |
release/ |
Verified wheel, sdist, SBOM, provenance, checksums, and build record |
Governance is explicit: GOVERNANCE.md,
CONTRIBUTING.md,
CODE_OF_CONDUCT.md,
SECURITY.md,
ROADMAP.md, and
CHANGELOG.md.
Security and release integrity
- Sources are root-contained; remote
extends, symlink escapes,.envpaths, unbounded YAML expansion, and invalid selected contracts fail closed. - Harness installation is atomic, ownership-tracked, and non-destructive to modified or unowned content.
- The HTTP sidecar binds to
127.0.0.1by default and is not an authenticated public gateway. - Azure credentials never belong in CLI arguments, captured output, manifests, transcripts, or Git.
- Release artifacts are built twice with a pinned toolchain and compared byte-for-byte.
BUILD_INFO.json, SHA-256 checksums, SPDX SBOM, and unsigned in-toto/SLSA provenance bind artifacts to a source snapshot.- GitHub publication adds hosted CI and signed attestations; local unsigned provenance proves consistency, not publisher identity.
Verify a checked-out release without executing artifact code:
python scripts/verify_release.py \
--distributions release \
--metadata release \
--source-root . \
--source-revision "$(jq -r .source_revision release/BUILD_INFO.json)" \
--release-revision "$(jq -r .release_revision release/BUILD_INFO.json)"
See docs/SECURITY_MODEL.md and
docs/RELEASE_CHECKLIST.md.
Быстрый старт на русском
Без установки
cp templates/simple/VOICE.md ./VOICE.md
Передавайте VOICE.md модели только для текста, который читает или слышит
человек. Не применяйте его к code, tool calls/results, обязательному JSON, raw
data, raw transcripts и exact quotations.
CLI и coding agents
python -m pip install voicemd
voicemd init --mode full
voicemd validate --strict
voicemd install --target all --mode auto
voicemd doctor
auto устанавливает маленький managed bootstrap и Agent Skill. Полный contract
загружается для human-facing output, а не для каждой операции агента.
Azure voice demos
python -m pip install 'voicemd[azure-voice]'
Создайте ignored .env с правами 0600:
AZURE_OPENAI_ENDPOINT=https://YOUR-RESOURCE.openai.azure.com
AZURE_OPENAI_API_KEY=YOUR-KEY
chmod 600 .env
voicemd-azure doctor
voicemd-azure matrix --scenario degraded-service-en --lanes realtime-mini
voicemd-azure gallery
Полная matrix делает девять billable calls. gpt-live-transcribe сохраняет raw
provider segments без VoiceMD transformation; showcase применяет contract
только к следующему spoken response. Ключ читается только из environment или
ignored environment file, а evidence не хранит endpoint URL.
Главная граница
VOICE.md управляет tone, vocabulary, structure, verbosity, disagreement,
uncertainty, audience adaptation и spoken delivery. Он не может менять safety,
facts, permissions, tools, legal obligations, exact quotations или required
output schema.
Boundaries and prior art
VoiceMD does not claim deterministic model behavior, voice cloning, acoustic
identity, vendor adoption, independent security certification, or standards
body approval. The filename and brand-voice concept have prior art, including
the independent Efeonce voice.md project; VoiceMD does not claim invention of
the filename or affiliation with that project. See
docs/BRAND_COMPATIBILITY.md.
License
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file voicemd-0.1.0a3.tar.gz.
File metadata
- Download URL: voicemd-0.1.0a3.tar.gz
- Upload date:
- Size: 348.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
af1f32deac593ad5917701224c930208b45489705b8f57069875908d5bf0b6a7
|
|
| MD5 |
aa0a560c46998293bd2cc5e02fdf3b67
|
|
| BLAKE2b-256 |
02a070463c464ef57d28a53c6815379e2339e52b89f200687d426bde1a5cd946
|
Provenance
The following attestation bundles were made for voicemd-0.1.0a3.tar.gz:
Publisher:
publish.yml on forcewake/voicemd-agent-standard
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
voicemd-0.1.0a3.tar.gz -
Subject digest:
af1f32deac593ad5917701224c930208b45489705b8f57069875908d5bf0b6a7 - Sigstore transparency entry: 2582033192
- Sigstore integration time:
-
Permalink:
forcewake/voicemd-agent-standard@6460b1a6e14440d81ddbcb5cc210d5337c8fc253 -
Branch / Tag:
refs/tags/v0.1.0a3 - Owner: https://github.com/forcewake
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@6460b1a6e14440d81ddbcb5cc210d5337c8fc253 -
Trigger Event:
release
-
Statement type:
File details
Details for the file voicemd-0.1.0a3-py3-none-any.whl.
File metadata
- Download URL: voicemd-0.1.0a3-py3-none-any.whl
- Upload date:
- Size: 123.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eae63055956e1dd1d692612d5bd3957ab5aa973adab920c295a371ad016ee82a
|
|
| MD5 |
557a00886481215432245953b55b080f
|
|
| BLAKE2b-256 |
a9e55c0849f6c6406651962e429cd5142b6f7f7c0da290165a84081040c644bc
|
Provenance
The following attestation bundles were made for voicemd-0.1.0a3-py3-none-any.whl:
Publisher:
publish.yml on forcewake/voicemd-agent-standard
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
voicemd-0.1.0a3-py3-none-any.whl -
Subject digest:
eae63055956e1dd1d692612d5bd3957ab5aa973adab920c295a371ad016ee82a - Sigstore transparency entry: 2582033196
- Sigstore integration time:
-
Permalink:
forcewake/voicemd-agent-standard@6460b1a6e14440d81ddbcb5cc210d5337c8fc253 -
Branch / Tag:
refs/tags/v0.1.0a3 - Owner: https://github.com/forcewake
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@6460b1a6e14440d81ddbcb5cc210d5337c8fc253 -
Trigger Event:
release
-
Statement type: