Khushin

Fine print
Updated 25 Jul 2026

The parts I'd want to read first.

How the encryption actually works, what gets collected, and who owns what — for this site, for Garden, for Kapers, and for anything I ship after them. One page, because three scattered ones is how things quietly stop being true.

Garden
Technical

How your data is actually protected.

The vault
Your data is encrypted in your browser or on your device with AES-GCM, 256-bit. Nothing is encrypted on a server and then sent back to you — by the time it leaves the device it is already unreadable.
Your passphrase
The encryption key is derived from your passphrase with PBKDF2-SHA256 at 210,000 iterations. That deliberate slowness is the point: it costs you a few hundred milliseconds once, and it costs anyone guessing at your passphrase several hundred milliseconds per guess, forever. Neither the passphrase nor the derived key is ever written to disk or sent anywhere. They exist in memory while the app is unlocked, and stop existing when it locks.
What that costs you
If you lose the passphrase, the data is gone. There is no reset link and no recovery flow, and I cannot build one without also building the thing that would let me — or anyone who compelled me — read your vault. That trade is the whole design, and you should know you are making it.
Bank linking
Optional, opt-in, and additive: the app is fully useful with it switched off. When you turn it on, you link accounts through Plaid and you are accepting Plaid's terms and privacy policy for that connection — Plaid holds the relationship with your bank, not me, and I never see your banking credentials. The Cloudflare Worker Garden puts in front of Plaid is a stateless relay: it passes a request through and keeps no database of its own.
Connected mode
The accurate claim, and the one worth holding me to: Garden retains no decrypted copy server-side. That is not the same sentence as "nothing ever leaves your device" — that stronger one is only true in local and manual-import mode, so I don't use it anywhere on this site.
Manual mode
Manual entry and CSV or PDF statement import run entirely on your device. In this mode there is no account, no server call, and nothing to intercept.
Where it runs
A web app, a macOS desktop build, and a native iOS app being rebuilt in Swift on a shared Kotlin Multiplatform core.
Who checked this
One person. Me. Nothing here has been audited by anyone else. Treat every claim on this page as something to verify rather than something to believe, and write to me if you find a hole in it.

Kapers
Technical

It only touches what you point it at.

No backend
Kapers has no server. There is no account, no sign-in, and nowhere for your data to be sent, because there is nothing on the other end to send it to.
What it reads
Your calendar events and reminders, through Apple's EventKit — the same system Calendar and Reminders use — and only after you grant permission in iOS Settings. Revoke it there and Kapers loses access immediately.
Nothing changes on its own
Kapers proposes and waits. Nothing is written to your calendar or reminders until you approve that specific change.

The full Kapers privacy policy

khushin.com
Privacy

What this site knows about you.

No analytics
No Google Analytics, no Plausible, no pixels, no third-party scripts of any kind. I do not know how many people read this page and I am fine with that.
No cookies
This site sets no cookies, which is why you have never seen a consent banner on it.
One thing stored
If you use the day/night switch, your choice is saved in your browser's local storage under khushin:theme so the page does not flash white at you next visit. It never leaves your browser and it is not sent to me. Clear your site data and it is gone.
Hosting
The site is served by Cloudflare Pages. Like any web host, Cloudflare's edge records standard request logs — IP address, timestamp, the page requested — for security and abuse prevention. I do not query those logs, build profiles from them, or connect them to anything.
Email
mail@khushin.com forwards to a personal iCloud mailbox. If you write to me, I have your email address and whatever you put in the message, and I use it to reply to you and nothing else. No list, no newsletter, no passing it on.
Your data, back or gone
Ask, and I'll tell you everything I hold that relates to you and delete it if you want it deleted. For Garden and Kapers the honest answer is usually "nothing" — your vault is not readable by me, and Kapers never leaves your phone.

Next
Anything after these

Whatever I build next arrives under the same four rules, and they are not marketing copy — they are the constraints I design inside before there is a product to describe.

  1. No account unless the thing genuinely cannot work without one.
  2. No advertising, and nothing sold on about you. Not later either.
  3. No analytics or third-party tracking in anything I ship.
  4. If it holds your data, it holds it encrypted with a key I do not have.

When a product needs terms of its own, they get a section on this page rather than a page of their own. Scattering them is how they rot.

Something here look wrong?