Scribe Install

Runs on your own hardware

Scribe

Transcribe every meeting and search every word, without sending a second of audio to someone else’s computer.

Teams whose conversations aren’t allowed to leave the building, and anyone who would just prefer they didn’t.

Thursday planning

3 speakers · 0:46

  1. Speaker 0

    Okay, first thing. Where are we on the release?

  2. Speaker 1

    The build’s ready. I’d like it out on the fourteenth if QA signs off by Monday.

  3. Speaker 2

    QA can do Monday. The only open bug is the printer driver on the old laptops.

  4. Speaker 0

    Let’s not hold the date for that. Ship it with a note about the known issue.

  5. Speaker 1

    Works for me. Next is the budget for the office chairs.

  6. Speaker 2

    Facilities says there’s about four thousand dollars left this quarter.

  7. Speaker 0

    That covers twelve chairs. Can you send me the quote by Friday?

A sample meeting, made up for this page. It runs in your browser and isn’t connected to Scribe. The meaning ranks are picked by hand here, where Scribe gets them from embeddings in pgvector. The keyword matching and the score (1 / (60 + rank) from each list, added up) follow Scribe’s search code.

What it does

Meeting transcripts and search that run entirely on your own hardware.

You host all of it yourself: a Rust server running speech models through ONNX, Postgres with pgvector for search, and an iPhone recorder app that pairs with the server by scanning a QR code. The server installs with one command on Windows, Linux or macOS. The iPhone app isn’t on the App Store yet, so for now you build it yourself in Xcode.

  1. 01

    Transcripts with speaker labels and summaries from a local LLM, no cloud APIs

  2. 02

    Search your whole meeting archive by meaning, not just keywords

  3. 03

    An iPhone recorder app that finds the server on your network and pairs with a QR code

  4. 04

    One-command install that also handles updates, with an option to publish the server on your Tailscale network

After you stop recording

Six jobs, queued in Postgres.

Text shows up while you’re still recording. When you stop, the whole meeting runs through again so the speakers can be told apart. Each step is a job in Postgres that the worker claims with SKIP LOCKED, and you can hold the heavy ones for hours you pick, like overnight.

  1. transcode

    ffmpeg turns the phone’s audio into a WAV the models can read.

  2. transcribediarize

    Speech to text, and who spoke when. Both work from the same audio at once.

  3. merge

    Words get their speakers. This is the transcript you read.

  4. embedsummarize

    Speaker turns become search vectors, and a local model through Ollama writes the summary.

The phone side

Your phone records. Your server does the rest.

  1. 01

    Find server

    The app looks for the server on your network, then pairs by scanning a QR code from it.

  2. 02

    Record anywhere

    Audio goes up in short segments while you record, so the transcript starts before the meeting ends.

  3. 03

    Reach it from outside

    The installer can publish the server on your Tailscale network. A phone signed in to the same Tailscale account doesn’t need a device key.

  4. 04

    Built in Xcode for now

    The iPhone app isn’t on the App Store yet. You build it from the repository and install it yourself.

Specification

What it’s built with, and when.

Pulled from the repository each time this site is built.

State
Shipping
Discipline
Applications
Shape
Installed software
Started
Jun 2026
Last change
Oct 2026
Commits
146
  • Rust
  • ONNX Runtime
  • Postgres
  • pgvector
  • React Native
  • Tailscale
  • Rust 56%
  • TypeScript 29%
  • Shell 5%
  • PowerShell 3%

Next

Install Scribe

The server installs with one command. It sets up Postgres, downloads the speech models (about 750 MB), and can publish itself on your Tailscale network.

Server curl -fsSL https://raw.githubusercontent.com/dmoore-dwmmholdings/scribe-local/master/install.sh | bash

On Windows, run it from Git Bash and it installs the latest release. On Linux and macOS it runs the server in Docker. Add --service to start it at boot, or --no-tailscale to keep it on your local network. The iPhone app is built from source in Xcode for now.

Questions, or something it doesn’t do yet? Email dmoore@dwmmholdings.com

This site isn't finished. Anything on it may still change, and none of it is binding until the site is live.