What stays on your Mac
Every step of dictation happens on-device:
- Audio. When you hold the hotkey, Evoglyph captures microphone audio into memory on your Mac. It is never written to disk and never transmitted off your machine.
- Transcription. Speech-to-text runs on the Apple Neural Engine via FluidAudio's Parakeet TDT model. The model file lives on your Mac after the one-time first-run download. Audio goes in; text comes out; nothing crosses the network.
- Cleanup. When AI cleanup is on, Evoglyph runs an MLX-powered LFM2-2.6B language model inside the Evoglyph process. The raw transcript, the cleanup prompt, and the cleaned output stay in process memory. They are not sent anywhere.
- History. Your dictation history is stored in a local SQLite database on your Mac. macOS does not protect this file at rest unless you enable FileVault (a system-wide setting that encrypts your whole disk). Evoglyph cannot read the database from anywhere else, and we cannot recover it for you if you delete it.
- Vocabulary and settings. Custom vocabulary, hotkey choice, cleanup preferences: all in local app storage. None of it is synced to a server.
- Text injection. Evoglyph types the final text into your focused app via macOS Accessibility APIs. The text does not leave your Mac. Evoglyph skips native macOS password fields and recommends against dictating into any password field; see Password and secure fields.
The five network calls Evoglyph makes
Evoglyph is local-first, but it is not network-free. Here is every outbound connection the app makes, and why:
-
License activation. When you enter your license key, Evoglyph contacts
its licensing service at evoglyph.com to confirm the key is valid and claim a device
slot. The request includes only your license key and a per-install, pseudonymous
instance name and id (an opaque
EvoGlyph-identifier — not your hostname). It does not include your Evoglyph version or any dictation content. - License re-validation. Evoglyph periodically re-checks your license against its licensing service to keep your subscription state in sync (active, past-due, canceled, etc.). It sends only your license key and the stored instance id. No dictation content.
-
Free-trial check. While Evoglyph runs without a license, it verifies
your free trial against its own trial service at
evoglyph.com. The request contains a one-way salted SHA-256 hash of your Mac’s hardware UUID (never the raw UUID) and, after dictations, the running count of trial words you have used. No dictation content, and no trial calls at all once you activate a license. The full exchange is spelled out in Trial counter and license activation below. - Auto-update check. The Sparkle framework checks evoglyph.com’s update feed (appcast) on a schedule for new releases. The check transmits your Evoglyph version and macOS version so we can serve the right update file. We rely on standard web server access logs only.
-
First-run model download. The Parakeet transcription model and the
optional MLX cleanup model are downloaded once, on first use, from
Hugging Face (
huggingface.co), a third-party public model host. The small NLI “edit-check” model used by cleanup is downloaded fromdownloads.evoglyph.com(Evoglyph’s own Cloudflare storage). These are hash-verified model files, not telemetry; after the download, they run from your local disk. - Trial start (trial only). On first launch, Evoglyph registers your free trial with Evoglyph’s licensing service so the 3,000-word / 7-day limit can be enforced. The request contains a single pseudonymous device hash (an opaque identifier — not your name, email, or any dictation content); the server records the trial start time against it. See Trial counter and license activation below for exactly what the trial ledger stores.
- Trial usage sync (trial only). During the trial, Evoglyph periodically syncs your running trial word total — a single cumulative number — to the licensing service, keyed by the same device hash, so the word limit cannot be reset by deleting local data. The payload is the device hash and that one number. No audio, no transcripts, no app names — ever.
First-party crash and error reporting is not in this list because it is
off by default. If you opt in (Settings → Diagnostics), it adds a
sixth outbound channel to Evoglyph’s own server at diag.evoglyph.com.
See What you can turn off below.
What Evoglyph never does
Evoglyph does not:
- Send your microphone audio to a server.
- Send your transcripts to a server.
- Send your cleanup prompts or cleaned text to a server.
- Send your custom vocabulary or settings to a server.
- Track which apps you dictate into, or log window titles.
- Use your dictations to train any model: ours, FluidAudio's, MLX's, or anyone else's.
- Use tracking cookies on the website. Analytics is cookieless and does not build a per-visitor profile.
- Sell, rent, or share user data with third parties for advertising.
What you can turn off
You control every optional channel from Settings → Diagnostics:
- Crash and error reporting (off by default). When on, Evoglyph sends crash reports (unsymbolicated stack traces; hang reports too if macOS provides them for menu-bar apps), error events such as a failed transcription or paste, app version, macOS version, speech-model variant, cleanup-engine state, the pipeline state at the time of the event, and recent app-event categories (never message text) — to Evoglyph’s own servers, with no third-party analytics vendor. Never your audio, transcriptions, vocabulary, clipboard, or the apps you dictate into. Anonymous: no account, device, or user identifier. Reports are deleted after 90 days.
- Auto-update check. Sparkle's update check can be disabled, though we recommend leaving it on. Evoglyph ships outside the Mac App Store; auto-updates are how you get security fixes.
License activation and re-validation cannot be disabled; Evoglyph must verify your license to enable dictation. The re-validation cadence is conservative and the payload contains no dictation content. The free-trial check works the same way while you are unlicensed: it cannot be turned off, because it is what enforces the trial. See Trial counter and license activation.
Trial counter and license activation
The trial gives you up to 3,000 words of successful dictation, or 7 days from first launch, whichever ends first, before you need an active license. The counter increments only when text is successfully injected into your focused app; silent dictations and failed injections do not count.
The trial is enforced server-side. A counter that lived only on your Mac could be reset by deleting the app’s data, so Evoglyph checks the trial against its own trial service. Here is the entire exchange:
-
What is sent. A one-way device hash: the SHA-256
digest of your Mac’s hardware UUID (
IOPlatformUUID) mixed with a fixed salt. The raw UUID never leaves your Mac, and the hash cannot be reversed into it. The sync call also carries one number: the running count of words you have dictated during the trial. Never your audio, transcripts, vocabulary, name, email, or any raw device identifier. -
When. Once, the first time you launch Evoglyph without a license
(
evoglyph.com/api/trial/claim), and then as a debounced sync shortly after you dictate while unlicensed (evoglyph.com/api/trial/sync). Activating a license stops these calls entirely. - Why. Trial enforcement, nothing else. The server keeps one small record per device hash: when the trial started, the words used, and whether the trial is exhausted. That record is what stops a trial from being restarted by clearing local data or reinstalling. It is pseudonymous, is not joined to your name, email, or license, and is not used for analytics or marketing.
Each response comes back cryptographically signed and Evoglyph caches it locally, so the trial keeps working offline within its window rather than phoning home on every dictation.
The trial limit is enforced server-side. At first launch Evoglyph registers the trial with its licensing service, and during the trial it syncs your running word total (network calls 5 and 6 above). The server keeps one trial record per device, keyed by a pseudonymous device hash, containing: the trial start time, the cumulative word count, the word/day limits, and an active/exhausted flag. That is the entire record — it holds no audio, no transcripts, no app names, and no name or email (the trial requires no account). Its only purpose is making the trial limit stick across reinstalls; it is not usage analytics, and outside of this single trial total we keep no record of your dictation usage at all.
Activating your license calls Evoglyph's licensing service with your license key. It does not transmit any dictation content. After activation, your license state is stored locally and the trial service is no longer contacted.
How to audit Evoglyph yourself
You do not have to take our word for any of this. To verify Evoglyph's network behavior:
-
Little Snitch or LuLu will show you every outbound connection Evoglyph
attempts. You should see calls only to
evoglyph.com(license activation, the free-trial check while unlicensed, and the Sparkle update check),huggingface.coanddownloads.evoglyph.comfor the one-time model downloads, and — only with crash reporting opted in —diag.evoglyph.com. -
Console.app filtered to
process:Evoglyphshows the local debug log Evoglyph writes to~/Library/Logs/evoglyph/. That file is what you would attach to a support email.
A note on the landing site
Everything above describes the macOS app. The marketing site at
evoglyph.com is a separate surface, and how we measure it is deliberately
minimal.
How we count visits. evoglyph.com loads no analytics beacon and no client-side analytics script — open your browser’s developer tools and you will see the site make no request to any analytics vendor. Instead, Cloudflare (which already serves the site) counts page visits in aggregate at its edge, the same place it routes the request. That edge-side count gives us totals, referring sites, and the country a request came from. It uses no cookie, sets no client-side storage, builds no per-visitor profile, and Evoglyph stores no IP address. It counts page visits — not which buttons you click. It does not see your dictation content, your trial record, or your license.
How we count downloads (and where a click came from). When you click a
“Download for macOS” button, the site routes through a /download
endpoint that redirects you to the installer and records one
anonymous, aggregate download event in our Cloudflare D1 database. That
event contains: the date; the country and a coarse
region your request came from (derived at Cloudflare’s edge); the
app version; and an aggregate attribution tag — the
host name of the page that referred you (e.g. news.ycombinator.com,
host only) plus any campaign tags in the link (the utm_source,
utm_medium, and utm_campaign values, each truncated and
allowlisted to plain campaign labels). It sets no cookie, stores
no IP address, keeps
no full referring URL and no query string, and writes
no per-visitor identifier — two downloads can never be tied back to
the same person. The data exists only in aggregate.
How we measure the docs. Each docs article has a “Was this
helpful?” Yes/No control at the bottom. Clicking it records one
anonymous event in our Cloudflare D1 database: the article slug, the
yes/no verdict, and the country derived at Cloudflare’s edge — nothing else. A
“No” also triggers a notification email to
[email protected] containing the same three fields. No cookie, no IP, no
identifier of any kind; two clicks can never be tied to the same person, and there is no
reader to reply to.
Why there is no cookie banner. A consent banner is required when a site
stores information on, or reads information from, your device for purposes that are not
strictly necessary (the EU ePrivacy rule, Art. 5(3)). The public marketing and docs pages
at evoglyph.com do neither: they set no cookie, write nothing to your browser, and load no
client-side script that reads your device. Two strictly-necessary cookies
exist behind explicit actions: signing in at /account sets an HttpOnly
session cookie whose only job is keeping you signed in (it expires after 30 days and is
deleted on sign-out), and the private, access-controlled admin area sets a CSRF-protection
cookie. Both are functional, are never used for tracking or analytics, and fall under the
Art. 5(3) strictly-necessary exemption — so no consent banner is required for them
either. The aggregate analytics above are processed under our
legitimate interest in understanding our audience and running the
business (GDPR Art. 6(1)(f)), documented in an internal Legitimate Interest Assessment.
The coarse, edge-derived country and region are not used to identify you and are not
treated as personal data tied to an individual. We mention all of this here so you see
both surfaces — the app and the site — in one place.
Your rights, retention, and processors
This page is the Evoglyph privacy policy. Below is who processes your data, how long it sticks around, and how to make a privacy request.
Who controls your data
Evoglyph is operated by Eluketronic LLC, a New York limited liability company, 447 Broadway, 2nd Floor #1266, New York, NY 10013, USA. Eluketronic LLC is the controller of the personal data described in this policy. To exercise any of your rights or ask a privacy question, email [email protected].
Third-party processors
Evoglyph is local-first, so the list of services we share data with is short. Each one is named above with the exact payload it receives:
- Stripe, Inc. — processes payments at purchase. Stripe receives the payment details you enter at checkout (Stripe holds your card data; we never do) and holds your order and subscription record. See Stripe’s privacy policy.
- Resend — delivers transactional email. When you purchase, Resend sends your license-key email; when you sign in to your account on the web, it sends your magic sign-in link. In both cases it receives your email address and the contents of that message. (It also delivers the docs-feedback notification described above to our own support address — that message contains no reader data beyond the article slug, verdict, and edge country.) See Resend’s privacy policy.
-
Cloudflare, Inc. — hosts evoglyph.com and the licensing service
that activates and re-validates your key (it receives your license key and a per-install
pseudonymous instance name/id; your license, entitlement, and device-activation records
— including the device label tied to each activation — are stored in
Cloudflare D1), hosts the trial service that enforces the free trial (it receives the
one-way salted device hash and trial word count described above; the trial record is
stored in Cloudflare D1), records per-article docs-feedback counts (slug, yes/no
verdict, edge country — no identifier) in Cloudflare D1, counts page visits on the
marketing site in aggregate at its edge (server-side, with no analytics beacon or
client-side script, cookieless, no per-visitor profile, and no IP stored by Evoglyph),
serves the model and installer downloads from Cloudflare storage, records anonymous
download counts (date, country, coarse region, app version, the referring page’s
host name, and allowlisted
utm_*campaign tags — no IP, no cookie, no full referring URL, no per-visitor identifier) in Cloudflare D1, and — only if you opt in to crash reporting — receives opted-in diagnostic reports atdiag.evoglyph.com(a Cloudflare Worker on Eluketronic’s own account; data stored in Cloudflare D1 and R2). No diagnostic data is shared with any other party. See Cloudflare’s privacy policy.
We do not use ad networks, retargeting pixels, or session-replay tools. The list above is exhaustive.
International data transfers
Eluketronic LLC is based in the United States, and our processors — Stripe, Cloudflare, and Resend — are US companies that process this billing-side data in the United States. If you are in the EU, the UK, or another region with data-transfer rules, your personal data is transferred to and processed in the United States. Where the law requires it, those transfers rely on appropriate safeguards, such as the Standard Contractual Clauses (and each processor’s own transfer mechanism, e.g. the EU–US Data Privacy Framework where applicable). Your dictation never leaves your Mac, so it is never transferred to any of these processors.
Retention
- Your Mac. Evoglyph stores transcription history, custom vocabulary, and settings locally on your device until you delete them. We have no copy.
- Stripe. Order and subscription records persist for as long as your subscription exists, plus whatever Stripe retains for tax and accounting compliance after deletion. Your license and entitlement records live in our Cloudflare D1 database; we can delete your account-side records on request.
- Billing event records. To reconcile and back up orders and to recover from processing failures, we store the raw event records our payment processor (Stripe) sends us in our Cloudflare D1 database. These records can include your name, email, and billing address. We keep them for as long as we need them for billing, accounting, fraud-prevention, and legal-compliance purposes, after which we delete or anonymize them.
- Free-trial records. One row per one-way device hash: when the trial started, the words used, and whether the trial is exhausted. It contains no name, email, IP address, or content, and the hash cannot be reversed into a device identifier. We retain it for as long as we offer the free trial; deleting a row is exactly what would let that device’s trial restart.
- Crash and error reports (if opted in). Reports are stored on Evoglyph’s own Cloudflare infrastructure and deleted after 90 days via an automated daily purge and a storage lifecycle rule.
- Cloudflare page-visit counts. Page visits are counted in aggregate at Cloudflare’s edge; there is no per-visitor record we can access or export.
-
Download counts. Each macOS download records an anonymous event (date,
country, coarse region, app version, the referring page’s host name, and any
allowlisted
utm_*campaign tags) in our Cloudflare D1 database. There is no IP, cookie, full referring URL, or per-visitor identifier, so there is no per-visitor record to access or export — the data exists only in aggregate.
Legal bases for processing (GDPR)
If the GDPR (EU/UK) applies to you, we rely on the following legal bases for the billing-side data we process:
- Performance of a contract — to issue, activate, re-validate, and manage your license and to process your purchase, subscription, and order email.
- Legitimate interests — to prevent fraud and abuse (including enforcing the free trial's one-trial-per-device limit), to keep the service and our systems secure, and to keep aggregate, non-identifying download and docs-feedback counts.
- Consent — for opt-in crash and error diagnostics, which are off by default and which you can turn off again at any time.
- Legal obligation — to keep billing and accounting records the law requires us to retain.
Your rights
Under the GDPR (EU/UK) and similar privacy laws, you have the right to:
- Access — know what personal data we hold about you.
- Rectification — correct inaccurate or incomplete data.
- Erasure — delete your data, subject to legal retention requirements.
- Restriction — ask us to restrict processing in certain cases.
- Objection — object to processing based on our legitimate interests.
- Portability — request a copy of your data in a portable form.
- Withdraw consent — where we rely on consent (e.g. diagnostics), withdraw it at any time without affecting prior processing.
You also have the right to lodge a complaint with your local data protection or supervisory authority. We do not engage in automated decision-making or profiling that produces legal or similarly significant effects.
Because Evoglyph is local-first, the personal data we hold is limited to your billing-side records: your Stripe order record, your license and entitlement record, the device labels tied to your activations, the pseudonymous free-trial record keyed by a one-way device hash, and the raw billing event records described under Retention. Email [email protected] with the subject "Privacy request" and we will respond within 30 days.
California privacy rights (CCPA/CPRA)
If you are a California resident, the CCPA/CPRA gives you specific rights. The categories of personal information we collect, where they come from, and why:
- Identifiers (your email address, license key) — collected from you and from Stripe when you purchase — to issue and manage your license and to contact you about your order.
- Commercial information (purchase, subscription, and order records) — collected from Stripe — to process and reconcile your purchase and provide support.
- Internet or other electronic activity (coarse, edge-derived country and region for download counting; cookieless analytics events) — collected at Cloudflare’s edge — to count downloads and page visits in aggregate.
- Device information (a per-install pseudonymous device label tied to each license activation, and a one-way salted hash of your Mac’s hardware UUID collected while unlicensed) — collected from your device — to enforce the two-device activation limit and the one-trial-per-device free trial.
We do not sell or share your personal information as those terms are defined under the CCPA/CPRA (“share” meaning cross-context behavioral advertising). Because no sale or sharing occurs, no “Do Not Sell or Share My Personal Information” link is required. We provide notice of collection through this policy. California residents may exercise the right to know, delete, and correct their personal information, and the right to opt out of any sale or sharing — and we will not discriminate against you for exercising any of these rights. To make a request, email [email protected].
Data-breach notification
If a data breach affects your personal data, we will notify affected users without undue delay and the relevant supervisory authority where the law requires.
Children’s data
Evoglyph is not directed to children, and we do not knowingly collect personal data from children.
Changes to this policy
Material changes will be noted at the top of this page with a new "Last updated" date and, if substantive, a note in the Evoglyph changelog. The most recent revision date is at the top of this article.