Show HN: OpenBrief – Local-first video downloader/summarizer
Turn videos and audio into clear, listenable briefings.
Import a video or audio file, extract its transcript, generate a grounded summary, and chat with the content — all on your desktop.
Watch the demo · Features · Model Support · Setup · Development · Roadmap
OpenBrief is a pnpm/Turborepo workspace centered on a Tauri v2 desktop app. It supports importing local media or video URLs, downloading media through bundled tools, transcribing audio, generating grounded summaries, chatting with media context, organizing playlists, and exporting reusable notes.
Features
- 📥 Import anything — paste a video link or import a local audio/video file.
- ✍️ Transcribe locally — extract captions or run on-device speech-to-text.
- 📝 Grounded summaries — generate blog-style markdown briefs with timestamped takeaways.
- 💬 Chat with media — ask questions against the summary or full transcript.
- 🔊 Listen back — turn summaries into audio with text-to-speech.
- 🔒 Open source & private — runs on your machine, free to use.
Build a searchable library from video links or local files, then extract transcripts and keep everything in one place.
Open any item to read the transcript, generate a grounded summary, and chat with the media context side by side.
Model Support
| Model type | Supported | TODO |
|---|---|---|
| Speech to text | Whisper, Parakeet, Qwen3-ASR | None |
| Text to speech | Supertonic 3, Qwen3-TTS | None |
| Large language model | OpenAI GPT, Anthropic Claude, Google Gemini, OpenRouter DeepSeek | Local Gemma 4 |
| Video embedding | None | Frame and clip embeddings for semantic search |
Repository Layout
client/ apps/ tauri/ Main OpenBrief desktop app src/ React renderer, feature UI, domain logic, services, hooks, i18n src-tauri/ Tauri v2 Rust boundary, commands, helper sidecar, packaging scripts/ Helper-sidecar and media-tool preparation scripts nextjs/ Web app and download/YouTube routes tanstack-start/ TanStack Start app shell expo/ React Native app shell workers/ Worker entry points packages/ api/ Shared API routing auth/ Authentication integration db/ Database schema and access ui/ Shared UI components validators/ Shared validation helpers tooling/ eslint/ Shared ESLint config github/ GitHub setup helpers prettier/ Shared Prettier config tailwind/ Shared Tailwind config typescript/ Shared TypeScript config AGENTS.md Repository development guidance DESIGN.md Product and UI directionRequirements
- Node.js ^22.21.0
- pnpm 11.0.9
- Rust and Cargo
- Tauri v2 platform prerequisites for your OS
Use the package manager declared in client/package.json.
Setup
Install dependencies from the workspace root:
cd client pnpm installIf pnpm reports ignored native build scripts on a fresh machine, run pnpm approve-builds, approve the listed native/tooling packages, then rerun pnpm install.
Create local environment values when needed:
cp .env.example .envLocal Development
Use two terminals from client/ when working on both the web app and desktop app:
pnpm dev:nextThe Next.js app runs at http://localhost:3000.
pnpm dev:tauriThe Tauri dev command builds the helper sidecar, starts the desktop renderer through Vite at http://localhost:1420, compiles the Rust app, and launches the desktop window.
Desktop App
Run the Tauri desktop app:
cd client pnpm dev:tauriRun only the renderer during frontend work:
cd client/apps/tauri pnpm devBuild frontend assets:
cd client/apps/tauri pnpm buildBuild or refresh bundled helper/media assets:
cd client/apps/tauri pnpm setup:dev-sidecars pnpm prepare:media-assetsUseful desktop checks:
cd client/apps/tauri pnpm test:run pnpm typecheck cd src-tauri && cargo checkWeb And Shared Workspace
Run the Next.js app:
cd client pnpm dev:nextRun all workspace dev tasks through Turbo:
cd client pnpm devCommon workspace checks:
cd client pnpm typecheck pnpm lint pnpm buildDatabase and auth helpers:
cd client pnpm db:push pnpm db:studio pnpm auth:generateUse pnpm --filter <workspace> <script> or pnpm -F <workspace> <script> for a single app or package.
Roadmap
- Improve audio file support for transcription, summaries, playback, and exports.
- Support more document and web source types, including PDFs, HTML pages, and other document formats.
- Support Parakeet ASR.
- Support Qwen3-ASR and Qwen3-ForcedAligner.
- Support Supertonic 3 TTS.
- Support local LLMs, including Gemma 4.
- Add video embedding for frame and clip semantic search across the library.
- Add voice cloning so summaries can be read aloud in a selected voice.
- Share summaries through the web and mobile apps.
- Support more artifact formats, including flashcards and other reusable study or publishing outputs.
Acknowledgements
OpenBrief builds on and takes inspiration from several projects:
- yt-dlp for video download support.
- whisper.cpp and transcribe-rs for local speech-to-text.
- FluidAudio for local Apple-platform audio AI inspiration.
- Qwen3-ASR for speech recognition model support.
- Qwen3-TTS for text-to-speech model support.
- Supertonic for Supertonic 3 TTS support.
- tweakcn for the shadcn theme.
- Voicebox and Anarlog for product and implementation inspiration.
License
OpenBrief is licensed under the GNU Affero General Public License v3.0.
Verification
Run the smallest check that proves the change, then widen as needed:
cd client/apps/tauri && pnpm test:run <pattern> cd client/apps/tauri && pnpm typecheck cd client/apps/tauri/src-tauri && cargo check cd client && pnpm --filter @acme/nextjs typecheck git diff --checkFor packaging, run the relevant Tauri build on the target platform before making release claims.

