# Meeting Assistant Meeting Assistant is a .NET 10 server application for capturing and enriching meetings. Its core purpose is to work with any kind of meeting, including in-person meetings. Integrations with platforms such as Teams, Zoom, or similar tools may augment the experience later, but the system must not depend on those product APIs for its primary meeting flow. The application is intended to: - create an Obsidian markdown note before transcription starts - keep meeting metadata, user notes, detected context, and links to generated output in that note - toggle recording/transcription mode through a configurable global hotkey - switch the active transcription profile during a meeting with a profile-specific toggle hotkey - abort and discard an active recording through a configurable global hotkey - show a Windows taskbar notification icon with state-aware recording controls - capture active-window screenshots through a configurable global hotkey - capture microphone input and computer output into one transcription stream - transcribe meetings with speaker attribution - use a configurable speech recognition pipeline, with local Whisper as the first version 1 fallback - use FunASR or local Whisper plus pyannote as configurable speaker-attribution paths - write transcript markdown files into the configured vault folder - generate summaries, decisions, and next steps - build and maintain a project knowledge base from meetings and future context sources - use Microsoft Agent Framework-based agents to reason over meeting and project context - give agents tools for project lookup, keyword lookup, retrieval-augmented generation, and project file updates in existing projects ## Repository Status This repository currently contains the initial .NET 10 application skeleton, a health endpoint, and the first OpenSpec change for version 1. ## Local Development Restore, build, and test: ```powershell dotnet restore MeetingAssistant.slnx dotnet build MeetingAssistant.slnx dotnet test MeetingAssistant.slnx ``` Run the server: ```powershell dotnet run --project MeetingAssistant ``` ## Local Autostart and Restart For the local Windows workstation, use the snippets restart helper instead of running the app directly when you want a durable background instance: ```powershell powershell -ExecutionPolicy Bypass -File C:\Manuel\snippets\restart-meeting-assistant.ps1 ``` The restart helper publishes `MeetingAssistant\MeetingAssistant.csproj` as `net10.0-windows10.0.19041.0` into a fresh temp folder under `C:\Manuel\meeting-assistant\tmp\meeting-assistant-runtime`. Only after that publish succeeds does it stop any active Meeting Assistant instance on port `5090` and start the newly published executable detached from the script. The detached starter writes logs and the last process id to: ```text %LOCALAPPDATA%\MeetingAssistant\Logs\meeting-assistant.out.log %LOCALAPPDATA%\MeetingAssistant\Logs\meeting-assistant.err.log %LOCALAPPDATA%\MeetingAssistant\Logs\meeting-assistant.pid ``` This script is also the intended autostart target. Add a Windows Startup shortcut to `C:\Manuel\snippets\restart-meeting-assistant.ps1` when the app should rebuild and restart automatically after login. The initial endpoints are: ```text GET /health GET /recording/status POST /recording/toggle POST /recording/start POST /recording/stop POST /recording/abort POST /asr/transcribe-file POST /asr/diarize-file POST /diagnostics/workflow/reload POST /diagnostics/settings-and-logs/show POST /meetings/current/summary/run POST /meetings/summary/retry GET /meetings/summary/retry?summaryPath=... ``` ## Configuration Meeting Assistant uses normal .NET configuration under the `MeetingAssistant` section. The repository `appsettings.json` stores local paths, endpoint URLs, model names, and environment variable names; secret values should stay in environment variables referenced by `KeyEnv` settings. See `docs/meeting-assistant-configuration.md` for the detailed configuration reference, including recording providers, FunASR, Whisper, Azure Speech, speaker identification, automation rules, screenshots, summary agents, and the settings/logs assistant. ## Spec Workflow This repository is OpenSpec-driven. Before changing behavior, read: 1. `README.md` 2. `openspec/config.yaml` 3. existing specs in `openspec/specs` 4. active change specs in `openspec/changes/*/specs` The initial active change is: ```text openspec/changes/define-meeting-assistant-v1 ``` Validate it with: ```powershell openspec validate define-meeting-assistant-v1 --strict ```