Skip to content

Releases

Vella 2.2.1

Choose a tag to compare

@github-actions github-actions released this 08 Nov 06:10
  • Share Heimdall's model. Models… has a Parakeet v3 Ultra · from Heimdall row (greyed when Heimdall is not on your Mac). Choose it and dictation uses the copy Heimdall already has in memory, so the two apps hold one copy instead of two. If Heimdall is quit, busy, missing or stops answering, that dictation uses Vella's own Parakeet v3 Ultra (if you downloaded it; otherwise Vella offers Get, never a silent download), and Vella goes back to Heimdall's copy when it returns. Without Heimdall nothing changes. A new install with Heimdall present starts on this row; a model you already chose stays your choice. Files you transcribe go to Heimdall's copy too when your vocabulary would not apply to them (and always when Vella has no copy of its own). Your vocabulary list does not apply to Heimdall's copy; choose Vella's own Parakeet v3 Ultra if you need it for dictation.
  • vella transcribe FILE needs no options. It detects the language, applies your vocabulary, uses your dictation model and prints plain text. When you need more: --language tr (a code or a name such as Turkish), --vocab "Kadıköy, Beşiktaş" (words for this file only), --no-vocab, --model nemotron (the start of a model's name is enough), --json (timed segments and what the model was given) and --srt/--vtt. vella --help shows just these; vella help all lists everything. Older spellings keep working.
  • The language you ask for reaches the model. Nemotron 3.5 Transcribe, Whisper and Qwen3-ASR are told the language. Parakeet detects it itself: a language it knows is left to it, and one it does not know goes to a downloaded model that knows it (with no --model), or is refused with a clear message instead of being ignored.
  • The API needs only the audio. language takes names and auto, vocabulary takes words to add (or false), model takes the start of a name, and prompt gives Nemotron 3.5 Transcribe context words (other models refuse it rather than drop it). Your vocabulary.json and dictation are never changed by a request.
  • See what ran. --json (and the API's verbose_json) says which model, precision and path ran, the language applied, the exact instruction Nemotron got, how many vocabulary words were used, and any repetition it caught. vella status says why a model runs on plain MLX.
  • Nemotron 3.5 Transcribe uses NVIDIA's recommended prompt. When it starts repeating one phrase, Vella stops it early, decodes that part again and, if needed, splits it at a pause, so the speech after the loop is kept; a loop that survives is cut to one copy and reported as a warning. On hard audio your vocabulary list no longer shows up in the text as a run of list words.
  • Dictation returns to the fast path by itself. One failure used to keep a model on plain MLX until its files or macOS changed; now the next load tries the optimized path again, and only a model that fails three times stays on plain MLX.
  • Settings survive going back. If you ever run an older Vella again (an update rolled back, or an older release reinstalled), settings it does not know are kept for when you return.

Install or update with scripts/install.sh from a checkout of this tag (see the README): it downloads this zip and checks it against SHA256SUMS before installing. To check the zip's build provenance:

gh attestation verify Vella-2.2.1-arm64.zip --repo TobyNoSkillSon/Vella

Signed with Vella's own certificate "Vella Release Signing" (SHA-1 2CA2587C8B85EF687E68950E405EC58CE31FC1C7), the same in every release. Microphone and Accessibility permissions carry over between releases signed with this pinned identity; the first migration from a development or other identity requires granting them again.

Vella 2.2.0

Choose a tag to compare

@github-actions github-actions released this 07 Nov 00:24
  • Nemotron 3.5 Transcribe (NVIDIA, 30B-A4B, OpenMDW-1.1) joins Dictation for 40 languages: a speech language model that returns the text once the recording is encoded. Get downloads NVIDIA's bf16 release (67.5 GB); int8 and int4 are made from it on your Mac when they load, as for the other models. Each precision shows only where your Mac has the memory: int4 from 48 GB, int8 from 64 GB, bf16 from 96 GB; below that the row is greyed with what it needs. Parakeet v3 Ultra stays the first-dictation model; nothing downloads or loads until you click Get. Your vocabulary list applies to it too (docs/vocabulary.md).
  • The Models table, vella models and the API state each precision's memory floor (min_memory_gb) and refuse a tier that does not fit (insufficient_memory).
  • Measured in the Models table. On an M5 Max its English word error rate is 14.5–14.8 % at every precision (Parakeet v3 Ultra: 15.5 %), with all nine benchmark languages. int4 with Fast runs at 29× real time in 24 GB within 0.1 point of 16-bit English WER, so on M5 Macs it is the gold precision wherever it fits; bf16 needs 65 GB, int8 38 GB. Its energy column stays empty: on macOS 27 the energy meter reads only the GPU without administrator rights, and the tooltip says so.
  • On M5 Macs, a precision that passes the 16-bit quality gate is recommended even when the Mac is too small for the 16-bit tier itself.
  • Fast decoding (draft and verify) falls back to plain decoding by itself if it fails, and a segment it would repeat endlessly is decoded again plainly.

Install or update with scripts/install.sh from a checkout of this tag (see the README): it downloads this zip and checks it against SHA256SUMS before installing. To check the zip's build provenance:

gh attestation verify Vella-2.2.0-arm64.zip --repo TobyNoSkillSon/Vella

Signed with Vella's own certificate "Vella Release Signing" (SHA-1 2CA2587C8B85EF687E68950E405EC58CE31FC1C7), the same in every release. Microphone and Accessibility permissions carry over between releases signed with this pinned identity; the first migration from a development or other identity requires granting them again.

Vella 2.1.2

Choose a tag to compare

@github-actions github-actions released this 24 Oct 19:05
  • Copy Last Transcript is back after a relaunch or update. Vella keeps the last transcript in memory only, so a restart hid the item until the next dictation. It now copies the newest saved transcript from Recordings, the top row of Transcripts…, and it is hidden only when no recording has text. Copying with no transcript leaves the clipboard alone.
  • Support the Developer… rests on the same lighter row as Copy Last Transcript.

Install or update with scripts/install.sh from a checkout of this tag (see the README): it downloads this zip and checks it against SHA256SUMS before installing. To check the zip's build provenance:

gh attestation verify Vella-2.1.2-arm64.zip --repo TobyNoSkillSon/Vella

Signed with Vella's own certificate "Vella Release Signing" (SHA-1 2CA2587C8B85EF687E68950E405EC58CE31FC1C7), the same in every release. Microphone and Accessibility permissions carry over between releases signed with this pinned identity; the first migration from a development or other identity requires granting them again.

Vella 2.1.1

Choose a tag to compare

@github-actions github-actions released this 23 Oct 18:23
  • Updating from 0.8 keeps your model. A Parakeet v3 4-bit or 8-bit download from Vella 0.8 stays your dictation model and runs as it is, with no download. 2.0 and 2.1.0 dropped it when its 16-bit source wasn't on the Mac, and the next dictation offered to download a model. If that happened to you, 2.1.1 selects your earlier download again the first time it opens and says so. Get the 16-bit source in Models… to move to the measured precision; your earlier download is kept.

Install or update with scripts/install.sh from a checkout of this tag (see the README): it downloads this zip and checks it against SHA256SUMS before installing. To check the zip's build provenance:

gh attestation verify Vella-2.1.1-arm64.zip --repo TobyNoSkillSon/Vella

Signed with Vella's own certificate "Vella Release Signing" (SHA-1 2CA2587C8B85EF687E68950E405EC58CE31FC1C7), the same in every release. Microphone and Accessibility permissions carry over between releases signed with this pinned identity; the first migration from a development or other identity requires granting them again.

Vella 2.1.0

Choose a tag to compare

@github-actions github-actions released this 15 Oct 17:34
  • Models table: one row per model. A bolt and bf16/fp16, int8, int4; the Standard row is gone. Every model runs the optimized path and falls back to plain MLX by itself when your Mac cannot run it. A Standard choice saved by 2.0 becomes the same precision and switch position. The Exact/Fast switch is unchanged.
  • Recommended for your Mac, in gold: the smallest precision that keeps 16-bit accuracy and runs on your GPU's matrix hardware. An orange triangle marks precisions your Mac runs in software. A model you have not chosen a precision for starts on the recommended one, and Get downloads and loads that; saved choices are kept.
  • Figures on every Mac. Peak RAM, WER and Format always show. Speed and J / min show the M5 Max figure for reference, with a triangle, where your Mac was not measured.
  • vella select --path and the API's path field are refused: send precision and mode. vella models --json adds the recommended precision and each cell's hardware support; vella status still reports the path that actually runs.
  • Transcripts… in the menu opens your past transcripts, newest first. Click a transcript or Copy to copy it; long ones expand, and Show more loads older ones.
  • Shorter download, recovery, delete, quit and update prompts.
  • The first-dictation Get offer clears once its model is ready, also when it falls back to plain MLX.
  • Parakeet v3's Get tooltip and first-dictation offer show its real download size instead of Zero kB.
  • Support the Developer… opens the support page on tobynoskillson.com: GitHub Sponsors and Buy Me a Coffee.
  • Homebrew: brew install --cask tobynoskillson/tap/vella. Publishing a release updates the cask in TobyNoSkillSon/homebrew-tap (.github/workflows/homebrew.yml).
  • Benchmark references with restrictive or unclear redistribution terms are fetched locally, with the frozen text hashes checked before scoring. Suite clips and scoring rules are unchanged.
  • Corrects dataset attribution and bundled-audio documentation; clarifies model-card licence terms and the Parakeet licence link in model tooltips.

Install or update with scripts/install.sh from a checkout of this tag (see the README): it downloads this zip and checks it against SHA256SUMS before installing. To check the zip's build provenance:

gh attestation verify Vella-2.1.0-arm64.zip --repo TobyNoSkillSon/Vella

Signed with Vella's own certificate "Vella Release Signing" (SHA-1 2CA2587C8B85EF687E68950E405EC58CE31FC1C7), the same in every release. Microphone and Accessibility permissions carry over between releases signed with this pinned identity; the first migration from a development or other identity requires granting them again.

Vella 2.0.1

Choose a tag to compare

@github-actions github-actions released this 06 Oct 05:24

Restores the menu icons on macOS 27, which hides menu-item icons by default.

Adds the Benchmarks kit for agents to run the frozen suites and compare results on their own Mac. The standalone installer now uses GitHub raw hosting.

Worker and inference sources are byte-identical to v2.0.0. No GPU diagnose or parity runs were repeated for this menu-only patch; existing measurements remain dated as recorded.

Install or update through Vella's in-app updater or:

curl -fsSL https://raw.githubusercontent.com/TobyNoSkillSon/Vella/main/scripts/install-public.sh | bash

The ZIP is built and attested by GitHub Actions. To verify its provenance:

gh attestation verify Vella-2.0.1-arm64.zip --repo TobyNoSkillSon/Vella --signer-workflow TobyNoSkillSon/Vella/.github/workflows/release.yml --deny-self-hosted-runners

Signed with Vella's pinned, self-signed “Vella Release Signing” certificate, unchanged from 2.0.0. The app is not notarized; the DMG is unsigned and wraps the same signed app. Browser/Finder installs may require Privacy & Security → Open Anyway. In-app updates from 2.0.0 retain the signing identity; migration from a different identity requires explicit consent and new Microphone and Accessibility grants.

Vella 2.0.0

Choose a tag to compare

@github-actions github-actions released this 06 Oct 02:09
  • Tensor kernels require macOS 26.2 or newer. Optimized-path verdicts now include GPU architecture and device name; existing verdicts requalify once when each model/recipe next loads.

  • vella status names each loaded model's tier and effective Standard/Optimized Fast/Optimized Exact path; stock fallbacks retain the requested recipe in parentheses.

  • The Microphone menu checks the system default input at recording start and can use an available fallback. Losing the mic mid-recording stops capture, keeps the audio and offers Retry.

  • The bundled schema-2 diagnose reference is the final quiet-window qualification, with recorded conditions. Release checking and packaging validate it against the shipped model recipes.

  • Known limitation: --language does not change recognition in 2.0; it only sets verbose_json.language, which echoes the requested code, or unknown when omitted. Detected-language reporting is deferred to 2.1.

  • Kept performance levers are now on by default for their measured model/precision cells: native INT8/INT4 in Parakeet Fast; tail blocks in Ultra Fast and Exact; keep-cache in Nemotron Fast and Exact, plus joint batching in BF16 Fast. Standard uses none. Lab =1/=0 overrides remain; effective lever configurations match measured verdicts; GPU-identity keys require fresh local qualification.

  • Installers refuse older versions and older builds of the same version unless explicitly authorized with --allow-downgrade. Signing checks still apply; manual backup restoration is unchanged.

Known limitations

  • Streaming memory: in 20-minute real-time tests Nemotron's peak footprint was 1.78 GB at 16-bit and 1.19 GB at 8-bit, ending below its loaded level. These tests do not bound long-duration memory growth. Streams of an hour or more are not yet verified.

Added

  • Prebuilt install. scripts/install.sh downloads the release zip with curl, verifies its SHA-256, contents, version and code signature before touching anything, swaps the app in place and waits until it is ready (ready: …). scripts/install-release.sh <version> --dry-run verifies without installing. No Xcode or Python needed; VELLA_BUILD=source builds the checkout instead.
  • Keep Hot per kind of load: manually loaded models stay loaded (default Always) and load again at launch; models loaded for a dictation unload after 15 idle minutes by default.
  • Memory: Fit in free memory (default) unloads idle models or refuses a load with the numbers and remedies; Allow swap (slower) skips the check.
  • Engine label Optimized Fast · <chip>, Optimized Exact · <chip> or Standard under a loaded model, backed by a self-test at load and a fallback that redoes a failed optimized transcription on the stock path.
  • First dictation without a model keeps the recording and offers Get (); the recording is transcribed once the model is ready.
  • In-app updates. A newer release shows an orange Update to X… item under Support the Developer…. Update Now downloads the release, verifies its SHA-256, contents, version and that it is signed like the running app, installs it when Vella is idle and restarts; if the new version does not become ready, the previous one is restored. It replaces the notice that only opened the release page.
  • Audio files, for you and your agents. vella transcribe <file> (text, --srt, --vtt, --json) and an OpenAI-compatible local API (POST /v1/audio/transcriptions, GET /v1/models, GET /status) on 127.0.0.1, so the OpenAI SDKs work with only the base URL changed. Any audio macOS decodes, up to 3 hours; dictation always goes first; nothing is pasted or kept. The installer links vella into ~/.local/bin; Copy Skill for Your Agent and vella skill provide the agent skill.
  • One-command install without git. curl -fsSL https://tobynoskillson.github.io/Vella/install.sh | bash now installs the prebuilt release with the same checks as scripts/install.sh (it built 0.8.8 from source with Python). bash -s -- --dry-run verifies without installing.
  • Benchmark site at https://tobynoskillson.github.io/Vella/: every measured model and precision on the v2 benchmark, sortable, with the estimated cloud API rows.
  • Models controls for agents. vella models --json lists all table rows and cells; Select, Get (explicit --yes consent), Load, Reload, Unload, Delete (explicit precision and --yes), Keep Hot and Memory use the table's controller and runtime. Authenticated local API routes expose the same controls; file transcription itself still never downloads.
  • Optional disk image. scripts/package-dmg.sh makes a local Vella-2.0.0.dmg from the verified release ZIP, keeps the app's existing signature and adds its checksum. The primary installer still uses the ZIP.

Measured

  • Every measured precision is offered. All 63 model × precision × path cells can be selected, with their measured figures. 21 of them fail the presence check against 16 bits: test clips came back empty or cut short (Qwen3 ASR 1.7B int8 also loses 42.64 points in Turkish). Their tooltips and vella models --json say what failed, and they are never recommended.

  • Nemotron gates are layout-aware. Each gated cell compares with native Standard using the same session/shard order and endpoint gap; a missing same-layout control is not a pass. Int8 and int4 are offered but not recommended; int4 loses 21 test clips.

  • On Apple M5 Max, macOS 26.6, 1–2 October 2026: Parakeet v3 Ultra bf16 · Optimized Fast is 15.51% English WER, 507.1× real time, 4.58 J per audio minute and 1,792 MB peak RAM. Accuracy uses v2 (239.7 min); speed, energy and peak RAM use v2-quick (22.5 min). Measured build deb8845 was built from 6eed904; the final figures carry the source bridge and build provenance in Resources/benchmarks.json.

  • Whisper Standard and Optimized were measured in the same quiet window on the faithful FP16 build; the refresh completed 4 October. Exact and Fast use the same exact-only whisper-4 recipe and canonical measurement. Per-cell and tier gates use that build’s FP16 Standard baseline; the earlier Float32-baseline figures remain withdrawn.

Changed

  • A fresh install downloads and loads nothing. Earlier versions downloaded and selected Parakeet Q4 during installation.
  • One helper process per loaded model; a crashed helper restarts up to three times (after 2, 4 and 6 s). Helpers exit when Vella quits or is force-quit, and helpers left behind by an earlier Vella are stopped at launch, matched by their executable file only.
  • The installer keeps the previous app until the new one reports ready, and refuses while a model is loading as well as during dictation.
  • Signing migration. An installed Vella with an ad-hoc, Apple Development or other verified signature can move to the pinned release identity only with explicit --migrate-signing consent. The installer names the identity being replaced, asks y/N only with terminal stdin, keeps the old app for rollback and warns that macOS will ask for Microphone and Accessibility again. Same-identity updates need no migration consent. For 0.8.x or development-signed installs: curl -fsSL https://tobynoskillson.github.io/Vella/install.sh | bash -s -- --migrate-signing.
  • Updates replace the whole app bundle, so files from older versions (including Python-era resources) never survive an update.
  • Licence changed to MIT. Vella 2.0 is licensed under the MIT License. Published 0.x releases remain Apache-2.0; their licences are not changed retroactively. Third-party code and model weights retain their own licences.
  • Chip coverage. Standard is optimized for your Mac through MLX; Optimized adds our custom kernels. Measurements are from an M5 Max with a 40-core GPU; other M5 configurations have not yet been tested. The CLI help and agent guides state that boundary explicitly.
  • Installation. The release installer remains the primary route: checksum and signature verification, quarantine removal and automatic launch. The standalone installer now checks macOS 26, matching the shipped app. scripts/install.sh --dry-run now forwards verification-only mode correctly.
  • Updating legacy quantizations. Earlier published 8/4-bit downloads are kept on disk but no longer used as measured tiers. When the same tier is offered and its 16-bit source is installed, a saved selection moves to the measured local derive at that tier, without a download. A tier no longer offered moves to the installed 16-bit source. Every changed selection is disclosed in a visible launch notice and one log line per mode. Without that source, the selection is cleared; its reason is retained and shown when the next recording needs a model. Use Get for its 16-bit source. Retained legacy files, including tiers no longer offered, can be deleted only after confirmation in Models or with vella delete ID --precision int8/int4 --yes.
  • The dictation helper keeps up to 64 MB of reusable GPU buffers between requests instead of freeing them after every request, so dictation is slightly faster (about 4 % on Parakeet v3 Ultra BF16). It never holds more than 64 MB while idle, frees them after a failed request, and releases them on unload or when macOS reports memory pressure. VELLA_DICTATION_KEEP_CACHE=0 restores the old behaviour.
  • Smaller app and download. Dictation and live-transcription helpers are now one program, and shipped programs carry no debug symbols. Both helper processes appear as VellaWorker in Activity Monitor, top and crash reports (signing identifier VellaWorker); the streaming one is still started as VellaStreamingWorker. Use a PID rather than a process name for diagnostics. Release packages include a separate, checksummed Vella-VERSION-arm64-symbols.zip with UUID-matched dSYMs for crash symbolication; installers download only the app. Plain source builds retain no extra symbol directories.
  • **Only ...
Read more

Vella 0.8.8

Choose a tag to compare

@TobyNoSkillSon TobyNoSkillSon released this 14 Sep 14:43

Install or update

curl --fail --location --proto '=https' --proto-redir '=https' \
  https://raw.githubusercontent.com/TobyNoSkillSon/Vella/v0.8.8/scripts/install.sh | bash

Apple Silicon, macOS 14+, Apple's Command Line Tools and native Python 3.12–3.14. This is a checksummed source release, not a notarized prebuilt app. Finish recording or transcription before updating. Existing settings, models and recordings are retained. Ad-hoc updates can require renewing macOS privacy approval. Checksums verify the archive, not the trustworthiness of the bootstrap script itself.

Included

  • Automatic verified Parakeet Q4 setup on fresh installation (about 637 MB), without resetting existing model choices.
  • After-use, once-per-calendar-day GitHub update notices. No startup request, polling timer or automatic updater; no audio or transcripts are sent.
  • Current native interface screenshots, clearer local-storage/privacy notes and a focused source package.

Application behavior is unchanged from v0.8.7. This release completes documentation and source-package cleanup. The clean archive independently built and its app signature verified; 96 Python tests passed with one environment-dependent skip. Runtime source remains identical to the previously qualified release. No physical-microphone or endurance qualification is implied by this documentation pass.

Vella 0.8.7 — source download retired

Choose a tag to compare

@TobyNoSkillSon TobyNoSkillSon released this 14 Sep 14:24

This uploaded source package has been retired following documentation and asset cleanup.

Use Vella 0.8.8 for installation or updates. Existing recordings, models and settings do not need to be deleted.

The corresponding Git tag remains available as source history. Its old pinned curl command is no longer an active installation route.

Vella 0.8.5 — source download retired

Choose a tag to compare

@TobyNoSkillSon TobyNoSkillSon released this 14 Sep 08:18

This uploaded source package has been retired following documentation and asset cleanup.

Use Vella 0.8.8 for installation or updates. Existing recordings, models and settings do not need to be deleted.

The corresponding Git tag remains available as source history. Its old pinned curl command is no longer an active installation route.