[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-74731":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":14,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":24,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":26,"readmeContent":27,"aiSummary":28,"trendingCount":16,"starSnapshotCount":16,"syncStatus":29,"lastSyncTime":30,"discoverSource":31},74731,"OpenOats","yazinsai\u002FOpenOats","yazinsai","A meeting note-taker that talks back.","https:\u002F\u002Fopenoats.com",null,"Swift",2433,241,9,17,0,3,11,54,29.15,"MIT License",false,"main",true,[],"2026-06-12 02:03:27","# OpenOats\n\n[![Auto-Maintainer](https:\u002F\u002Fam.whhite.com\u002Fbadge\u002Fyazinsai\u002Fopenoats)](https:\u002F\u002Fam.whhite.com)\n\nA meeting note-taker that talks back.\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fyazinsai\u002FOpenOats\u002Freleases\u002Flatest\">\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDownload_for_Mac-DMG-black?style=for-the-badge&logo=apple&logoColor=white\" alt=\"Download for Mac\" \u002F>\n  \u003C\u002Fa>\n\u003C\u002Fp>\n\nOpenOats sits next to your call, transcribes both sides of the conversation in real time, and searches your own notes to surface things worth saying — right when you need them.\n\n---\n\n### Sponsored by Recall.ai — API for desktop recording\n\nIf you're looking for a hosted desktop recording API, consider checking out [Recall.ai](https:\u002F\u002Fdub.sh\u002Fopenoats), an API that records Zoom, Google Meet, Microsoft Teams, in-person meetings, and more.\n\n---\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"assets\u002Fhero.svg\" width=\"720\" alt=\"OpenOats during a call — suggestions drawn from your own notes appear at the top, live transcript below\" \u002F>\n\u003C\u002Fp>\n\n## Features\n\n- **Invisible to the other side** — the app window is hidden from screen sharing by default, so no one knows you're using it\n- **Fully offline transcription** — speech recognition runs entirely on your Mac; no audio ever leaves the device\n- **Runs 100% locally** — pair with [Ollama](https:\u002F\u002Follama.com\u002F) for LLM suggestions and local embeddings, and nothing touches the network at all\n- **Pick any LLM** — use [OpenRouter](https:\u002F\u002Fopenrouter.ai\u002F) for cloud models (GPT-4o, Claude, Gemini) or Ollama for local ones (Llama, Qwen, Mistral)\n- **Live transcript** — see both sides of the conversation as it happens, copy the whole thing with one click\n- **Auto-saved sessions** — every conversation is automatically saved as a plain-text transcript and a structured session log, no manual export needed\n- **Knowledge base search** — point it at a folder of notes and it pulls in what's relevant using [Voyage AI](https:\u002F\u002Fwww.voyageai.com\u002F) embeddings, local Ollama embeddings, or any OpenAI-compatible endpoint (llama.cpp, llamaswap, LiteLLM, vLLM, etc.)\n\n## How it works\n\n1. You start a call and hit **Live**\n2. OpenOats transcribes both speakers locally on your Mac\n3. When the conversation hits a moment that matters — a question, a decision point, a claim worth backing up — it searches your notes and surfaces relevant talking points\n4. You sound prepared because you are\n\n## Recording Consent & Legal Disclaimer\n\n**Important:** OpenOats records and transcribes audio from your microphone and system audio. Many jurisdictions have laws requiring consent from some or all participants before a conversation may be recorded (e.g., two-party\u002Fall-party consent states in the U.S., GDPR in the EU).\n\n**By using this software, you acknowledge and agree that:**\n\n- **You are solely responsible** for determining whether recording is lawful in your jurisdiction and for obtaining any required consent from all participants before starting a session.\n- **The developers and contributors of OpenOats provide no legal advice** and make no representations about the legality of recording in any jurisdiction.\n- **The developers accept no liability** for any unauthorized or unlawful recording conducted using this software.\n\n**Do not use this software to record conversations without proper consent where required by law.**\n\nThe app will ask you to acknowledge these obligations before your first recording session.\n\n## Download\n\nInstall via Homebrew:\n\n```bash\nbrew tap yazinsai\u002Fopenoats https:\u002F\u002Fgithub.com\u002Fyazinsai\u002FOpenOats\nbrew install --cask yazinsai\u002Fopenoats\u002Fopenoats\n```\n\nTo upgrade later:\n\n```bash\nbrew upgrade --cask yazinsai\u002Fopenoats\u002Fopenoats\n```\n\nOr grab the latest DMG from the [Releases page](https:\u002F\u002Fgithub.com\u002Fyazinsai\u002FOpenOats\u002Freleases\u002Flatest).\n\nOr build from source:\n\n```bash\n.\u002Fscripts\u002Fbuild_swift_app.sh\n```\n\n## Quick start\n\n1. Open the DMG and drag OpenOats to Applications\n2. Launch the app and grant microphone + system audio recording permissions\n3. Open Settings (`Cmd+,`) and pick your providers:\n   - **Cloud**: add your OpenRouter and Voyage AI API keys\n   - **Local**: select Ollama as your LLM and embedding provider (make sure Ollama is running)\n   - **OpenAI-compatible**: select \"OpenAI Compatible\" as your embedding provider and point it at any `\u002Fv1\u002Fembeddings` endpoint\n4. Point it at a folder of `.md` or `.txt` files — that's your knowledge base\n5. Click **Idle** to go live\n\nThe first run downloads the local speech model (~600 MB).\n\n## What you need\n\n- Apple Silicon Mac, macOS 15+\n- Xcode 26 \u002F Swift 6.2\n- **For cloud mode**: [OpenRouter](https:\u002F\u002Fopenrouter.ai\u002F) API key + [Voyage AI](https:\u002F\u002Fwww.voyageai.com\u002F) API key\n- **For local mode**: [Ollama](https:\u002F\u002Follama.com\u002F) running locally with your preferred models (e.g. `qwen3:8b` for suggestions, `nomic-embed-text` for embeddings)\n- **For OpenAI-compatible embeddings**: any server implementing `\u002Fv1\u002Fembeddings` (llama.cpp, llamaswap, LiteLLM, vLLM, etc.)\n\n## Knowledge base\n\nPoint the app at a folder of Markdown or plain text files. That's it. OpenOats chunks, embeds, and caches them locally. When the conversation shifts, it searches your notes and only surfaces what's actually relevant.\n\nWorks well with meeting prep docs, research notes, pitch decks, competitive analysis, customer briefs — anything you'd want at your fingertips during a call.\n\n## Privacy\n\n- Speech is transcribed locally — audio never leaves your Mac\n- **With Ollama**: everything stays on your machine. Zero network calls.\n- **With cloud providers**: KB chunks are sent to Voyage AI (or your chosen OpenAI-compatible endpoint) for embedding (text only, no audio), and conversation context is sent to OpenRouter for suggestions\n- API keys are stored in your Mac's Keychain\n- The app window is hidden from screen sharing by default\n- Transcripts are saved locally to `~\u002FDocuments\u002FOpenOats\u002F`\n\n### Cloud mode: what data leaves your Mac\n\nWhen using cloud providers, OpenOats makes the following network requests. **No audio is ever sent** — only text. In fully-local mode (Ollama for both LLM and embeddings), nothing touches the network at all.\n\n#### 1. Knowledge base indexing — Voyage AI (`api.voyageai.com\u002Fv1\u002Fembeddings`)\n\n**When:** Each time you index your knowledge base folder (on launch or when files change).\n\n**What is sent:**\n- Text chunks from your `.md` \u002F `.txt` knowledge base files (split by markdown headings, 80–500 words each, with the header breadcrumb prepended)\n- Model name (`voyage-4-lite`) and requested output dimensions (`256`)\n- Input type (`document`)\n\nChunks are sent in batches of 32. Only new or changed files are embedded — unchanged files use a local cache.\n\n#### 2. Knowledge base search — Voyage AI (`api.voyageai.com\u002Fv1\u002Fembeddings`)\n\n**When:** Each time the suggestion pipeline runs (triggered by a substantive utterance from the other speaker, subject to a 90-second cooldown).\n\n**What is sent:**\n- 1–4 short query strings derived from the conversation: the latest utterance text, the current conversation topic, a short conversation summary, and the top open question\n- Model name, dimensions, and input type (`query`)\n\n#### 3. Knowledge base reranking — Voyage AI (`api.voyageai.com\u002Fv1\u002Frerank`)\n\n**When:** Immediately after step 2, if Voyage AI is the embedding provider.\n\n**What is sent:**\n- The primary search query (the latest utterance text)\n- Up to 10 candidate KB chunk texts (from your own notes) for reranking\n- Model name (`rerank-2.5-lite`)\n\n#### 4. Conversation state update — OpenRouter (`openrouter.ai\u002Fapi\u002Fv1\u002Fchat\u002Fcompletions`)\n\n**When:** Periodically during a session when the conversation state needs refreshing.\n\n**What is sent (as an LLM prompt):**\n- The previous conversation state (topic, summary, open questions, tensions, recent decisions, goals — all derived from earlier LLM calls)\n- Recent transcript utterances (both speakers, text only — labeled \"You\" \u002F \"Them\")\n- The latest utterance from the other speaker\n- A system prompt instructing the model to update the conversation state\n\n#### 5. Surfacing gate — OpenRouter (`openrouter.ai\u002Fapi\u002Fv1\u002Fchat\u002Fcompletions`)\n\n**When:** After the KB search returns relevant results, to decide whether a suggestion is worth showing.\n\n**What is sent (as an LLM prompt):**\n- The latest utterance from the other speaker\n- Recent transcript exchange (both speakers, text only)\n- Current conversation state (topic, summary, open questions, tensions)\n- The detected trigger type and excerpt\n- Up to 5 KB evidence chunks (text from your notes, with source file and header, plus relevance scores)\n- Recently shown suggestion angles (short strings, to avoid repeats)\n\n#### 6. Suggestion generation — OpenRouter (`openrouter.ai\u002Fapi\u002Fv1\u002Fchat\u002Fcompletions`)\n\n**When:** Only if the surfacing gate approves (all quality scores above threshold).\n\n**What is sent (as an LLM prompt):**\n- The latest utterance from the other speaker\n- Current conversation state (topic and summary)\n- The gate's reasoning string\n- Up to 3 KB evidence chunks (text from your notes, with source file and header)\n\n#### 7. Meeting notes generation — OpenRouter (`openrouter.ai\u002Fapi\u002Fv1\u002Fchat\u002Fcompletions`)\n\n**When:** When you click \"Generate Notes\" after a session.\n\n**What is sent (as an LLM prompt):**\n- The full session transcript (both speakers, with timestamps, labeled \"You\" \u002F \"Them\") — truncated to ~60,000 characters if very long\n- The meeting template's system prompt (e.g., instructions for formatting notes)\n\n#### What is never sent\n\n- **Audio** — transcription is always on-device via Apple Speech\n- **File paths or filenames from your system** (only KB source filenames appear in prompts)\n- **Your API keys to anyone other than the respective provider** (OpenRouter key to OpenRouter, Voyage key to Voyage)\n- **Any data when using Ollama** — all requests go to your local machine\n\n## Build\n\n```bash\n# Full build → sign → install to \u002FApplications\n.\u002Fscripts\u002Fbuild_swift_app.sh\n\n# Dev build only\ncd OpenOats && swift build -c debug\n\n# Package DMG\n.\u002Fscripts\u002Fmake_dmg.sh\n```\n\nOptional env vars for code signing and notarization: `CODESIGN_IDENTITY`, `APPLE_ID`, `APPLE_TEAM_ID`, `APPLE_APP_PASSWORD`.\n\n## Repo layout\n\n```\nOpenOats\u002F             SwiftUI app (Swift Package)\nscripts\u002F              Build, sign, and package scripts\nassets\u002F               Screenshot and app icon source\n```\n\n## License\n\nMIT\n","OpenOats 是一款能够在会议中实时转录对话并提供相关笔记建议的应用。其核心功能包括实时双向对话转录、基于用户已有笔记的知识库搜索以及完全本地化的语音识别，确保数据隐私安全。该应用特别适合需要在会议中快速获取信息支持的场景，如远程工作讨论、项目进度汇报等。通过与Ollama等工具结合使用，还可以实现更强大的本地化语言模型支持，进一步增强其实用性。",2,"2026-06-11 03:50:33","high_star"]