Skip to content

PhantomEar is a privacy-first, local-only AI meeting assistant that runs invisibly on your machine. No bots, No cloud recording, No admin permissions.

Notifications You must be signed in to change notification settings

Phantom-Ear/phantom-ear

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

72 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ‘» PhantomEar

Always Listening. Never Seen.

The privacy-first AI meeting assistant that lives on your machine


Release Downloads License Platform


Build Rust Tauri Svelte


Download β€’ Features β€’ How It Works β€’ Tech Stack β€’ Development


PhantomEar Screenshot


🎯 The Problem

Traditional meeting assistants expose your presence:

  • πŸ€– Bot joins the call β†’ Everyone knows you're recording
  • ☁️ Audio uploaded to cloud β†’ Your data leaves your control
  • πŸ”’ Admin install required β†’ IT blocks the tool
  • πŸ’° Monthly subscriptions β†’ Costs add up

✨ The PhantomEar Difference

πŸ”’ 100% Local Processing

Audio never leaves your machine. Transcription runs locally using Whisper. Your meetings, your data, your control.

πŸ‘» Zero Meeting Footprint

No bots joining calls. No recording banners. No participant notifications. Completely invisible.

🧠 AI-Powered Intelligence

Ask questions about any meeting. Get instant summaries. Search across all your conversations with semantic search.

🏒 Enterprise Ready

User-level installation. No admin rights. No IT tickets. Works on restricted corporate machines.



πŸ“₯ Download


Platform Architecture Download
macOS Apple Silicon (M1/M2/M3) .dmg
Windows x64 .exe / .msi
πŸ“‹ Installation Notes

macOS

Since PhantomEar is not yet notarized with Apple, you may see a "damaged" warning. Fix it with:

xattr -cr /Applications/PhantomEar.app

Windows

  • If .msi is blocked by corporate policy, use the .exe installer
  • If you see MSVCP140.dll error, install Visual C++ Runtime


🎬 Features



Real-Time Transcription
Live speech-to-text powered by Whisper

AI Q&A
Ask questions about any meeting

Auto Summaries
Key points, decisions & action items

Semantic Search
Find anything across all meetings

Persistent Memory
SQLite with full-text search

100% Private
Everything stays on your device

Feature Highlights

Feature Description
πŸŽ™οΈ Multi-Model ASR Whisper (tiny β†’ large) or Parakeet CTC models
πŸ€– LLM Flexibility OpenAI API or Ollama (fully local)
⏸️ Pause/Resume Pause transcription without stopping the session
πŸ“ Transcript Editing Edit segments, fix transcription errors
πŸ—£οΈ Speaker Labels Manually assign speakers to segments
πŸ“Š Timeline View Visual timeline with quick navigation
πŸ” Quick Search Cmd+K to search across all meetings
πŸ–₯️ System Tray Minimize to tray, start/stop from menu
πŸ“‹ Export Copy as Markdown or plain text


πŸ”¬ How It Works

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                           YOUR MACHINE                                   β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚  Microphone │───▢│   Whisper   │───▢│   SQLite    │───▢│    UI    β”‚ β”‚
β”‚  β”‚   (cpal)    β”‚    β”‚  (local)    β”‚    β”‚  + FTS5     β”‚    β”‚ (Svelte) β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                            β”‚                  β”‚                         β”‚
β”‚                            β–Ό                  β–Ό                         β”‚
β”‚                     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                  β”‚
β”‚                     β”‚ Embeddings  β”‚    β”‚  Semantic   β”‚                  β”‚
β”‚                     β”‚ (BGE-small) │───▢│   Search    β”‚                  β”‚
β”‚                     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                  β”‚
β”‚                                               β”‚                         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”‚β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                                β”‚
                          β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                          β”‚         OPTIONAL: LLM Context              β”‚
                          β”‚    (Only curated text, never raw audio)    β”‚
                          β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                                β”‚
                                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                                    β–Ό                       β–Ό
                             β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”            β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                             β”‚  Ollama  β”‚            β”‚  OpenAI  β”‚
                             β”‚ (local)  β”‚            β”‚  (API)   β”‚
                             β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜            β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Privacy by Design

Data Type Location Sent to Cloud?
🎀 Raw Audio RAM only (never saved) ❌ Never
πŸ“ Transcripts Local SQLite ❌ Never
🧠 Embeddings Local SQLite ❌ Never
πŸ’¬ LLM Context Selected text only ⚠️ Optional*

*Only if using OpenAI. Use Ollama for 100% local operation.



πŸ—οΈ Architecture


phantom-ear/
β”œβ”€β”€ src/                          # Svelte 5 Frontend
β”‚   β”œβ”€β”€ routes/+page.svelte       # Main application
β”‚   β”œβ”€β”€ lib/
β”‚   β”‚   β”œβ”€β”€ components/           # UI components
β”‚   β”‚   β”œβ”€β”€ stores/               # State management
β”‚   β”‚   └── utils/                # Utilities
β”‚   └── app.css                   # TailwindCSS v4
β”‚
β”œβ”€β”€ src-tauri/                    # Rust Backend
β”‚   └── src/
β”‚       β”œβ”€β”€ lib.rs                # Tauri entry point
β”‚       β”œβ”€β”€ commands.rs           # IPC handlers
β”‚       β”œβ”€β”€ audio/                # Audio capture (cpal)
β”‚       β”œβ”€β”€ asr/                  # Whisper integration
β”‚       β”œβ”€β”€ transcription/        # Real-time pipeline
β”‚       β”œβ”€β”€ embeddings/           # BGE-small vectors
β”‚       β”œβ”€β”€ storage/              # SQLite + FTS5
β”‚       └── llm/                  # OpenAI/Ollama clients

Tech Stack


Rust

Tauri 2.0

Svelte 5

TailwindCSS
Layer Technology Purpose
Runtime Tauri 2.0 Lightweight native wrapper
Backend Rust Performance-critical processing
Frontend Svelte 5 Reactive UI with runes
Styling TailwindCSS v4 Dark theme, glassmorphism
ASR whisper-rs Local speech recognition
Embeddings ONNX Runtime BGE-small vectors
Database SQLite + FTS5 Full-text search
Audio cpal Cross-platform capture


πŸ› οΈ Development

Prerequisites

# Node.js 18+
node --version  # v18.0.0+

# Rust (latest stable)
rustc --version  # 1.75.0+

# CMake (for whisper.cpp)
cmake --version  # 3.20+
Install CMake
# macOS
brew install cmake

# Windows
choco install cmake

# Linux
sudo apt install cmake

Quick Start

# Clone
git clone https://github.com/Phantom-Ear/phantom-ear.git
cd phantom-ear

# Install dependencies
npm install

# Run in development mode
npm run tauri dev

# Build for production
npm run tauri build


πŸ—ΊοΈ Roadmap


Status Feature Target
βœ… Real-time transcription v0.1.0
βœ… Meeting persistence v0.1.0
βœ… AI Q&A (RAG) v0.1.0
βœ… Semantic search v0.1.0
βœ… System tray v0.2.0
βœ… Transcript editing v0.2.0
βœ… Speaker labels v0.2.0
πŸ”„ Audio device selection v0.3.0
πŸ“‹ SRT subtitle export v0.3.0
πŸ“‹ Auto-meeting detection v0.4.0
πŸ“‹ Light theme v0.4.0
πŸ“‹ Auto-titling with AI v0.5.0


🀝 Contributing

Contributions are welcome! Please read our contributing guidelines before submitting a PR.

# Fork the repo
# Create your feature branch
git checkout -b feature/amazing-feature

# Commit your changes
git commit -m "Add amazing feature"

# Push to the branch
git push origin feature/amazing-feature

# Open a Pull Request


πŸ“„ License

MIT License - see LICENSE for details.



Built with πŸ–€ for privacy advocates


⬆ Back to Top


PhantomEar is not affiliated with any meeting platform. Use responsibly and in compliance with applicable laws.

About

PhantomEar is a privacy-first, local-only AI meeting assistant that runs invisibly on your machine. No bots, No cloud recording, No admin permissions.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •