Lattice
연구를 위한 작업공간
Oats는 실시간으로 방 안 대화를 주제·질문·답변 여부까지 시각화합니다 무료 오픈소스
Oats maps the conversation in the room as it happens: topics as they turn, questions as they're asked, and whether anyone answered. Free and open source.
생산성JavaScript · TypeScriptGitHub @alexgaoth온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기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).