Privacy Policy

Last updated: October 28, 2026

The short version. Notchi asks for no name, email or password. At launch it registers an anonymous account with our server, which holds your Notchi Balance. Your clipboard, conversations and settings stay on your Mac. With your own key or a CLI, your prompts go straight from your Mac to the provider you chose. With Notchi's own models, they pass through our gateway, which records when, which model, how many tokens and what it cost, but not what you asked or what it answered (§13). Memory, on by default, keeps notes about you in a folder on your Mac (§6). Three features need real access to your Mac: reading your selection (§4), running shell commands from a chat, on by default (§11), and running an agent in a folder you pick (§10). This website runs aggregate analytics (§15).

Where data goes: with your own key or CLI, from your Mac straight to that provider. With Notchi's models and Jev, from your Mac through our gateway to a model provider. Model list and update checks, from your Mac to notch.website and GitHub. Your Mac history, clipboard, keys, settings The provider you chose your own key or CLI Notchi gateway Cloudflare Model provider Notchi's models, Jev notch.website, GitHub no prompts model list, update checks

1Who we are

Notchi is an open-source macOS utility from Lofi Lab, a solo indie developer. Every claim on this page can be checked against the source at github.com/cyrus-cai/notchi. It's distributed by direct download and through GitHub, not the Mac App Store.

2What the app doesn't collect

No name, no email, no password, no device ID, no fingerprinting. The app ships no analytics or telemetry SDK, no crash reporting, no ad SDKs, and no third-party tracking libraries.

It does talk to us in four ways. At launch it registers an anonymous account, the one your Notchi Balance lives on (§13). It fetches the model list and the update notice (§14). Requests to Notchi's own models go through our gateway (§13). And Jev reads the messages you send, to react with an emoji, and — once you have added credit — what you copy, unless you turn either off (§3, §13). The website runs aggregate web analytics — §15.

Stays on your Mac

3Clipboard access

Reading your clipboard is the core feature: it's what the assistant acts on and what fills the "Recent" list.

  • Clipboard text is read while the panel is open and when you copy something (Copy sensing, below). It is never written to disk and never stored in Recent.
  • It reaches a provider only when you act on it — your request refers to it ("summarize this") or you tap a clipboard action chip. The preview sent with your question carries at most 1,500 characters; the model's read_clipboard tool (§11) at most 4,000.
  • Close the panel without asking anything and it goes nowhere.
  • Copy sensing. When you copy text, Notchi checks whether it looks like a task, a date, a question, an address or an order number, and offers to file it. This runs on your Mac. Once you have added $1 or more to your Notchi Balance, it asks Jev instead, unless Copy sensing is set to On-device: the copied text, at most 1,500 characters, goes to our gateway and Cloudflare Workers AI (§13). Text that looks like a password, key or card number is not sent.
  • Images are the exception to "never written to disk." Attach one — a screenshot, a copied picture, an image file from Finder — and it's downsampled, sent with your question, and saved with the conversation as a JPEG in ~/Library/Application Support/Notch/HistoryImages/. Deleting the conversation deletes it.

4Reading your selection in another app

Three features read the text selected in the app in front: a prompt shortcut, a force click on selected text, and opening the notch, which brings the selection in as a quote (you can turn this one off). That needs macOS Accessibility permission, and Notchi asks for it the first time one of them needs it.

  • The read happens only at the moment one of these fires. No keystroke logging.
  • In apps that don't expose the selection, Notchi copies it with ⌘C and puts your previous clipboard back.
  • Password fields are detected and skipped.
  • What's read goes to your chosen provider only when you send it, like anything else you type.

5Your API keys

Keys are stored on your Mac in the app's preferences (macOS UserDefaults) — in plaintext, not the Keychain. They leave only as the authentication header to the provider they belong to, never to Lofi Lab. Environment variables (OPENAI_API_KEY, EXA_API_KEY, …) override a stored key.

Your Notchi account token is the exception: it is kept in the macOS Keychain, our server issued it, and it goes back to our server with each request to Notchi's models and to Jev (§13).

6What's stored locally

None of this is uploaded anywhere:

  • Conversations — ~/Library/Application Support/Notch/history.json: the full thread, a title, a timestamp, and a link back to the Note or Reminder if it made one. Recent shows the latest 50; the rest stay in the Archive window.
  • Attached images — …/Notch/HistoryImages/ (§3).
  • Agent run logs — …/Notch/AgentRunLogs/ (§10).
  • Memory — ~/Library/Application Support/Notchi/Memory/: Markdown files the model writes about you, such as your work, plans and preferences. On by default; turn it off in Settings → Chat. Settings lists each file, and turning Memory off deletes all of them. The folder is not uploaded, but the model you chose sees the file list and any file it opens, and reads your conversations and copies to write them (§13).
  • Clipboard history — …/Notchi/clipboard-history.json: your latest 50 copies, kept only while Memory is on.
  • Link previews — ~/Library/Caches/com.notchglass.app/LinkCards/: the title and image of pages linked in answers (§11).
  • Keys, model choices and preferences — panel placement, dock icon, translation languages, enabled chips, prompt shortcuts, note destination, proxy, onboarding state, the last "What's New" you saw, running /loop prompts, and the token totals Stats adds up.
  • The on-device classifier's cache — …/NotchGlass/IntentHeads/. On-device Copy sensing (§3) runs on it and never leaves your Mac.
  • Failure diagnostics — …/Notchi/diagnostics.json: the last 50 failures as timestamp, provider, HTTP status and error category. No prompt text, no clipboard content, no keys.

7Permissions

macOS asks once, and only if you use the feature. Permissions has more on each.

  • Accessibility — reading your selection (§4).
  • Automation / Apple Events — saving a line to Apple Notes. Filing notes to a Markdown folder instead skips this entirely.
  • Reminders — filing a line in Apple Reminders.
  • Notifications — telling you an answer or agent task finished after you walked away.

Not requested: Screen Recording, Microphone, Camera, Location. The app isn't sandboxed — it has to launch the CLI agents — so it runs with your account's ordinary file access, but touches only the paths in §6 and folders you hand it. If a proxy is set, in Settings or macOS or your shell, the app and the CLI agents both use it.

Goes straight to the provider you chose

8AI features — your own key

With a provider you connect yourself, Notchi sends your prompts straight from your Mac to that provider over HTTPS, signed with your API key. There is no Lofi Lab relay server for these providers — we never receive, see, or store your prompts or the replies, and can't train anything on them. Notchi's own models are the one case where your prompts pass through our server, and they have their own section (§13).

One provider is active at a time, and each handles your data under its own privacy policy. Supported: OpenRouter, Vercel AI Gateway, OpenAI, Anthropic, Google Gemini, DeepSeek, Zhipu AI (GLM), Alibaba Qwen, Moonshot (Kimi), MiniMax, Xiaomi MiMo — plus any OpenAI-compatible endpoint you point it at, including a model running locally, in which case nothing leaves your Mac at all.

OpenRouter's one-click connect opens your browser to sign in; the key it returns is scoped to your own account and saved locally like any other.

9Local CLI backends

Codex, Claude Code, Cursor, Grok and pi aren't HTTP APIs. Notchi launches the official CLI you already installed and signed in to, and talks to it over standard input and output. The request runs under your session with that vendor, billed to your plan and governed by their privacy policy — exactly as if you'd typed it in your terminal. Notchi never reads or transmits those credentials, and offers no in-app sign-in for them.

10Agent tasks on a folder

Drop a project folder onto the notch and one of those CLI agents runs the task there. It reads and writes files in that folder and runs shell commands, unattended — each CLI runs in its auto-approval mode so a task doesn't stall on a prompt nobody will answer. Only point it at folders you're willing to have changed.

What the agent reads goes to that CLI's provider, not to us. Each run's output is kept in ~/Library/Application Support/Notch/AgentRunLogs/ and deleted with the task.

11Tools the model can call

These run on your Mac mid-answer, and the call and its result are part of the conversation — so your provider sees what they return.

  • read_clipboard — the clipboard text, up to 4,000 characters.
  • search_history — searches your local archive ("did I ever note anything about X"); matches come back as short excerpts. The archive itself is never uploaded.
  • read_page — fetches a page from your Mac; the site sees an ordinary visit from your IP address.
  • open_url — only on an explicit "open / take me to", and only http(s).
  • manage_app_settings — changes a setting after you confirm it. It can write a search key you dictate, never read one back.
  • create_note and create_reminder — save to Apple Notes or Apple Reminders after you confirm the card.
  • date/time and a calculator, both local.
  • run_shell — runs a command in zsh on your Mac, as you, for up to 30 seconds by default and at most 10 minutes. On by default; turn it off with Run commands in Settings → Chat. A command that deletes files, stops processes, changes permissions or ownership, touches disks, needs administrator rights, reads a credential store, or sends a message or mail runs only after you confirm it. Other commands run without asking. The output is returned to the model.
  • memory_list, memory_read, memory_write and memory_delete — read and change the Memory folder (§6), while Memory is on.

When an answer links to a page, Notchi fetches that page's title and preview image from your Mac to show it as a card; the site sees an ordinary visit.

12Web search

By default the model uses the provider's own search (Zhipu's search API for GLM, Moonshot's built-in for Kimi). Pick Exa, Keenable or AnySearch in Settings and that replaces it — Exa and Keenable need your own key, AnySearch works without one. Either way what's sent is a model-written query, not your text, and it goes straight from your Mac to that service.

Passes through our gateway

13Notchi's own models, your account, and Jev

Notchi's own models (Auto and the named models paid from your Notchi Balance) are the one case where your prompts pass through a Lofi Lab server. Our gateway, on Cloudflare, receives each request, forwards it to a model provider, and streams the answer back. Requests to OpenAI models pass through a relay on Supabase first. The gateway and the relay forward content without storing or logging it.

Your account. At launch the app asks our server for a token and keeps it in the macOS Keychain (§5). We store only a hash of the token, and the account has no name or email on it. With it we keep the app version and country it registered from. The network address it registers from is counted until the end of that UTC day, to limit mass sign-ups, and then deleted. If you buy credit, Stripe handles the payment, and we keep Stripe's customer id so later purchases and refunds reach the same balance. Card details never reach us.

What we record for each request to Notchi's models:

  • the account (the token's hash), the time, and the model;
  • which part of the app sent it (the notch panel, a prompt shortcut, the Force Touch popup, a conversation window, or naming a new shortcut), and an id shared by the requests one action produced;
  • the token counts, what your balance was charged, what the request cost us, and how long it took;
  • whether it was served, or why not: no credit, a daily limit, a rate limit, or a problem on our side;
  • the app version, and the country Cloudflare derives from your IP address. The address itself is not stored.

What we don't record: what you asked, what the model answered, your clipboard or selection, attached images, tool calls and their results, or files. They pass through the gateway's memory while the request is served and are not written anywhere by us. The model provider processes them to produce the answer.

What is sent. Your question, earlier turns, selected text, attached images, and what the model's tools return, such as pages it reads. Clipboard text, when the model reads it. The last few turns, to title a conversation, and a new shortcut's prompt, to name it. Web searches and the pages the model reads are fetched from your Mac, so those sites see your IP address.

Memory. While Memory is on (the default), the model you chose also receives: the list of memory files and their opening lines, with each question and each copy Notchi acts on; each finished exchange, to update the files; and, once when Memory is first on, up to 12,000 characters of your past questions and 20,000 characters of your recent copies. On Notchi's own models this goes through the gateway like any other request. With your own key or a CLI it goes to that provider (§8, §9).

Jev. Emoji reactions and, once you have added $1 or more, Copy sensing (§3) use Jev, a model by TypeSafe that runs on Cloudflare Workers AI. Reactions send each message you send and the end of the previous reply, unless Emoji reactions are off in Settings → Chat; Emoji reactions has the details. Copy sensing sends each copy unless it is set to On-device. Each sends at most 1,500 characters and skips text that looks like a password, key, or card number. The gateway does not store the text; its logs record the length. These requests are free.

Suggested next question. On by default for new installs; turn it off in Settings → Chat. After an answer from Notchi's own models, Jev first checks the last message and the end of the reply (at most 1,500 characters each, skipping text that looks like a password or key), and if a suggestion is worth it, the last few turns go to Notchi's free background model through the gateway. These requests are free. After an answer from your own key or a CLI, the same model writes the suggestion and nothing reaches us (§8, §9).

Why. To charge the right balance, to stop abuse and runaway spending, to plan capacity, and to see which parts of the app are used. The legal basis is providing the service you asked for (the account and billing) and our legitimate interest in running it (the rest).

Who processes it. Cloudflare runs the gateway, runs Jev and some of the models on Workers AI, and keeps its operational logs. Supabase stores the request records and runs the OpenAI relay. Stripe processes payments. OpenAI, DeepSeek and Xiaomi MiMo run the other models. Each keeps what it receives under its own policy.

How long. Request records are kept for 90 days, then reduced to daily totals per account, which are kept while the account exists. The account also keeps its latest 200 requests (time, model, tokens, charge), readable with its own token. Cloudflare's operational logs last a few days. Payment records are kept as long as tax law requires.

Your choices. Pick another provider and turn Jev off, and nothing but the anonymous account reaches us. To get a copy of your records, or to have the account and everything above deleted, email xiikii@outlook.com. If you bought credit, the email on your Stripe receipt is enough for us to find the account. Deletion does not reach the payment records Stripe is required to keep.

Checks the app makes

14Update and model-list checks

Notchi checks GitHub's public releases API for new versions; no identifiers are sent, and updates download from GitHub. It also reads notch.website/update-policy.json, which says whether to suggest an update to your version; nothing is sent with it.

It also asks notch.website for the model list every six hours, so new models appear without an app update. The request carries the app version and a flag marking the first fetch of the day and of the month. The first fetch of the day also says whether Threads is set to Unified and whether Run commands is on. We keep that, the macOS version and the country, as daily totals. No IP address, no device id.

This website, and the rest

15This website

The app has no analytics (the gateway's request records are in §13). The website does. Pages here load Vercel Web Analytics — page views with referrer, country and device class, cookieless, no cross-site tracking. Clicking the install button records the click, with your browser's language and time zone. Our host keeps standard request logs, which include User-Agent and IP address. None of it touches the app or your prompts.

16Children

Notchi is not directed to children under 13, and we do not knowingly collect data from them.

17Changes to this policy

When this policy changes, the date at the top moves and the change is listed here. Section numbers in an entry are the ones the policy had on that date.

  • October 28, 2026 — Notchi is no longer described as free: copies downloaded before January 1, 2027 are free, and new downloads from that date cost a one-time $11.99 (§1).
  • October 19, 2026 — Memory, Run commands and Suggested next question are now on by default for new installs. Added how Suggested next question works on Notchi's models and on your own key (§13). Added the Memory folder and clipboard history (§6), the run_shell and memory tools (§11), and what Memory sends to the model (§13). The summary now lists running shell commands among the features that need access to your Mac.
  • September 30, 2026 — the model list request now says, once a day, whether Threads is set to Unified and whether Run commands is on. Counted as daily totals.
  • September 28, 2026 — the sections are regrouped by where data goes, with a diagram, and renumbered. Every install now registers an anonymous account at launch, and the summary, §2 and §13 say so. §13 now covers all of Notchi's own models (the name "nono" is retired), names the model providers and the Supabase relay for OpenAI models, lists what is sent, and adds the version and country kept with an account.
    Added: emoji reactions and Copy sensing with Jev (§2, §3, §13); the three features that read your selection and the ⌘C fallback (§4); Cursor and pi, with Command Code removed (§9); the note and reminder tools and link previews (§11, §6); loops and Stats totals in local storage (§6); the update notice (§14).
  • September 10, 2026 — added §15 on nono, the model Notchi hosts: what our server records for each request, what it does not, who processes it, how long it is kept, and how to have it deleted. The summary, §2, §5, §10 and §14 now say where nono differs from bringing your own key.
    Fixed: the Children section said Notchi collects no personal data from anyone. nono accounts and their request records are personal data.
    Added: an email address for privacy requests (§18).
  • August 10, 2026 — realigned with what the app actually does after several releases of new features.
    Fixed: the app does ask for Accessibility permission, for the shortcut that reads your selection — the old text said it never does (§4). Attached clipboard images are saved to disk with the conversation, so "never written to disk" covers text only, and the clipboard tool carries 4,000 characters, not 1,500 (§3). The list of local storage paths was incomplete (§11).
    Added: the local CLI backends (§6); agent tasks in a folder you pick (§7); the tools the model can call, one of which searches your own archive (§8); the Keenable and AnySearch search backends (§9); Vercel AI Gateway and custom endpoints (§5); notification permission and the proxy path (§12); the headers sent with the model-list request (§13); and §14, on this website's analytics.
  • June 28, 2026 — first published.

18Contact

Questions about your privacy? Open an issue on GitHub: github.com/cyrus-cai/notchi/issues. For anything that should not be public, including requests about your account's records (§13), email xiikii@outlook.com.