Add all scaffolding, design, and decision documentation AKA first commit

This commit is contained in:
iamdoubz
2026-06-30 16:11:55 -05:00
parent 241f421feb
commit b19e01c171
2 changed files with 118 additions and 15 deletions
+28 -13
View File
@@ -1,18 +1,33 @@
WhispAssist is dual-licensed under either of:
* Apache License, Version 2.0 (https://www.apache.org/licenses/LICENSE-2.0)
* MIT license (https://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for
inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual
licensed as above, without any additional terms or conditions.
--------------------------------------------------------------------------------
MIT License MIT License
Copyright (c) 2026 iamdoubz Copyright (c) 2026 WhispAssist contributors
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and Permission is hereby granted, free of charge, to any person obtaining a copy
associated documentation files (the "Software"), to deal in the Software without restriction, including of this software and associated documentation files (the "Software"), to deal
without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell in the Software without restriction, including without limitation the rights
copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
following conditions: copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial The above copyright notice and this permission notice shall be included in all
portions of the Software. copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
USE OR OTHER DEALINGS IN THE SOFTWARE. LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+90 -2
View File
@@ -1,3 +1,91 @@
# WhispAssist # WhispAssist (WA)
A privacy-first, open-sourced, Windows-native meeting assistant that runs entirely on-device **A privacy-first, Windows-native meeting assistant that runs entirely on-device.**
WhispAssist captures system audio, transcribes it locally with Whisper-class models using
on-device acceleration (NPU → GPU → CPU), structures the result into Markdown notes, and
optionally augments them with a locally hosted LLM (Ollama). Audio and transcripts **never
leave the machine** unless the user explicitly exports them.
> Status: **planning + scaffold**. This repository currently contains the full engineering
> plan (`docs/`) and a compiling-intent skeleton (`src-tauri/`, `src/`). No feature code is
> implemented yet. See [`docs/05-roadmap.md`](docs/05-roadmap.md) for the build order.
## Why WhispAssist
| | Granola | Meetily | **WhispAssist** |
|---|---|---|---|
| Local transcription | ❌ cloud | ✅ | ✅ |
| Notes/summaries stay local | ❌ cloud AI | ⚠️ optional | ✅ local-only by design |
| NPU/GPU auto-acceleration | n/a | partial | ✅ NPU→GPU→CPU ladder |
| Calendar + Outlook `.pst` context | ✅ (cloud) | ❌ | ✅ local |
| Bot-free system-audio capture | ✅ | ✅ | ✅ |
| License | proprietary | MIT | open source |
## Technology
WhispAssist is built as a **Tauri 2** application: a small Rust core with a compiled
**Svelte** web frontend rendered through the OS WebView2 (no bundled browser → low idle
memory). The choice and its alternatives are recorded in [`docs/adr/`](docs/adr/).
- **Shell / IPC:** Tauri 2 (Rust ⇄ WebView2)
- **Audio capture:** WASAPI loopback (`wasapi` crate)
- **Transcription:** `whisper-rs` (whisper.cpp: CPU/Vulkan/CUDA) + ONNX Runtime (`ort`) DirectML for the NPU path
- **Diarization:** `sherpa-onnx` (pyannote segmentation + speaker-embedding clustering), fully offline
- **Storage:** SQLite (`sqlx`/`rusqlite`) + on-disk audio/transcript files
- **Local LLM:** Ollama HTTP API on `localhost:11434`
- **Calendar / Outlook:** `outlook-pst` crate for `.pst`, OS notifications for reminders
- **Optional recording:** opt-in (default off), saved as `.wav`, with a consent reminder (ADR-0009)
- **Optional sync:** upload artifacts to your own server — WebDAV covers **Nextcloud, ownCloud, Cloudreve, Seafile, Synology**; **OneDrive/Dropbox/Box** via OAuth. Off by default (ADR-0010)
- **Optional AI/agent integration:** hosted summary providers (Anthropic, OpenAI-compatible) behind the same provider model, **and** a local **MCP server** so your own coding agents (**Claude, Codex, Copilot, OpenCode, …**) can pull meeting context and "feature briefs" to start coding. Off by default; the MCP server is inbound/loopback only (ADR-0011)
## Repository layout
```
WhispAssist/
├── docs/ # The engineering plan (read this first)
│ ├── 00-overview.md Vision, goals, glossary
│ ├── 01-requirements.md Functional + non-functional requirements (traceable IDs)
│ ├── 02-architecture.md Components, data flow, threading model
│ ├── 03-data-model.md SQLite schema, file layout, transcript JSON
│ ├── 04-api-contracts.md Tauri commands/events + internal Rust service traits
│ ├── 05-roadmap.md 8 phases, task breakdown, acceptance criteria
│ ├── 06-test-strategy.md Test plan per phase + quality gates
│ ├── 07-research-findings.md Validated stack with sources
│ └── adr/ Architecture Decision Records (0001–0010)
├── src-tauri/ # Rust core (service module skeletons)
├── src/ # Svelte frontend skeleton
├── scripts/ # Dev/model-download helper scripts
└── tests/ # Test fixtures + integration test scaffolding
```
## Getting started (for builders)
Prerequisites once implementation begins: Rust (stable), Node.js 20+, the Tauri CLI, and
WebView2 runtime (preinstalled on Windows 11). Then:
```bash
npm install
npm run tauri dev # once src-tauri/Cargo.toml dependencies are filled in
```
The current skeleton intentionally does **not** compile end-to-end — modules contain typed
stubs and `todo!()` markers that map 1:1 to roadmap tasks. Start at Phase 1 in
[`docs/05-roadmap.md`](docs/05-roadmap.md).
## Privacy guarantee
WhispAssist originates **no outbound connection for audio or transcript content** except to
destinations **you explicitly configure** — an LLM endpoint (local Ollama by default, or a hosted AI
provider if you choose one) and any sync targets you enable — plus explicit model downloads.
Everything optional is **off by default**; with nothing configured, WA makes no content egress at
all. The local **MCP server** (for handing meetings to your coding agents) is **inbound on loopback
and adds no egress** — data only leaves via the agent's own provider, which WA discloses. The set of
reachable hosts is an allowlist derived from your settings and enforced in the core (and verified by
a CI network test). Recording is opt-in; sync/AI credentials live in the OS credential store, never
in config files. See the privacy requirements (`FR-SEC-*`, `NFR-SEC-*`, `FR-SYNC-*`, `FR-MCP-*`) in
[`docs/01-requirements.md`](docs/01-requirements.md) and ADRs 0009–0011.
## License
Dual-licensed under MIT or Apache-2.0, at your option. See [`LICENSE`](LICENSE).