Privacy policy
Kiko runs on your Mac. You don't need an account: with your own keys there's no sign-in, no server of ours that sees your words, and no analytics or telemetry. What leaves your Mac goes to the services you pick, with your own keys. If you choose the free trial, you sign in to a Kiko account, and the trial's AI requests pass through our server on their way to OpenRouter. This page says what goes where, feature by feature, what the account and the trial keep, and what this website keeps.
The short version
- Your voice: turned into text on your Mac by default (Apple's on-device speech). Audio is never saved. It goes to Deepgram only if you add a Deepgram key.
- Your words and your sessions' replies: sent as text to the model provider you set up (OpenRouter by default, or Anthropic) to route your words, write the spoken summaries and make quick decisions.
- Your keys: in the macOS Keychain, never in a file.
- Your logs: on your Mac only. Never uploaded.
- The account is optional: you need one only for the free trial. It keeps your email, your signed-in Macs, and usage records for the trial's AI requests (never what was said). Delete it any time on the account page.
- Us: we never receive your voice, your code or your logs. With your own keys we never receive your words either. The only things we can see are the website's request logs, the daily update check, your email if you sign up for updates, and, if you use an account and the free trial, what's listed under Accounts and Free trial. The trial's AI requests pass through our server without being stored.
Who we are
Kiko and this website, kiko.sh, are made by Bald Cactus, LLC ("we", "us").
This policy covers the Kiko app for macOS, the optional Kiko account and the free trial (account.kiko.sh and api.kiko.sh), and kiko.sh. The iPhone companion and the relay that connects it aren't released yet. We'll update this policy before they are.
Your voice
- Speech-to-text runs on your Mac by default: Apple's on-device recognizer (macOS 26). Your audio isn't sent anywhere. The first time, macOS may download Apple's English speech model.
- Kiko's voice runs on your Mac: Pocket, a local voice model, or the built-in macOS voice while Pocket isn't ready.
- Hands-free mode keeps the microphone open (macOS shows its orange dot), but everything is transcribed on your Mac. Only a phrase that starts with Kiko's name (or the name you gave it), or your answer right after a session is read out, goes any further. Other phrases are dropped.
- Audio is never saved, by Kiko or by us.
What goes to your model provider
Kiko makes a few small model calls with your own key: OpenRouter by default, or Anthropic directly if you add an Anthropic key (see below). During the free trial, they go through our server to OpenRouter with our key instead. Each call sends text, never audio:
- Routing: what you said; your sessions' names, folders and status; what each was last asked and last said (a few hundred characters); and your recent back-and-forth with Kiko.
- Summaries: a session's reply when it finishes a turn, and what you asked it, so Kiko can say it in a sentence or two. "More" sends the same reply again for a longer summary.
- Clean-up: what you said, to take out the "uh"s and false starts before a session reads it. Turn it off in Settings → Listening → Clean up my messages.
- Decisions (the classifier): quick yes/no calls: who your words are for, whether a finished reply is worth reading out, whether your answer to a permission prompt is a yes, and how risky that request looks. It sees your words, the reply, and the permission request (the command, file or tool the agent wants to use). It always goes through OpenRouter. Turn it off in Settings → Decisions → Classifier.
- Answering a session's multiple-choice question: what you said, and the question with its options.
A session's reply can quote your code, file names or command output, so parts of your code can be in what's sent for a summary or a decision. Kiko doesn't upload your repository or read your files for these calls.
OpenRouter passes each call on to the model's own provider (Anthropic's Claude Haiku by default). OpenRouter's and that provider's policies apply to what they receive. Your account settings with them (for example, whether they may log prompts or train on them) are yours to choose.
Only if you add their keys
- Anthropic: with an Anthropic key, every call above except the classifier can go to Anthropic directly instead of through OpenRouter.
- Deepgram: with a Deepgram key, speech-to-text runs on Deepgram. Your audio streams to Deepgram while you hold the talk key, with the words to expect (your dictionary, session names and folders).
- Cartesia: with a Cartesia key, Cartesia's voice reads things out. The text being said goes to Cartesia.
When you enter a key, Kiko checks it with one small request to that provider.
Your coding agents
Kiko works with Claude Code, Codex CLI, OpenCode and T3 Code on your Mac. To do that it:
- reads your sessions' conversations on your Mac, to know what they said. Nothing is uploaded for this beyond the model calls above.
- types your words into your sessions and answers their permission prompts and questions with the answers you give by voice or with a key.
- adds its hooks to each agent's settings file, after asking, with a backup first. Your own entries stay.
- with Settings → Control → Voice can set to Everything, may answer a quick question ("how much disk space do I have?") with a short, look-only Claude Code run on your Claude account. That run goes to Anthropic under your Claude account's terms.
Your agents send your conversations to their own providers, as they always do. Kiko doesn't change that, and their policies apply.
Your keys
API keys are kept in the macOS Keychain (under sh.kiko.keys), never in a file, and never shown in full: kiko keys shows the last four characters. They're sent only to the provider they belong to.
What's kept on your Mac
- Logs:
~/.local/state/kiko/logs/, one file per run. They hold what you said, what Kiko said and typed into sessions, permission requests, session names and folders, and what each model call cost. They're never uploaded. They're kept for 30 days by default: older ones are deleted when Kiko starts and once a day while it runs. Settings → Logs → Keep logs changes that (7 days, 30 days, 90 days or Forever), shows how much space they take, and opens the folder in Finder. Read them before you share one, for example in a bug report. - Settings:
~/.config/kiko/: your settings, dictionary, session names, quick-check answers, and small records of running Codex sessions. - While it runs: a socket and a small state file in
/tmp. - The app and its voice:
~/.local/share/kiko/. - If you sign in: the account's session token in the Keychain, and who's signed in in
~/.config/kiko/account.json.
To delete it all, run kiko uninstall. It removes Kiko's hooks from your agents, its settings, the app, its voice, the PATH line and its keys in the Keychain (with the account's sign-in), then asks whether to delete the logs too. It doesn't delete your account: do that on the account page. It leaves your scratch folder and the backups of your agents' settings files for you.
Installing and updates
- Installing downloads Kiko from kiko.sh, and Pocket's voice model once (about 1 GB) from Hugging Face, with its Python packages, plus uv from GitHub if you don't have Python or uv. Each of those services sees an ordinary download request: your IP address and the tool's user agent.
- Update checks: once a day, Kiko fetches
https://kiko.sh/releases/latest.json, and downloads the new version from kiko.sh when there is one. The request reveals your IP address and a user agent ofkiko/<version>, to Cloudflare, which hosts kiko.sh (see This website). There's no ID, no account and nothing else about you or your Mac in it. - Turning it off: Settings → Updates → Automatic updates stops the downloads; Kiko still checks. To stop the check too, set
KIKO_UPDATES=offin your shell.
Accounts (optional)
You don't need an account to use Kiko with your own keys. You need one for the free trial. kiko login opens account.kiko.sh in your browser to sign in.
- Signing in: with Google, or with a 6-digit code we email you. From Google we ask only for your email address (no name, no photo), and we keep Google's id for you but none of Google's tokens. Email codes are stored scrambled (hashed), allow 3 tries, and stop working after 5 minutes.
- The account: your email address, when the account was made, whether you use Google to sign in, and your plan: none, the free trial (with its dates), or later Kiko Pro, which comes with its own terms when paid plans launch.
- Each signed-in Mac or browser: a session, with the app that signed in (for example "Kiko 0.4 on macOS", or your browser's user agent), when it signed in and was last used, and the IP address it signed in from. The IP address is cleared after 30 days.
- The approval page ("Is this the code on your Mac?") shows the rough location of the Mac asking (a city and country Cloudflare works out from its IP address), so you can tell it's yours. That's kept with the code for at most 10 minutes. The Mac's IP address isn't kept with it.
- Bot and abuse checks: Cloudflare Turnstile runs on the sign-in and approval pages. It looks at your browser to tell people from bots. To limit repeated attempts, we count requests per IP address and per email (the email scrambled); those counters are deleted within 2 days.
- Cookies: account.kiko.sh sets a sign-in cookie when you sign in there, only to keep you signed in. No analytics or advertising cookies.
- On your Mac: the session's token is in the Keychain, and who's signed in (your email, since when) is in
~/.config/kiko/account.json. No token is ever written to a file or a log. - Usage records: when Kiko's AI requests go through us (the trial, and later Kiko Pro), we keep the usage records described under Free trial, never what was said.
- Emails from the account: only sign-in codes, a code to confirm deleting the account, and, during a trial, one email the day before it ends. No marketing.
- The iPhone app (not released yet) will get its account from your Mac when it pairs, with no sign-in of its own. While a phone is paired, that Mac's session doesn't expire from disuse; it ends only when you sign it out.
Free trial
- What it is: 7 days or $2 of AI usage, whichever comes first, with at most $0.50 a day. No card. At the end it just stops: nothing is charged and nothing renews.
- Where your requests go: during the trial, Kiko's AI requests (the same text as under What goes to your model provider) go to our server, api.kiko.sh, which passes them to OpenRouter with our key. OpenRouter passes them to the model's provider. We don't store or log what's in them. OpenRouter gets at most a scrambled (HMAC) id for your account, never your email. OpenRouter's and the provider's policies apply to what they receive.
- What we keep: when your trial started and when it ends, and a record of each AI request: your account's id, your plan, the kind of request (routing, a summary…), the model and its provider, how many tokens and what it cost in dollars, how long it took, whether it worked or failed, your Kiko and macOS versions, and the Cloudflare location and country it came through. It also holds an id for the request (ours, and OpenRouter's, to check the cost against theirs), a finer label for what the request was, the token limit it was sent with, whether the app hung up before the answer ended, and where the cost figure came from (OpenRouter, or our estimate). All of it is about the request, never what was said: not your prompts, not the replies. Each day's totals (requests, tokens and cost, by kind of request and model) are added up per account in the account database. A usage counter for your account keeps its own daily totals too, to hold the trial to its limits. We use this to count your trial's usage (and later Kiko Pro's), and to understand and improve Kiko. We don't sell it.
- Limits per minute: we count each account's requests a minute, and each IP address's in memory only: the address is never stored.
- One trial per person: when a trial starts, we keep a scrambled (HMAC) copy of your email, with the variations of one mailbox (Gmail's dots,
+tags) made the same first. We also check that the email's domain isn't a throwaway one and can receive mail (by looking up the domain, not the address), and limit how many trials start from one IP address a day. For that we count under a scrambled (HMAC) copy of the address, never the address itself, for a day. - Your own key wins: add an OpenRouter key any time, and Kiko's requests go straight to OpenRouter again, not through us.
Who processes account and trial data
- Cloudflare: hosts account.kiko.sh and api.kiko.sh, keeps the account database, the usage counters and the usage records, sends our emails, and runs Turnstile.
- Google: only if you sign in with Google. Google learns that you signed in to Kiko.
- OpenRouter and the model's provider (Anthropic's Claude Haiku by default): your trial's AI requests.
We don't sell or share personal information, and we don't use it for advertising. The data is processed in the United States and wherever Cloudflare runs.
How long account data is kept
- The account (email, Google's id, your plan and the trial's dates, daily usage totals): until you delete it.
- Sessions: until you sign out, or 90 days after last use (no limit while a phone is paired with that Mac).
- Sign-in IP addresses: 30 days, then cleared.
- Codes: 5 minutes (email codes), 10 minutes (
kiko logincodes, with the rough location). - Rate-limit counters: at most 2 days (the trial-start counter's scrambled IP address included). The AI requests' count per IP address is kept in memory only.
- Usage: each request's record (under Free trial) for 3 months, in Cloudflare's analytics store, which deletes it then; the daily totals in the account database for as long as the account exists. The usage counter keeps its daily totals for 100 days, and drops everything within a day of the account being deleted, or once the account hasn't made an AI request for 100 days.
- Server logs: our own lines only, with no IP addresses, email addresses, tokens or request contents. Cloudflare deletes them after 7 days.
- Backups: the database and the usage counters keep 30 days of history, so deleted data is gone from them within 30 days.
- After you delete your account: one scrambled copy of your email, for 3 years from when it was made (below).
Deleting your account
On the account page (account.kiko.sh/account), Delete my account. We email you a code to confirm it. Deleting removes your account, every session (every Mac is signed out), your Google link, and your plan, your trial and its daily usage totals in the account database, at once. The usage counter's own totals go within a day. The per-request usage records (which carry your account's id, not your email) can't be deleted one by one; they go when their 3 months run out.
Beyond those, we keep one thing: a one-way scrambled copy (HMAC) of your email, for 3 years, whether or not you used the trial, only so the free trial can't be claimed again. The 3 years count from when your trial started, or from the deletion if you never had one. It can't be turned back into your email.
Kiko keeps working on your Mac with your own key. kiko logout signs one Mac out (its session on our server ends at once). kiko uninstall removes the Mac's sign-in from the Keychain; its session on our server then ends after 90 days unused, or sign it out on the account page.
Payments
Kiko has no paid plans yet, and the trial never asks for a card. Paid plans (Kiko Pro) will come later, with their own terms, and this policy will say what they keep before you can buy one.
This website
kiko.sh has no cookies, no analytics and no trackers (account.kiko.sh sets only a sign-in cookie: see Accounts). Its pages, styles, script and demo video all load from kiko.sh itself.
Hosting and request logs
kiko.sh runs on Cloudflare. Like any web host, Cloudflare handles each request, including your IP address and user agent. For the addresses our code answers (the home page, /install.sh, /releases/ and the email sign-up), Cloudflare also keeps a request log for us: the time, the address asked for, your IP address, your browser or tool, and the rough location Cloudflare works out from the IP. We use these logs only to keep the site working and to stop abuse, and Cloudflare deletes them after at most 7 days. Cloudflare's own policy covers what it does as the host.
The email list
Signing up for email is optional; you don't need it to install or use Kiko. If you sign up, we store:
- your email address
- when you signed up
- where the sign-up came from (a
?ref=orutm_sourcein the page's address, if there was one) - your browser's user agent (the line browsers send that names the browser and its version)
Your IP address isn't stored with it; it's used for a moment to limit repeated sign-ups and then dropped. The list lives in a Cloudflare database. We use it only to email you about Kiko's updates and launch, we never sell it or share it, and if we use an email service to send those emails, it gets your address only to deliver them. Every email has an unsubscribe link.
To be deleted from the list, unsubscribe, or email support@kiko.sh from that address, and we'll delete your entry within 30 days, usually much sooner. Otherwise we keep it until you leave the list or we close it.
The demo video
The demo plays from kiko.sh. If we ever move it to YouTube, it will use YouTube's privacy-enhanced player (youtube-nocookie.com), which loads only after you press play, and Google's policy will apply to it.
Other companies' policies
These companies get data only for the features you use, and their own policies apply to it.
| Service | When | What it gets |
|---|---|---|
| OpenRouter | By default, with your OpenRouter key; during the free trial, through our server with our key | Text for routing, summaries, clean-up, decisions and answers (in the trial, with at most a scrambled id for your account) |
| Anthropic | Through OpenRouter (Claude Haiku by default, also in the free trial), with your Anthropic key, or for quick questions on your Claude account | The same text, for those calls |
| Deepgram | Only with your Deepgram key | Your audio while you hold the talk key, and the words to expect |
| Cartesia | Only with your Cartesia key | The text Kiko says out loud |
| Apple | Apple's on-device speech, the first time | The speech model download (your audio stays on your Mac) |
| Hugging Face, GitHub | Installing Pocket, Kiko's voice | Ordinary download requests |
| Cloudflare | kiko.sh, the install, update checks, the email list, and the account and free trial | Requests to kiko.sh, the request logs, the email list; the account database, the trial's usage records, the account's emails, and Turnstile's bot check |
| Only if you sign in with Google | That you signed in to Kiko; we get your email address and Google's id for you |
Your coding agents (Claude Code, Codex CLI, OpenCode, T3 Code) and the model providers behind them are covered by their own terms and policies.
Your choices and rights
- In the app, you choose the providers: leave out the Deepgram and Cartesia keys and your audio and Kiko's speech stay on your Mac. Turn off clean-up and the classifier in Settings. Logs are deleted after 30 days unless you choose otherwise in Settings, and you can delete them yourself whenever you like.
- Your account, if you have one: the account page (account.kiko.sh/account) shows your email and your signed-in Macs, signs any of them out, and deletes the account. For a copy of everything we hold about you, or to correct or export it, email support@kiko.sh. We answer within 30 days.
- On the website, the only personal data we hold is the email list and the short-lived request logs. You can ask us what we hold about you, to correct it or to delete it, at support@kiko.sh. Depending on where you live (for example in the EU, the UK or California), you may have further rights, including to complain to your data protection authority; we'll honor them.
- We don't sell or share personal information, and we don't use it for advertising.
- Why we hold it: the email list because you asked to join it (you can withdraw at any time); the request logs because we need them to run and protect the site; the account and trial data to provide the account and trial you asked for; the scrambled email after deletion to stop trial abuse (a legitimate interest); and the usage records to understand and improve Kiko (a legitimate interest), which never hold what was said.
- Where: Cloudflare may process this data in the United States and in other countries.
- Children: Kiko and kiko.sh are for developers and aren't directed at children under 16. We don't knowingly collect their data; if you think we have some, tell us and we'll delete it.
Changes and contact
If this policy changes, we'll post the new version here with a new effective date. If a change matters (for example, if Kiko starts sending something new somewhere), we'll say so on this page and in Kiko's release notes before it takes effect.
Questions or requests about privacy, security problems, and anything else: support@kiko.sh.
See also the terms of use.