{
  "schema": "tesign-radar/item/1",
  "generated_at": "2026-09-17T01:56:13.055Z",
  "lang": "en",
  "slug": "yap",
  "url": "https://tesign.com/en/item/yap/",
  "alternates": {
    "ko": {
      "html": "https://tesign.com/item/yap/",
      "json": "https://tesign.com/item/yap/index.json",
      "markdown": "https://tesign.com/item/yap/index.md"
    },
    "en": {
      "html": "https://tesign.com/en/item/yap/",
      "json": "https://tesign.com/en/item/yap/index.json",
      "markdown": "https://tesign.com/en/item/yap/index.md"
    }
  },
  "name": "Yap",
  "use_label": "On-device dictation for Mac users",
  "one_liner": "Press a shortcut, talk, text lands in any macOS field; on-device, no account or API key.",
  "text": {
    "why": "macOS 26 added the SpeechAnalyzer and SpeechTranscriber APIs, which do on-device streaming speech to text with models the OS ships and manages. Yap uses only that path, so it downloads no model, weighs 4 MB, idles at about 60 MB of memory and contains no network code at all. In the benchmark the README cites (5,559 LibriSpeech clips), Apple's model scored a 2.12% word error rate on clean audio against 3.74% for Whisper Small, about three times faster.",
    "take": "A case for using the speech recognition already in the OS instead of shipping a model: lighter, and private by construction.",
    "build": [
      "At roughly three thousand lines of Swift it is easy to read and modify: keep the `RecordingCoordinator` state machine and add a language picker or an app-specific paste path to make your own dictation tool."
    ],
    "who": [
      {
        "role": "Developers prompting coding agents",
        "situation": "dictate into terminals and editors, preview before inserting"
      },
      {
        "role": "People writing email and Slack all day",
        "situation": "sentences faster than typing"
      },
      {
        "role": "Users who do not want audio leaving the machine",
        "situation": "dictation with zero network calls"
      }
    ],
    "start": [
      {
        "command": false,
        "text": "brew install --cask frigadehq/tap/yap"
      },
      {
        "command": false,
        "text": "brew upgrade --cask yap   # to update later"
      },
      {
        "command": false,
        "text": "# or download the .dmg from https://frigade.com/yap and drag it into Applications"
      },
      {
        "command": false,
        "text": "Build from source (Xcode 26): git clone https://github.com/FrigadeHQ/yap.git && cd yap && ./install.sh"
      }
    ],
    "caveat": [
      "MIT licence. macOS 26 Tahoe or later on Apple Silicon only; Intel Macs are not supported (the older 0.1.4 Intel build sends audio to Apple's servers). Needs four permissions — Microphone, Speech Recognition, Accessibility, Automation — and Accessibility must be switched on by hand. Language follows the system locale; there is no language picker yet. Free."
    ]
  },
  "cta": {
    "type": "install",
    "label": "INSTALL",
    "url": "https://frigade.com/yap"
  },
  "ready": "install",
  "categories": [
    "productivity",
    "ai"
  ],
  "categories_confirmed": true,
  "tags": [
    "dictation",
    "speech-to-text",
    "macos",
    "on-device",
    "swift",
    "menu-bar"
  ],
  "platform": [
    "macos"
  ],
  "license": {
    "spdx": "MIT",
    "scope": "permissive",
    "scope_text": "Use, change and redistribute, commercially too. Keep the notice.",
    "url": "https://spdx.org/licenses/MIT.html",
    "note": null,
    "open_source": true
  },
  "language": "Swift",
  "source_urls": {
    "canonical": "https://frigade.com/yap",
    "github": "https://github.com/frigadehq/yap",
    "huggingface": null,
    "app_store": null,
    "sightings": [
      {
        "source": "showhn",
        "url": "https://github.com/FrigadeHQ/yap",
        "posted_at": "2026-07-27T18:36:02.000Z",
        "hn_url": "https://news.ycombinator.com/item?id=49073834"
      }
    ]
  },
  "numbers": {
    "as_of": "2026-09-16T21:00:00.000Z",
    "stars": 392,
    "stars_unit": "GitHub stars",
    "stars_checked_at": "2026-09-15T19:35:30.662Z",
    "stars_observed_since_check": 0,
    "star_delta_24h": null,
    "star_delta_7d": null,
    "star_delta_30d": null,
    "star_delta_unit": "GitHub stars gained in the window, GH Archive events summed to as_of",
    "spark_14d": [
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null
    ],
    "hf_likes": null,
    "hf_likes_observed_at": null,
    "hn_points": 104,
    "hn_points_observed_at": "2026-09-13T14:52:26.821Z",
    "store": null,
    "method": "Star total = the value last checked on GitHub (stars_checked_at) + increases observed via GH Archive since. The 24h · 7d · 30d gains are GH Archive hourly events summed to the reference time (as_of). No score of ours."
  },
  "ranks": null,
  "activity": {
    "pushed_at": "2026-09-15T00:08:43.000Z",
    "owner_type": "Organization",
    "open_issues": 7,
    "contributors": 6,
    "releases_count": 13,
    "latest_release": {
      "tag": "v0.1.12",
      "published_at": "2026-09-15T00:08:43.000Z",
      "prerelease": false
    },
    "checked_at": "2026-09-15T19:35:30.662Z",
    "core_checked_at": "2026-09-15T19:35:30.662Z"
  },
  "signals": [
    {
      "kind": "back",
      "label": "BACK CATALOG",
      "value": null
    }
  ],
  "images": {
    "og": "https://tesign.com/img/yap-6c42099287.png",
    "cover": "https://tesign.com/img/yap-6c42099287.png",
    "cover_width": 2400,
    "cover_height": 1260,
    "gallery": [
      "https://tesign.com/img/yap-6c42099287.png"
    ],
    "alt": "The Yap dictation window near the bottom of the screen with a live waveform and a running transcript preview",
    "tier": 1
  },
  "dates": {
    "first_seen_at": "2026-09-13T14:52:26.821Z",
    "source_created_at": "2026-07-27T18:36:02.000Z",
    "discovery_hours": 1148.273561388889,
    "launch_signal_at": "2026-07-27T18:36:02.000Z",
    "kept_at": "2026-09-14T19:27:43.572Z",
    "first_published_at": "2026-09-14T19:27:43.743Z",
    "updated_at": "2026-09-15T04:36:57.060Z",
    "ingestion_mode": "backfill"
  },
  "notes": [
    "This file was produced by the same build, from the same data, as the tesign.com item page. The text is editorial; the numbers are stored observations.",
    "null in the JSON means not observed — never zero. The Markdown writes [unconfirmed] for it.",
    "Star total = the value last checked on GitHub (stars_checked_at) + increases observed via GH Archive since. The 24h · 7d · 30d gains are GH Archive hourly events summed to the reference time (as_of). No score of ours.",
    "Reconstructed from archive data, not a live discovery.",
    "A summary, not legal advice."
  ]
}
