Where does my bank statement actually go?

You're about to hand a piece of software your bank statements. The honest answer to "where does this go" isn't one sentence, because it depends on a choice you make in Settings. This page is that answer, in full, including the one part of it we're not happy with yet.

Short version, if you read nothing else: the model that sees your finances is the one you picked, and it's either running on this computer or an address you supplied yourself. There's a second, optional, more capable model that's kept away from your data by design, and one specific job it can do today — building support for a bank we don't recognise — where that design isn't holding yet.

A real answer with the Fully local indicator visible in the sidebar.
Not a promise. A label the app shows you, on this specific answer.

Three lists, not a toggle

Open Settings and you'll find separate lists of models, not one list with a privacy switch on it.

Trusted Models is where your everyday model lives, the one you actually talk to. It sees your statements, your questions, everything in a project. You can only put two kinds of thing on this list: a model Orby downloads and runs itself, on this machine, or a model you point at with your own web address, something on your home network or a provider you already have an account with. Orby will not let you add Anthropic's API, Google's API, OpenRouter, or an external agent like Claude or Codex directly to this list. Those can only go on the other one.

Untrusted Supporting Models is optional, and empty by default. It's for one specific job: when your trusted model hits something it can't do alone and needs help from something more capable. Nothing on this list is supposed to see your statements, your account numbers, or your documents. It exists to answer questions your trusted model composes in general terms, not to read your data directly.

Embedding Models is a third, separate list, easy to miss because it isn't framed as a privacy setting, but it is one. This is the model that turns your messages into something Orby can search back through later, for memory. It runs on every message you type, including questions about your finances, whether or not the question itself names a number. If you set a remote embedding model, every question you type goes to it. This is also why the app's own privacy indicator won't call a session "fully local" just because your chat model is local — it checks the embedding model too.

The three model lists in Settings, support model defaulting to None.
What's actually in Settings. Not a diagram of it, the screen itself.

This is a setting, not a claim

We're not asking you to believe that Orby "keeps your data private." That's not checkable. What is checkable: everything that could see any part of your data is one of a small, fixed number of things, and every one of them is listed in Settings, not hidden in code you'd have to read to find. If Trusted Models and Embedding Models are both set to something local, and Untrusted Supporting Models is empty, nothing about your money has anywhere else to go.

That's not the same as a guarantee that nothing ever leaves. It depends on what you've actually set, and there's one real exception below that holds regardless of what you've configured. Read that before you decide this page has answered everything.

The sidebar tells you, every time

Every conversation carries a live indicator showing what actually happened: whether the answer came entirely from a model running on this machine, or whether something crossed to a model you configured elsewhere. It updates per answer, not once at the start of the conversation.

You shouldn't have to remember what you set up three weeks ago. The indicator is there so you don't have to.

Per-project and per-session privacy state, 100% local, with cache and token-rate detail.
Per-project, per-session. Not a one-time setting you forget about.
Measured, today

Where this doesn't hold yet

Most banks Orby recognises out of the box are American. If yours isn't one of them, and you use the built-in tool to teach Orby your bank's format automatically, here is exactly what happens: your entire statement, unredacted, is sent to whichever model you've set as your Untrusted Supporting Model. Not a summary. Not the redacted version. The whole document, as it reads, including the account holder's name, account number, and every transaction.

This isn't what we designed the untrusted list to do, and it isn't what turning on redaction in Settings fixes. We checked: with redaction switched on, this specific path doesn't call it at all. Not misconfigured, not bypassed, just never invoked. We're recording that here rather than waiting for you to find out.

The automatic builder uses whichever model is set as your Untrusted Supporting Model. What we have not confirmed is what happens if none is set at all. Until we've verified that ourselves, don't treat leaving it unset as protection. If your statement's privacy matters to you, use Option 1 or Option 3 on Adding your bank instead of relying on that.

What we'd suggest right now: if adding your bank matters to you and you'd rather not risk this, read Adding your bank before you try the automatic route. There's a slower way that doesn't have this problem, and for the alpha, you can also just tell us your bank's format and we'll add it the way we already add them.

The short version, as a table

SituationWhat sees your dataLeaves this machine?Status
Ordinary question, local model set as trustedThe local model onlyNoMeasured
Ordinary question, your own network or provider set as trustedThe endpoint you configuredYes, to where you chose, because you chose itMeasured
Trusted model escalates a stuck task to your support modelYour support model, on a question meant to be composed to avoid your dataYes, by design, not with your raw statementIntended, not yet verified — this is what the design is supposed to do, not something we've measured happening
Adding a bank automatically, support model configuredYour support model, with the entire unredacted statementYes, today, in full — see the exception aboveMeasured
Adding a bank automatically, no support model configuredNot confirmedNot confirmedUntested — don't rely on this as protection.

Two rows above are marked unverified on purpose, not as a formality. The escalation row sits directly above the one path we did measure failing at exactly the same promise, "composed to avoid your data." That's the reason to treat its own unverified row with real skepticism rather than assuming it behaves better.

Where to go next