Drop a folder of recordings. Get transcripts and quotes, organised by journey, theme and sentiment. Analyse with your own tags, expert AI codebooks, or connect an agent. Export to Miro or spreadsheet.
Runs on macOS 15 (Sequoia) or later, on Apple Silicon.
Free and open source. The Snap bundles Python and FFmpeg, and runs strictly confined.
>pipx install bristlenose
Setup guide
Free and open source. Bristlenose runs from the command line. You will need Python and FFmpeg.
What each platform sees on arrival. Only one is ever on screen; these are side by side so the set can be judged without clicking.
Rendered, not fetched — the markdown of these pages shows their no-JS fallback, which is a different (and separately useful) thing.
| Product | Detects | Switcher | What was taken |
|---|---|---|---|
| Ollama | Yes — /download resolves server-side to /download/mac |
Icon tab row inside a <nav>, selected tab gets a pill |
The mechanic. Tabs are real links to real URLs, so they survive JS being off and can be sent to someone. Rejected the icon-only labels — see E4. |
| VS Code | Yes | None — one button, plus a 12px link reading “Web, Insiders edition, or other platforms” | Hero restraint, and the fallback: with JS off the page renders all four platform buttons rather than nothing. |
| Signal | Yes | A “Not on Mac?” heading below the button | Plain-language escape hatch. Beats “Other platforms” as a phrase, though a hero has no room for the heading. |
| Zed | No | All three stacked; the segmented control is Stable/Preview, not OS | The shell one-liner sits exactly where the Download button sits on the other two. That is the licence for E5. |
| Tailscale | — | Horizontal platform tab row | “Install with one command” — same treatment of a command as a primary action. |
| Ghostty | No | Section headings per platform | What the JS-off state of this variant looks like. |
The Snap has no stable channel. The store API returns one
entry: latest/edge, 0.27.0, amd64, released 22 Aug 2026. So a
bare sudo snap install bristlenose fails — it needs
--edge. The page never says otherwise: it prints no command,
and the badge points at the store listing, which shows the real state.
Naming the channel in the note was tried and cut as inside baseball — which
is the right call, and it means nothing on the page now discloses this.
The fix is a stable release, not copy.
The install doc does not mention Snap at all.
docs-src/install.md § Linux offers only pipx and uv, while the
homepage has carried the Snap badge throughout. One of the two is wrong.
Android lands on macOS. Android reports a Linux platform string, so honest detection would send a phone to the Linux tab and offer it a Snap. There is no mobile build at all, so the script sends mobile to the flagship instead. Worth a look if mobile traffic is non-trivial.
arm64 Linux is unserved. The only Snap revision is amd64. A Raspberry Pi or an Ampere box gets a badge that leads to a store page with nothing for it.