wcpdr commited on
Commit
cfc6103
Β·
verified Β·
1 Parent(s): b524eb0

Create README.md

Browse files
Files changed (1) hide show
  1. README.md +91 -0
README.md ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ tags:
4
+ - voice
5
+ - wake-word
6
+ - tts
7
+ - piper
8
+ - openwakeword
9
+ - signed
10
+ ---
11
+
12
+ # WCPDR-AI / voice-models
13
+
14
+ Signed voice-model artifacts for the wcpdr-agent Windows desktop assistant. The agent fetches models from this repo at first run via `huggingface_hub`; every artifact is verified against the Ed25519
15
+ signature below before it touches the runtime.
16
+
17
+ ## Asset layout
18
+
19
+ ```
20
+ voice-models/
21
+ β”œβ”€β”€ README.md # this file
22
+ β”œβ”€β”€ manifest.json # canonical asset list (signed)
23
+ β”œβ”€β”€ manifest.json.sig # Ed25519 signature over manifest.json
24
+ β”œβ”€β”€ wake/
25
+ β”‚ β”œβ”€β”€ hey_jarvis_v1.onnx # mirrored from openWakeWord v0.5.1 stock model
26
+ β”‚ β”œβ”€β”€ hey_jarvis_v1.onnx.sig
27
+ β”‚ β”œβ”€β”€ hey_alex_v1.onnx # custom-trained variants land here
28
+ β”‚ β”œβ”€β”€ hey_alex_v1.onnx.sig
29
+ β”‚ └── ...
30
+ └── piper/
31
+ β”œβ”€β”€ en_US-amy-medium.onnx
32
+ β”œβ”€β”€ en_US-amy-medium.onnx.sig
33
+ β”œβ”€β”€ en_US-amy-medium.onnx.json # Piper voice metadata
34
+ β”œβ”€β”€ es_MX-claude-high.onnx
35
+ β”œβ”€β”€ es_MX-claude-high.onnx.sig
36
+ └── es_MX-claude-high.onnx.json
37
+ ```
38
+
39
+ ## Signing key
40
+
41
+ All artifacts in this repo are signed with a single Ed25519 key dedicated to voice models. The key is **separate from the MSI installer-update signing key** so the two rotation calendars don't have to
42
+ coordinate, and a leak of one has narrower blast radius.
43
+
44
+ **Public key fingerprint** (SHA-256 of `VOICE_MODEL_PUBLIC_KEY_B64`, hex):
45
+
46
+ ```
47
+ 716f3bfefd5b887e735adc198231d8c58b4917257f401eee3ce930b79cc4feb1
48
+ ```
49
+
50
+ The matching public key value (base64-encoded raw 32 bytes):
51
+
52
+ ```
53
+ KO8A6pii2YrmgFcTtGMX0cltdWjyfgo+vdB/VJTvyMk=
54
+ ```
55
+
56
+ The wcpdr-agent build pipeline stamps this same value into the agent's signing module at compile time. Operators can verify their installed agent's bundled key matches by checking the agent's
57
+ `--print-voice-pubkey` output (when available); the printed value should hash to the fingerprint above. If it doesn't, the agent is from a different rotation cycle than the artifacts in this repo and won't
58
+ trust them β€” either re-sign artifacts with the agent's expected key (operators) or upgrade the agent (users).
59
+
60
+ ## Verification chain
61
+
62
+ Top-down chain of trust for any artifact in this repo:
63
+
64
+ 1. Agent is built with `VOICE_MODEL_PUBLIC_KEY_B64` baked into its signing module.
65
+ 2. Agent fetches `manifest.json` + `manifest.json.sig` from this repo.
66
+ 3. Agent verifies `manifest.json.sig` against the bundled public key β€” failure = refuse all artifacts in this manifest.
67
+ 4. Agent reads asset entries from `manifest.json` (each entry has `repo_path`, `sha256`, `signature_filename`).
68
+ 5. For each artifact the agent needs, it fetches the artifact + its `.sig` companion file.
69
+ 6. Agent verifies SHA-256 against the manifest entry, then verifies the per-artifact Ed25519 signature.
70
+ 7. Verified artifact gets atomically renamed into the agent's local cache and loaded into the runtime (Whisper / openWakeWord / Piper).
71
+
72
+ A failure at any step surfaces as `voice_error{code: model_signature_invalid}` IPC to the tray; voice mode stays off; no silent "load anyway" fallback.
73
+
74
+ ## License
75
+
76
+ This repo's contents are individually licensed:
77
+
78
+ - `wake/hey_jarvis_v1.onnx` β€” bit-identical mirror of openWakeWord v0.5.1's `hey_jarvis_v0.1.onnx` (Apache-2.0).
79
+ - `piper/en_US-amy-medium.onnx` and `piper/es_MX-claude-high.onnx` β€” upstream Piper TTS voices (MIT). Voice attribution lives in each `.json` metadata companion.
80
+ - Custom-trained wake-word variants (e.g. `hey_alex_v1.onnx`) β€” Apache-2.0 (matches openWakeWord training pipeline output).
81
+ - This README and `manifest.json` β€” Apache-2.0.
82
+
83
+ Re-distributable under the terms of each artifact's individual license.
84
+
85
+ ## Reporting a compromised key
86
+
87
+ If you have evidence the signing key has leaked, contact the wcpdr-agent maintainers directly. Do **not** include the leaked key value in any message β€” describe the suspected leak vector (where you saw it,
88
+ when, who has access) and we'll initiate the rotation procedure.
89
+
90
+ The wcpdr-agent source repository is private; if you don't have access, route the report through your wcpdr point of contact. Once a leak is confirmed, the maintainers rotate per the agent's internal
91
+ voice-models runbook and re-sign every artifact in this repo within 24 hours. A new agent release tag (with the new public key baked in) follows on the same day.