Wenlan
Wenlan is a source-backed AI knowledge base and LLM wiki for AI work: organize documents and decisions into pages you can find, inspect, and review.
翻訳待ち
Steno records your meetings from your computer's own audio, transcribes and summarises them on-device, and writes plain Markdown you own. No bot in the call. No cloud account. Audio never leaves the m
翻訳待ち
生産性Rust · SwiftGitHub @NicolaiSchmidオンライン所有者未確認
Have you tried it? One tap is enough. No sign-in needed.
Steno records your meetings from your computer's own audio, transcribes and summarises them on-device, and writes plain Markdown you own. No bot in the call. No cloud account. Audio never leaves the machine.
翻訳待ち
Loading the full README. The saved excerpt is shown below.
Steno records your meetings without joining them, turns the recording into a summary,
transcript and tasks on your own Mac, and writes the result into your Obsidian vault.
No bot in the call. No cloud account. No subscription. Audio never leaves the machine.
Status: release candidate. v1 is code-complete and shipping as pre-releases while
the last manual checks on real hardware run. Track the first stable release in
issue #74. The full scope and every
settled decision live in .plans/2026-09-24-initial-scope.md.Read the full README ↗Status: release candidate. v1 is code-complete and shipping as pre-releases while the last manual checks on real hardware run. Track the first stable release in issue #74. The full scope and every settled decision live in
.plans/2026-09-24-initial-scope.md.
Most meeting recorders join your call as a participant, upload the audio to their servers and keep your notes behind their login. Steno takes the opposite route:
| Hosted bot recorders | Steno | |
|---|---|---|
| Captures audio by | A bot joins the meeting | Core Audio taps the apps already playing on your Mac |
| Everyone on the call sees | "Notetaker has joined" | Nothing |
| Audio is processed | In the vendor's cloud | On your Mac, after the meeting |
| Notes live in | The vendor's app | Plain files in your Obsidian vault |
| Works for | Supported video platforms | Zoom, Teams, Meet, FaceTime, Slack, phone calls via Continuity, in-person meetings |
| Cost | Monthly subscription | Free, open source, your own LLM endpoint |
It was built to match the day-to-day quality of commercial meeting recorders for one person and their friends, with files instead of lock-in.
Steno is a signed and notarized Steno.app for macOS 15 or later on Apple Silicon.
Pick one of the three routes; all three install the same release build.
Homebrew (recommended, keeps itself updated through Sparkle)
brew tap nicolaischmid/tap && brew install --cask steno
Direct download
Grab Steno-<version>.dmg from the
latest release and drag the app
to /Applications.
Nix (aarch64-darwin, installs the released app unchanged)
nix profile install github:NicolaiSchmid/steno#steno
On first launch Steno walks you through the three permissions it needs: system audio capture, microphone, and optionally calendar access for meeting titles and attendee names. Then point it at your Obsidian vault and an OpenAI-compatible endpoint, and you are done.
The tap (NicolaiSchmid/homebrew-tap) follows every release, release candidates included. The installed app updates itself through Sparkle, which offers stable releases only. With nix-darwin's Homebrew module:
homebrew.taps = [ "nicolaischmid/tap" ];
homebrew.casks = [ "nicolaischmid/tap/steno" ];
flake.nix installs the released Steno.app unchanged (no rebuild, no re-signing) on
aarch64-darwin.
With nix-darwin, add the flake as an input and put steno.packages.aarch64-darwin.steno
in environment.systemPackages; nix-darwin links Applications/Steno.app into
/Applications/Nix Apps. With home-manager use home.packages and link the app yourself
(home.file into ~/Applications, or the mac-app-util module); home-manager does not
link Applications/ on its own. nix run does not apply, the output is an app bundle
with no bin/.
The app runs from the read-only Nix store, so Sparkle's "Check for Updates…" can download
a new version but cannot install it. Update by bumping release.version and
release.hash at the top of flake.nix (the release workflow prints both in its job
summary) and rebuilding. To silence the scheduled daily check:
defaults write uno.schmid.steno.mac SUEnableAutomaticChecks -bool NO
nix-darwin users who want in-app updates can use the Homebrew cask through
homebrew.casks instead; it installs into /Applications, where Sparkle can write.
flowchart LR
subgraph capture["1 · Capture"]
apps["Zoom · Teams · Meet<br>FaceTime · Continuity call"] -->|Core Audio process tap| them["“them” lane"]
mic["Your microphone"] -->|echo-cancelled| me["“me” lane"]
phone["iPhone recorder"] -.->|local network handover| room["in-person recording"]
end
subgraph process["2 · Process, on your Mac"]
stt["Transcribe<br>Parakeet or Whisper"] --> dia["Diarize and match<br>known voices"] --> llm["LLM cleanup, summary,<br>tasks · text only"]
end
subgraph deliver["3 · Deliver"]
vault["Obsidian vault<br>one folder per meeting"]
end
capture --> process --> deliver
One dated folder per meeting, named after the title. The folder note is what Obsidian opens when you click the folder.
Meetings/
└── 2026-09-24-produktstrategie-90-10-roadmap-fuer-q4/
├── 2026-09-24-produktstrategie-90-10-roadmap-fuer-q4.md # summary, decisions, scratchpad
├── 2026-09-24-produktstrategie-90-10-roadmap-fuer-q4 - Transcript.md
├── 2026-09-24-produktstrategie-90-10-roadmap-fuer-q4 - Tasks.md # Obsidian Tasks syntax
├── transcript.vtt
├── meeting.json
└── audio.m4a # opt-in per meeting
The folder note carries queryable frontmatter and links to the people who were there:
This is the beginning of the README. Read the rest at the original. Read the full README ↗