Turret
All work

Mac app · live transcription

Okato

Anything playing on your Mac, written down and translated as it happens, without a word leaving the machine.

  • 30 languages
  • Entirely on-device
  • No account, no cloud

The brief

Live translation is usually somebody else's server. You grant an app the microphone, it ships your audio somewhere, and a transcript comes back. That arrangement is fine right up until the thing being said is a client call, a medical appointment, or a grandmother's voice.

Okato is Turret's own product, built on the opposite premise. It captures whatever is already playing on the Mac, writes it down, and translates it as it goes, with the models running on the machine itself. No account to make, no upload, nothing to switch off later.

What it does

  • Listens to an app, not a room

    Okato taps the audio of a chosen application: Safari, Chrome, Teams, FaceTime, a film in a video player. It hears what that app is playing rather than what a microphone in the room picks up, so the transcript is clean whether or not anyone is talking nearby.

  • Both languages at once

    Each line is shown twice: the words as spoken, faint, above the translation in the language you asked for, bright. Nothing is replaced. If the translation reads oddly, the original is right there to check it against.

  • Names the speakers

    Voices are separated as they arrive and each line is tagged with who said it. Labels can be renamed, so Speaker 2 becomes Marcus, or Grandma, and the transcript reads like a script rather than a wall of text.

  • Live or exact

    Live mode is fast by design, so the translation lands with the line. For a recording or a film, file mode runs the fullest accuracy pass instead, synchronised to the picture. A transcript made in fast mode is marked as such, because that caveat outlives the moment it was accepted in.

  • Subtitles, and files that keep them

    Subtitles sit at the foot of the picture the way real ones do. A finished session exports as subtitles burned into the video, or as SRT, VTT or plain text, so the recording you send round is understood by whoever opens it.

  • Sessions that stay put

    Every session is kept on the machine, named by when it started, searchable afterwards and pinnable so it survives. Thirty languages, including ones that usually get skipped: Cantonese sits alongside Mandarin rather than being folded into it.

The site

The marketing site had to argue the case in the first screen, and the argument is not a feature list. It is that this is the same app in four different lives: a standup, a call with a grandparent, a lecture in a language you are still learning, a film on a Friday.

So the hero holds a single MacBook still and changes what is on the screen as you scroll, one use per beat, with the kind of thing being listened to named above the machine and a line lifted straight off that screen below it. Around the frame, the activity curls in the languages Okato speaks, on two counter-turning rings lifted from the app's own icon.

The Okato app icon: the name at the centre of two rings of greetings and language names
The icon the rings come from: hello in thirteen languages around the outside, the languages themselves within.

The screens in that hero are photographs of the real thing, not drawings of it. An earlier version used carefully rebuilt mockups and they were rejected on the only ground that matters: a mockup of an app is a picture of something that does not exist. The four sessions were written into the app, captured from it, and dropped into the frame.

How it is built

  • The whole problem in one line

    Transcription and translation of the quality people expect from a datacentre, running inside the power, memory and thermal budget of a laptop. Everything else about the build follows from that constraint, and it is what makes the privacy claim structural rather than a promise: there is no server to send anything to, so there is nothing to undertake about what happens to it.

  • Native macOS

    Swift and SwiftUI throughout, and it listens to an application you name rather than the room, which is what keeps a transcript clean when someone is talking beside you.

  • Settled by measurement

    The app adapts to the language and the machine rather than running one setting everywhere. Those choices were made with a benchmark harness built for the purpose, because on hardware this varied the intuitive answer is often the slower one.

  • The site

    Next.js, exported as static HTML. Eight pages, no server, no database and nothing to keep patched.

  • Hosting

    Files in a private S3 bucket, served through CloudFront over HTTPS with an origin access control, so the bucket itself is not reachable. A CloudFront function maps directory requests onto the right page, and a certificate from ACM covers the subdomain.

  • Weight

    The four app screens in the hero are 100 KB apiece. They started as full-resolution captures embedded in vector files of several megabytes each; extracting and converting them cut the page to a fraction of that.

  • Deploys

    One script builds, drops the assets nothing references, uploads with cache headers set per file type, and invalidates the CDN. Long caching for hashed bundles, revalidation for HTML, so a deploy actually reaches people already on the site.

Where it is

The app is finished and in TestFlight, on its way to the Mac App Store. The site is live at okato.turret.dev.