listener-ai
v2.11.1
Published
A lightweight desktop application for recording and transcribing meetings with AI-powered notes.
Readme
Listener.AI
Listener.AI is a desktop meeting recorder and CLI that turns audio into searchable AI meeting notes. It records meetings, imports existing audio, transcribes with Gemini, generates Korean summaries, key points, and action items, then keeps everything in a local archive you can send to Notion or Slack.
Available as a desktop app via GitHub Releases and as a CLI tool via npm.

What It Does
- Record a meeting from your microphone, or import an existing audio file.
- Capture timestamped live highlights while the meeting is running.
- Transcribe the audio and generate a structured meeting note.
- Search, reopen, merge, export, or re-transcribe past recordings.
- Share completed notes to Notion or Slack when your integrations are configured.
Desktop App
Download from GitHub Releases:
- macOS: Intel (x64) and Apple Silicon (arm64) DMG
- Windows: x64 installer
The desktop app includes:
- One-click recording with meeting title, mic selection, and elapsed timer
- Optional macOS system audio capture for Zoom, Meet, Teams, browser tabs, and other app audio
- Drag-and-drop or paste import for audio files
- Live highlights and timestamped flags during recording
- Recent recordings with search, transcript status, merge, Finder reveal, and M4A export actions
- Meeting detection and external display prompts for recording automation
- Automatic FFmpeg setup when transcription needs it
- Local configuration shared with the CLI

CLI
Install
npm install -g listener-aiOr use directly:
npx listener-ai <audio-file>Prerequisites
- FFmpeg installed on your system (
brew install ffmpeg/apt install ffmpeg) - One of:
- Google Gemini API key from Google AI Studio, or
- ChatGPT Plus / Pro subscription (Codex OAuth)
Setup
Pick one AI provider. Gemini uses a static API key; Codex uses a ChatGPT subscription via OAuth sign-in.
# Option A -- Gemini
listener config set geminiApiKey <your-key>
# Option B -- Codex (uses your ChatGPT Plus/Pro account)
listener codex login # browser sign-in, sets aiProvider=codexOptional Notion integration:
listener config set notionApiKey <your-key>
listener config set notionDatabaseId <your-id>Optional Slack integration:
listener config set slackWebhookUrl <your-webhook-url>
listener config set slackAutoShare true # Auto-share when auto mode is enabledUsage
listener recording.mp3 # Transcribe to the default output directory
listener recording.m4a --output ./ # Transcribe to the current directory
listener transcript recording.wav # Print transcript to stdout without summary
listener transcript recording.wav -o out.txt
# Write transcript to a file
listener transcript recording.wav --prompt "Translate to English while transcribing"
# Override the default transcription instruction
listener list # List saved transcriptions
listener show <ref> # Print a saved meeting summary
listener search "roadmap" # Search past meeting notes
listener export <ref> --transcript # Export a saved note with transcript
listener merge <ref1> <ref2> # Merge and re-transcribe multiple notes
listener ask "What did we decide?" --ref <ref>
# Ask about a saved meeting
listener codex login # Sign in with ChatGPT and set aiProvider=codex
listener codex status # Show Codex OAuth + provider/model status
listener codex logout # Clear stored Codex OAuth credentials
listener config list # Show all config values with secrets masked
listener config get <key> # Print one config value
listener config set <key> <value> # Set a config value
listener config unset <key> # Clear a config value
listener config path # Print config file path
listener --version # Print CLI version
listener --help # Show usageSupported formats: mp3, m4a, wav, ogg, flac, aac, wma, opus, webm
Full meeting-note output is a folder containing transcript.md and summary.md with speaker identification, Korean summary, key points, and action items. Transcript-only output can print plain text to stdout or write directly to a file.
Configuration
Config is stored in your system application data folder:
- macOS:
~/Library/Application Support/listener-ai/config.json - Windows:
%APPDATA%/listener-ai/config.json - Linux:
~/.config/listener-ai/config.json
CLI and desktop app share the same config file. Existing installs that already have a Listener.AI data folder continue to use it when listener-ai is not present.
Getting API Keys
Google Gemini API
- Visit Google AI Studio
- Click "Create API Key"
- Copy the generated key
Codex OAuth (ChatGPT Plus/Pro)
- Run
listener codex login(or sign in from the desktop app's Settings panel). - Complete the browser sign-in to ChatGPT.
- Confirm
listener codex statusshowscodexOAuthConfigured=true.
Codex transcription, summarization, and the Ask Listener agent all go through your ChatGPT subscription -- no separate API key needed.
Notion Integration
- Go to Notion Integrations
- Create a new integration named "Listener.AI"
- Grant permissions: Read, Insert, Update content
- Copy the "Internal Integration Token"
- Share your database with the integration
- Get database ID from URL:
notion.so/workspace/DATABASE_ID
Slack Integration
- Create a Slack app with an Incoming Webhook.
- Add the webhook to the channel where meeting notes should be posted.
- Copy the webhook URL and save it with
listener config set slackWebhookUrl <url>.
Development
pnpm install
pnpm run start # Run Electron app
pnpm run dev:renderer # Run renderer-only preview with sample data
pnpm run cli # Run CLI locally
pnpm run dist:mac # Build macOS
pnpm run dist:win # Build WindowsLicense
MIT
