个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Mac app that maps in-person conversations live: topics, questions and answers as they happen. On-device, open source.
翻译准备中
正在加载完整 README。
查看完整 README ↗The conversations that matter happen around a table. Taking notes pulls you out of them, and meeting bots join calls, not rooms. Oats sits on the table with one microphone. While you talk, the screen shows the shape of the conversation and nothing that competes with the people in front of you.
Press ⇧⌘O and talk. One line draws the conversation live: a notch where the topic changes, a mark where someone asks. Its height is how loud the room is. The sidebar steps aside while you record, and under the clock two quiet counters keep the words and the questions so far. Speech is transcribed on your Mac with whisper.cpp, on the GPU, and M marks a moment.
Each topic gets its name from what was said. When the room comes back to one, the line goes back too.
The conversation flow under the line keeps one lane per topic, in the order raised, with the minutes spent on each. Graph shows the same topics by when each was raised and how unsettled it still is. Oats finds the topics on your Mac and names each with a phrase said in it, and the writing model names it more exactly as it grows. Under the lanes are topics that came up with these in earlier conversations and have not come up yet.
Each question shows up the moment it's asked, and changes when the room answers it, or doesn't. Ask again before anyone leaves.
On the line, a question is a mark. With the transcript shown, it is also a card that says how it ended, in place, while people are still talking. A question asked twice is kept as a signal, not dropped as a repeat.
| Card | When |
|---|---|
| Answered | Someone gave an answer. |
| Unknown | The room said it did not know. Oats opens a web search for the question. |
| Unanswered | The room moved on. |
| Open | Nobody has replied yet. |
When an answer sounds unsure, Oats looks it up in your notes and past conversations while people are still talking.
It is off by default: turn on the context check in Settings and choose a folder of notes. Under the question, Oats says That's right, Wait, that's wrong, or Found it when the room did not know, with the answer and the file it came from. When the folder and your past conversations have no answer, Oats can also ask Claude Code, if you turn that on too: it reads your GitHub, Linear, Notion and Slack connections, read only, and the question and the reply go to Anthropic, and the search text to those services.
Title, summary, talk time for each person, and the transcript with every voice told apart.
The summary starts by itself when you stop, with the threads the conversation followed, the decisions and the action items, next to how each question ended. It is written by a model on your Mac, which Oats downloads by itself, or with your own API key. The transcript, the voices, the questions and the shape of the conversation need no writing model.
Search every transcript at once, even for part of a word. Chinese and Japanese too.
Search reads every transcript on your Mac, including the oldest. It finds a word inside a longer one, so "rice" finds "price", and it works in Chinese and Japanese, which are written without spaces. Each search says how many matches it found and how long it took, and each match says when in the conversation it was said. Press / to search from anywhere in the app.
Conversations on the same topic link up, so you see it come back across weeks.
The board lays out every conversation as a graph and as a timeline, so a topic that keeps coming back shows as the arcs between the days it came up. Each conversation is sorted into Work, Personal or a group you make by the model that writes your summaries, from its title, its topics and the start of its summary, never from the transcript.
On this Mac, audio and transcripts never leave it: transcription runs on whisper.cpp with Metal, and summaries on a local model. There is no Oats account and no Oats server. With your own API key, transcripts go to your provider for summaries, and with an OpenAI key the audio goes to OpenAI for transcription.
One thing is on by default, and you can turn it off in Settings: when a question meets a clear "I don't know", Oats opens a web search for the question text in your browser.
The sidebar counts every network request since launch. Calls to the speech, writing and search servers that run on your Mac are not counted, because they never leave it. The network allowlist lists every destination.
| Key | Action |
|---|---|
| ⇧⌘O | Start or stop a conversation, from any app |
| M | Mark this moment |
| ⌘\ | Show or hide the sidebar while recording |
| / | Search conversations |
| ⌘F | Find in this conversation |
| Esc | Back |
| ⌘, | Settings |
The record shortcut can be changed in Settings.
small.en for English and multilingual base for every other language; on Intel, base.en and base.The SHA-256 checksums are in SHA256SUMS.txt. On an empty Home, open the example conversation, a nine-person launch review, to explore everything before you record.
Tell people before you record. Some places, for example California, need everyone's consent.
You need Node.js 24 and the Xcode command line tools.
git clone https://github.com/alexgaoth/oats.git
cd oats
npm ci
npm run setup:check
npm run dev
Developing Oats has the full setup, the Linux notes and the test suites. The public page lives in site/.
Oats is an Electron app. The interface is React. The main process runs the local speech server (whisper.cpp), an optional local language model (llama.cpp) for summaries, local embeddings for related-conversation search, and SQLite with full-text search for the transcripts. The topic tracker and the question detector are plain code over the transcript, so they cost nothing to run for an hour and never need a network. Architecture maps the modules, DESIGN.md is the design reference, and the product description explains each behaviour in depth.
Oats grew out of OpenWhispr, an MIT-licensed desktop dictation app, and UPSTREAM.md records the provenance. Transcription uses whisper.cpp, local models run on llama.cpp, the interface is set in Inter, and the wordmark in EB Garamond. Topic names prefer distinctive words by their rank in English, from the Google Books Ngram corpus as counted by google-books-ngram-frequency (CC BY 3.0). The speed check that picks the speech model for a Mac reads one utterance from LibriSpeech (Panayotov et al., CC BY 4.0): test-clean 7127-75946-0024, read by Bill Kneeland for LibriVox.
Parakeet Ultra, a model you can choose on Apple Silicon, is moondream/parakeet-ultra (CC-BY-4.0), a post-training of NVIDIA's Parakeet TDT 0.6B v3 (CC-BY-4.0), in the Core ML build of FluidInference. It runs on FluidAudio (Apache-2.0), behind Silero VAD (MIT).