Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
79 commits
Select commit Hold shift + click to select a range
b517001
docs: complete Phase 0 documentation for Meeting Co-Pilot
meinhoongagan Dec 24, 2025
723e38c
feat: add web audio transcription with Hindi/English support
meinhoongagan Jan 2, 2026
40a7c70
chore: remove Tauri integration from codebase
meinhoongagan Jan 3, 2026
18e55b6
feat: add real-time Groq streaming transcription
meinhoongagan Jan 5, 2026
24e056e
feat: Add Ask AI with context linking and Catch Me Up features
meinhoongagan Jan 8, 2026
371e5cb
docs: add meeting-copilot-docs
meinhoongagan Jan 9, 2026
22d3176
feat: Integrate Gemini as primary LLM and enhance AI chat
meinhoongagan Jan 10, 2026
8b11468
feat: enhance notes generation, AI chat, and meeting management
meinhoongagan Jan 11, 2026
bbeb875
feat: real web search with SerpAPI + crawling + Gemini summarization
meinhoongagan Jan 11, 2026
6a48c66
feat: LLM Context Prompting - improve transcription accuracy
meinhoongagan Jan 11, 2026
3919711
Merge branch 'feature/llm-context-prompting'
meinhoongagan Jan 11, 2026
90a929a
revert: remove LLM context prompting - caused language detection issues
meinhoongagan Jan 11, 2026
636c2d1
chore(docker): update containers for streaming-based transcription pi…
meinhoongagan Jan 12, 2026
27ef008
feat(ask-ai): Implement grounded prompt strategy with full transcript…
meinhoongagan Jan 12, 2026
d5a873e
docs: Update Ask AI context strategy documentation
meinhoongagan Jan 12, 2026
f5c2a06
feat: enhance Gemini notes prompt with spelling correction handling
meinhoongagan Jan 12, 2026
8533488
feat: smart timer trigger logic for cleaner transcripts
meinhoongagan Jan 13, 2026
03f412f
fix: prevent code blocks in meeting notes to avoid rendering issues
meinhoongagan Jan 13, 2026
4e10bd2
Add environment-based configuration for production deployment
meinhoongagan Jan 14, 2026
3bafaca
Update config with production backend URLs
meinhoongagan Jan 14, 2026
7fe8ca9
Update config to use ngrok HTTPS for SSL WebSocket
meinhoongagan Jan 14, 2026
a7ee24f
Add ngrok-skip-browser-warning header helper
meinhoongagan Jan 14, 2026
69caab5
Fix config.ts syntax
meinhoongagan Jan 14, 2026
89373dc
Update config to use meet.digest.lat domain
meinhoongagan Jan 14, 2026
b09da8c
Fix API route mismatches - use correct backend paths
meinhoongagan Jan 14, 2026
afaf6e6
feat: Implement Google OAuth and secure personal data isolation
meinhoongagan Jan 15, 2026
d521f00
docs: Refactor code comments to use security and ownership terminology
meinhoongagan Jan 15, 2026
badec42
docs: Refactor code comments in main.py and db.py for security and ow…
meinhoongagan Jan 15, 2026
aad30d5
fix(frontend): resolve Vercel build errors by fixing route exports an…
meinhoongagan Jan 15, 2026
dc9303f
UI: hide sidebar on login page
meinhoongagan Jan 15, 2026
7207f00
debug(rbac): add logging for permission checks
meinhoongagan Jan 15, 2026
f018bf2
fix(frontend): use authFetch for meeting deletion and title updates
meinhoongagan Jan 15, 2026
c4101a5
docs: add planning for chat-based notes and personal API keys
meinhoongagan Jan 15, 2026
17f906e
feat: Implementation for User-Provided API Keys
meinhoongagan Jan 16, 2026
336fc7b
feat: Implementation for User-Provided API Keys
meinhoongagan Jan 16, 2026
7f45f17
fix(backend/frontend): resolve meeting save failures, transcript trun…
meinhoongagan Jan 16, 2026
70b8ffa
fix: meeting save failures, note truncation, and auth refresh logic
meinhoongagan Jan 16, 2026
c3b6bb9
Merge branch 'feature/user-provided-api-keys' into main
meinhoongagan Jan 16, 2026
e79512b
fix: Auth.ts
meinhoongagan Jan 16, 2026
e36732a
feat: Implement local transcript recovery with auto-save and re-authe…
meinhoongagan Jan 16, 2026
fcfa24c
feat(auth): enforce user keys & optimize session handling
meinhoongagan Jan 16, 2026
9710aad
fix(backend): repair rbac & enforce user api keys
meinhoongagan Jan 16, 2026
63c104d
Merge branch 'feature/user-provided-api-keys' into main
meinhoongagan Jan 16, 2026
9820405
feat: Implement Chat-Based Note Interface (Phase 1)
meinhoongagan Jan 18, 2026
64008e6
Update refine_notes prompt to require detailed change list
meinhoongagan Jan 18, 2026
6b9d57e
chore: rename product to Pnyx and update CORS settings
meinhoongagan Jan 20, 2026
564af18
feat: Integrate TEN VAD for voice activity detection
meinhoongagan Jan 20, 2026
a512eb5
docs: document TEN VAD integration in architecture deviation log
meinhoongagan Jan 20, 2026
9e196af
feat: prioritize Gemini, fix reindexing and WebSocket race condition
meinhoongagan Jan 21, 2026
18efbc2
chore: documentation migration and legacy cleanup
meinhoongagan Jan 21, 2026
f961519
fix: resolve backend crashes and improve data integrity
meinhoongagan Jan 22, 2026
b58a86e
feat: add automatic semantic search indexing for uploaded transcripts
meinhoongagan Jan 22, 2026
6d81430
refactor(frontend): remove About page and update logo behavior
meinhoongagan Jan 22, 2026
05878cf
feat(phase-5): stability, versioning, and visualization
meinhoongagan Jan 29, 2026
04b73ed
feat(meeting-details): add live transcript toggle and improve stability
meinhoongagan Jan 29, 2026
500d827
docs: update project status and add import feature plan
meinhoongagan Jan 29, 2026
b89d6af
feat: implement import recording feature
meinhoongagan Jan 29, 2026
c3f82f4
docs: update phase status to Phase 6 In Progress
meinhoongagan Jan 29, 2026
69e1c79
fix: resolve upload internal server error
meinhoongagan Jan 29, 2026
4964bed
fix: resolve Path NameError in upload feature
meinhoongagan Jan 29, 2026
02c32c1
fix: resolve upload NameError by importing Path
meinhoongagan Jan 29, 2026
3628d17
fix: add missing imports for file upload
meinhoongagan Jan 29, 2026
2c7779b
fix: allow diarization for imported files
meinhoongagan Jan 29, 2026
f705e9c
feat: implement diarization versioning and import support
meinhoongagan Jan 29, 2026
dedc21d
fix: resolve diarization status showing 'not_recorded'
meinhoongagan Jan 29, 2026
36f5c3b
fix: implement caching and retry for Google certs
meinhoongagan Jan 29, 2026
af5678c
fix(diarization): resolve import recording issues and improve error h…
meinhoongagan Jan 29, 2026
f05323d
feat: improve error handling for invalid Groq API keys
meinhoongagan Jan 29, 2026
0fba199
docs: context-aware chatbot with search design
meinhoongagan Jan 29, 2026
75a0774
docs: move design doc to pnyx-docs directory
meinhoongagan Jan 29, 2026
912c89f
feat(chat): implement context-aware chatbot with search router and qu…
meinhoongagan Jan 30, 2026
d6f71f3
fix(ux): add loading states for better user experience
meinhoongagan Jan 30, 2026
85a9538
fix(recovery): add dedicated UI for unsaved meeting recovery
meinhoongagan Jan 30, 2026
954d9c6
fix(recovery): hide recording controls in recovery mode to reveal sav…
meinhoongagan Jan 30, 2026
1acc482
fix(diarization): improve error handling for missing audio
meinhoongagan Jan 30, 2026
cfcfe70
fix(build): remove misplaced import statement in page-content.tsx
meinhoongagan Jan 30, 2026
ff5344f
feat(infra): implement gcp cloud storage and audio playback
meinhoongagan Jan 30, 2026
e6aae84
fix(storage): improve gcp file existence checks and migration robustness
meinhoongagan Jan 30, 2026
1f063c7
feat(ui): implement download recording button
meinhoongagan Jan 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
7 changes: 5 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

/experiments

# dependencies
/node_modules
**/models
Expand Down Expand Up @@ -55,7 +54,10 @@ docs/demo.gif

meeting_minutes.db

# Added by Task Master AI
# Google Cloud Service Account Key
backend/gcp-service-account.json
gcp-service-account.json

# Logs
logs
*.log
Expand All @@ -76,3 +78,4 @@ experiments/
.cursor/


update_and_run.sh
991 changes: 642 additions & 349 deletions CLAUDE.md

Large diffs are not rendered by default.

212 changes: 44 additions & 168 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,42 +1,20 @@
<div align="center" style="border-bottom: none">
<h1>
<img src="docs/Meetily-6.png" style="border-radius: 10px;" />
Meeting Co-Pilot
<br>
Privacy-First AI Meeting Assistant
AI-Powered Collaborative Meeting Assistant
</h1>
<a href="https://trendshift.io/repositories/13272" target="_blank"><img src="https://trendshift.io/api/badge/repositories/13272" alt="Zackriya-Solutions%2Fmeeting-minutes | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
<br>
<br>
<a href="https://github.com/Zackriya-Solutions/meeting-minutes/releases/"><img src="https://img.shields.io/badge/Pre_Release-Link-brightgreen" alt="Pre-Release"></a>
<a href="https://github.com/Zackriya-Solutions/meeting-minutes/releases"><img alt="GitHub Repo stars" src="https://img.shields.io/github/stars/zackriya-solutions/meeting-minutes?style=flat">
</a>
<a href="https://github.com/Zackriya-Solutions/meeting-minutes/releases"> <img alt="GitHub Downloads (all assets, all releases)" src="https://img.shields.io/github/downloads/zackriya-solutions/meeting-minutes/total?style=plastic"> </a>
<a href="https://github.com/Zackriya-Solutions/meeting-minutes/releases"><img src="https://img.shields.io/badge/License-MIT-blue" alt="License"></a>
<a href="https://github.com/Zackriya-Solutions/meeting-minutes/releases"><img src="https://img.shields.io/badge/Supported_OS-macOS,_Windows-white" alt="Supported OS"></a>
<a href="https://github.com/Zackriya-Solutions/meeting-minutes/releases"><img alt="GitHub Tag" src="https://img.shields.io/github/v/tag/zackriya-solutions/meeting-minutes?include_prereleases&color=yellow">
</a>
<img src="https://img.shields.io/badge/License-MIT-blue" alt="License">
<img src="https://img.shields.io/badge/Platform-Web-brightgreen" alt="Platform">
<br>
<h3>
<br>
Open Source • Privacy-First • Enterprise-Ready
Open Source • Real-Time Transcription • AI-Powered
</h3>
<p align="center">
Get latest <a href="https://www.zackriya.com/meetily-subscribe/"><b>Product updates</b></a> <br><br>
<a href="https://meetily.zackriya.com"><b>Website</b></a> •
<a href="https://www.linkedin.com/company/106363062/"><b>LinkedIn</b></a> •
<a href="https://discord.gg/crRymMQBFH"><b>Meetily Discord</b></a> •
<a href="https://discord.com/invite/vCFJvN4BwJ"><b>Privacy-First AI</b></a> •
<a href="https://www.reddit.com/r/meetily/"><b>Reddit</b></a>
</p>
<p align="center">

A privacy-first AI meeting assistant that captures, transcribes, and summarizes meetings entirely on your infrastructure. Built by expert AI engineers passionate about data sovereignty and open source solutions. Perfect for enterprises that need advanced meeting intelligence without compromising on privacy, compliance, or control.
</p>

<p align="center">
<img src="docs/meetily_demo.gif" width="650" alt="Meetily Demo" />
<br>
<a href="https://youtu.be/6FnhSC_eSz8">View full Demo Video</a>
A web-based collaborative meeting assistant with real-time transcription using Groq Whisper API. Designed for on-site meetings with live transcript sharing, AI-powered catch-up features, and cross-meeting context.
</p>

</div>
Expand All @@ -45,155 +23,69 @@
<summary>Table of Contents</summary>

- [Introduction](#introduction)
- [Why Meetily?](#why-meetily)
- [Features](#features)
- [Installation](#installation)
- [Key Features in Action](#key-features-in-action)
- [System Architecture](#system-architecture)
- [For Developers](#for-developers)
- [Enterprise Solutions](#enterprise-solutions)
- [Contributing](#contributing)
- [License](#license)

</details>

## Introduction

Meetily is a privacy-first AI meeting assistant that runs entirely on your local machine. It captures your meetings, transcribes them in real-time, and generates summaries, all without sending any data to the cloud. This makes it the perfect solution for professionals and enterprises who need to maintain complete control over their sensitive information.

## Why Meetily?

While there are many meeting transcription tools available, this solution stands out by offering:
Meeting Co-Pilot is a web-based collaborative meeting assistant forked from Meetily. It provides real-time transcription using Groq Whisper API with support for Hindi/English (Hinglish) mixed-language meetings.

- **Privacy First:** All processing happens locally on your device.
- **Cost-Effective:** Uses open-source AI models instead of expensive APIs.
- **Flexible:** Works offline and supports multiple meeting platforms.
- **Customizable:** Self-host and modify for your specific needs.

<details>
<summary>The Privacy Problem</summary>

Meeting AI tools create significant privacy and compliance risks across all sectors:

- **$4.4M average cost per data breach** (IBM 2024)
- **€5.88 billion in GDPR fines** issued by 2025
- **400+ unlawful recording cases** filed in California this year

Whether you're a defense consultant, enterprise executive, legal professional, or healthcare provider, your sensitive discussions shouldn't live on servers you don't control. Cloud meeting tools promise convenience but deliver privacy nightmares with unclear data storage practices and potential unauthorized access.

**Meetily solves this:** Complete data sovereignty on your infrastructure, zero vendor lock-in, and full control over your sensitive conversations.

</details>
**Key Differences from Meetily:**
- **Web-based**: Pure Next.js + FastAPI (no Tauri desktop app)
- **Real-time streaming**: Continuous PCM audio streaming with ~1-2s latency
- **Groq Whisper API**: Cloud-based transcription for faster processing
- **Collaborative**: Designed for multi-participant on-site meetings

## Features

- **Local First:** All processing is done on your machine. No data ever leaves your computer.
- **Real-time Transcription:** Get a live transcript of your meeting as it happens.
- **AI-Powered Summaries:** Generate summaries of your meetings using powerful language models.
- **Multi-Platform:** Works on macOS, Windows, and Linux.
- **Open Source:** Meetily is open source and free to use.

## Installation

### 🪟 **Windows**

1. Download the latest `x64-setup.exe` from [Releases](https://github.com/Zackriya-Solutions/meeting-minutes/releases/latest)
2. Right-click the downloaded file → **Properties** → Check **Unblock** → Click **OK**
3. Run the installer (if Windows shows a security warning: Click **More info** → **Run anyway**)

### 🍎 **macOS**

### 🍎 **macOS** (M Series chips)

1. [meetily_0.1.1_aarch64.dmg](https://github.com/Zackriya-Solutions/meeting-minutes/releases/download/0.1.1/meetily_0.1.1_aarch64.dmg)
2. Install the .dmg
3. Then open **meetily.app** from Applications folder.

> **⚠️ Data Migration:** The application will ask whether to import your old database through a popup window on first launch.

### 🐧 **Linux**

Build from source following our detailed guides:

- [Building on Linux](docs/building_in_linux.md)
- [General Build Instructions](docs/BUILDING.md)

**Quick start:**

```bash
git clone https://github.com/Zackriya-Solutions/meeting-minutes
cd meeting-minutes/frontend
pnpm install
pnpm run tauri:build
```
- **Real-time Transcription:** Get a live transcript of your meeting as it happens (~1-2s latency).
- **Hinglish Support:** Auto language detection for Hindi/English code-switching.
- **AI-Powered Summaries:** Generate summaries of your meetings using Claude, Groq, or Ollama.
- **Web-Based:** Works on any modern browser (Chrome, Firefox, Safari, Edge).
- **Open Source:** Meeting Co-Pilot is open source and free to use.

## Key Features in Action

### 🎯 Local Transcription

Transcribe meetings entirely on your device using **Whisper** or **Parakeet** models. No cloud required.
<p align="center">
<img src="docs/home.png" width="650" style="border-radius: 10px;" alt="Meetily Demo" />
</p>

### 🤖 AI-Powered Summaries

Generate meeting summaries with your choice of AI provider. **Ollama** (local) is recommended, with support for Claude, Groq, OpenRouter, and OpenAI.

<p align="center">
<img src="docs/summary.png" width="650" style="border-radius: 10px;" alt="Summary generation" />
</p>

<p align="center">
<img src="docs/editor1.png" width="650" style="border-radius: 10px;" alt="Editor Summary generation" />
</p>

### 🔒 Privacy-First Design

All data stays on your machine. Transcription models, recordings, and transcripts are stored locally.

<p align="center">
<img src="docs/settings.png" width="650" style="border-radius: 10px;" alt="Local Transcription and storage" />
</p>

### 🎙️ Professional Audio Mixing

Capture microphone and system audio simultaneously with intelligent ducking and clipping prevention.
## System Architecture

<p align="center">
<img src="docs/audio.png" width="650" style="border-radius: 10px;" alt="Device selection" />
</p>
Meeting Co-Pilot is a web-based application.
- **Frontend**: Next.js (React) application with AudioWorklet for real-time audio capture.
- **Backend**: Python FastAPI server with WebSocket streaming, VAD, and Groq Whisper API.
- **Database**: SQLite for meeting storage.

### ⚡ GPU Acceleration
## Installation

Built-in support for hardware acceleration across platforms:
### Running with Docker (Recommended)

- **macOS**: Apple Silicon (Metal) + CoreML
- **Windows/Linux**: NVIDIA (CUDA), AMD/Intel (Vulkan)
1. Ensure Docker is installed.
2. Run the start script:
```bash
./run-docker.sh
```
This will start both the frontend and backend services.
Access the app at `http://localhost:3118`.

Automatically enabled at build time - no configuration needed.
### Manual Installation

## System Architecture
#### Backend
1. Navigate to `/backend`.
2. Install Python dependencies: `pip install -r requirements.txt`.
3. Run the server: `python app/main.py`.

Meetily is a single, self-contained application built with [Tauri](https://tauri.app/). It uses a Rust-based backend to handle all the core logic, and a Next.js frontend for the user interface.
#### Frontend
1. Navigate to `/frontend`.
2. Install dependencies: `pnpm install`.
3. Run the dev server: `pnpm run dev`.

For more details, see the [Architecture documentation](docs/architecture.md).

## For Developers

If you want to contribute to Meetily or build it from source, you'll need to have Rust and Node.js installed. For detailed build instructions, please see the [Building from Source guide](docs/BUILDING.md).

## Enterprise Solutions

**Meetily Enterprise** is available for on-premise deployment, giving organizations complete control over their meeting intelligence infrastructure. This enterprise version includes:

- **100% On-Premise Deployment**: Your data never leaves your infrastructure
- **Centralized Management**: Support for 100+ users with administrative controls
- **Zero Vendor Lock-in**: Open source MIT license ensures complete ownership
- **Compliance Ready**: Meet GDPR, SOX, HIPAA, and industry-specific requirements
- **Custom Integration**: APIs and webhooks for enterprise systems

For enterprise solutions: [https://meetily.zackriya.com](https://meetily.zackriya.com)
If you want to contribute to Meeting Co-Pilot or build it from source, you'll need Node.js and Python installed. For detailed build instructions, please see the [Building from Source guide](docs/BUILDING.md).

## Contributing

Expand All @@ -203,25 +95,9 @@ We welcome contributions from the community! If you have any questions or sugges

MIT License - Feel free to use this project for your own purposes.

## Contributions

Thanks for all the contributions. Our community is what makes this project possible. Below is the list of contributors:

<a href="https://github.com/zackriya-solutions/meeting-minutes/graphs/contributors">
<img src="https://contrib.rocks/image?repo=zackriya-solutions/meeting-minutes" />
</a>

We welcome contributions from the community! If you have any questions or suggestions, please open an issue or submit a pull request. Please follow the established project structure and guidelines. For more details, refer to the [CONTRIBUTING](CONTRIBUTING.md) file.

## Acknowledgments

- We borrowed some code from [Whisper.cpp](https://github.com/ggerganov/whisper.cpp).
- We borrowed some code from [Screenpipe](https://github.com/mediar-ai/screenpipe).
- We borrowed some code from [transcribe-rs](https://crates.io/crates/transcribe-rs).
- Thanks to **NVIDIA** for developing the **Parakeet** model.
- Thanks to [istupakov](https://huggingface.co/istupakov/parakeet-tdt-0.6b-v3-onnx) for providing the **ONNX conversion** of the Parakeet model.

## Star History

[![Star History Chart](https://api.star-history.com/svg?repos=Zackriya-Solutions/meeting-minutes&type=Date)](https://star-history.com/#Zackriya-Solutions/meeting-minutes&Date)
- Forked from [Meetily](https://github.com/Zackriya-Solutions/meeting-minutes) by Zackriya Solutions.
- Uses [Groq Whisper API](https://groq.com/) for real-time transcription.
- Uses [Whisper.cpp](https://github.com/ggerganov/whisper.cpp) for local transcription option.

56 changes: 56 additions & 0 deletions backend/.dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# ===========================================
# Docker Build Context Exclusions
# ===========================================
# These files are not needed in the Docker image
# and excluding them speeds up builds

# Windows-only scripts
*.ps1
*.cmd
*.bat

# Documentation (remove manually if needed)
*.md
docs/

# Development files
examples/
debug_*.py
temp.env

# Local Whisper models (using Groq API in production)
models/
whisper-custom/
whisper.cpp/

# Local data (mounted as volume in production)
data/

# Git
.git/
.gitignore
.gitmodules

# Environment files (secrets passed via env vars)
.env
.env.*

# Docker files (not needed inside container)
docker-compose*.yml
Dockerfile.*
.docker-preferences

# IDE/Editor
.vscode/
.idea/
*.swp
*.swo

# Python cache
__pycache__/
*.pyc
*.pyo
.pytest_cache/

# Config directory (if not needed)
config/
Loading