Where your data lives, exactly.
KIAgent indexes your email, files, and messages on your own computer. This page is the complete, checkable account of what gets stored, where it sits, and every byte that ever leaves your machine. The source is public — you never have to take our word for any of it.
Optional, off by default: remote access adds a personal address (you.localkiagent.com) so Claude on the web or your phone can reach the same machine — details below.
One SQLite file, on your disk.
Everything the app gathers — messages, documents, extracted text, the search index — lives in a single database file:
~/Library/Application Support/KIAgent/data/kiagent.db
It’s a standard SQLite database — open it with any SQLite tool and look around. Scanned documents and images are read on-device by local vision models (built on llama.cpp); no page of your documents is ever sent to a cloud OCR service. Delete the app and that folder, and everything is gone — there is no copy anywhere else, because none was ever made.
Account credentials and the secure-tunnel key are stored encrypted with your OS keystore (Keychain on macOS, DPAPI on Windows). One honest edge case: if the keystore refuses access — a locked login keychain, a denied permission prompt — source credentials fall back to obfuscated (not encrypted) storage on disk so your sources keep working, and the app logs a warning saying so. The secure-tunnel key never takes that fallback: without the keystore, remote access stays off until you re-grant access.
This list is complete.
Connectors talk directly to each provider — Gmail, Slack, Notion — using credentials you granted, over their official APIs. Data flows down to your machine. Our servers are not in this path and never see it.
When your AI tool asks a question, only that query’s results go to that tool — nothing is pushed, synced, or uploaded in the background. Every access is recorded in the audit log inside the app. What the AI provider then does with an answer is governed by your agreement with them — you pick the client, including fully local ones like LM Studio, where nothing leaves at all.
The app asks our download server whether a newer release exists. No account, no identifier — it’s the same anonymous request your browser makes to load this page.
Off by default. If you enable it, your machine gets a personal address so your own AI clients can reach it from anywhere. The connection is encrypted end to end: TLS terminates inside the app on your machine, so the relay in between forwards bytes it cannot read. Details in the next section.
That’s all of it. The app has no telemetry and no analytics— it reports nothing about you, your files or your questions, ever. On our side we count one thing: how many connections each account’s remote access makes, and how many bytes they carry. That tells us whether the feature is being used and worth improving. It cannot tell us what you asked, what came back, or what is in any of it — the relay still can’t read a byte of it.
The relay forwards bytes it cannot read.
Turning on remote access registers an account (your email and a device name — that’s the whole record) and gives your machine a personal address like you.localkiagent.com. A TLS certificate for that address is issued to your machine, and the HTTPS server that uses it runs inside the app itself. Our relay only forwards encrypted traffic between your AI client and your machine — it holds no key, so it can’t decrypt what passes through. Requests are authenticated on your machine too, with a sign-in you approve per client.
Turn it off, and your machine is unreachable again. Your data never moved either way — remote access relays questions to your computer; it doesn’t copy anything out of it.
“What about the people who wrote to me?”
Your inbox and chats contain other people’s words. Those stay on your machine like everything else — KIAgent never ships them anywhere, builds no profiles, and trains nothing on them. They can only appear in an answer when you ask your own AI client a question that touches them — the same as if you’d opened the message and read it aloud. Whether that answer goes to a cloud AI or stays fully local is your choice of client.
Don’t take our word for it.
The code that does everything on this page is open source. The local MCP server binds to 127.0.0.1 in src/main/core/mcp/server.ts; the database path is set in src/main/core/boot.ts. Run the app under a network monitor like Little Snitch and watch it do exactly — and only — what this page says. Inside the app, the audit log shows every query any client has ever made. If you find a byte we didn’t account for, that’s a bug: tell us and we’ll fix it in the open.