Self-hosting and managed services
Everything local is open source. The hosted service sells resources and their operation; it does not sell access to your own machine.
What is open source
The desktop and mobile clients, the command-line client, the local host and the plugin and skill machinery are all the same open-source builds under the BSD 3-Clause Licence. So is the website service behind this page: an operator can run it under their own Cloudflare account with their own credentials.
Direct connections between your own devices and local pairing need no KalaReach account at all.
What the managed service sells
The hosted service sells provider usage and the operation of the services around it. Its endpoints authenticate the requester and enforce payment, reservations and limits before handing over a resource.
| Paid offering | Free without payment |
|---|---|
| Managed relay capacity beyond the free allowance | Direct connections between your own devices |
| Encrypted storage and history backups | Local sessions, local history and local descriptions |
| Metered voice and managed reasoning | Bring your own provider key |
| Operation of team identity services | User-operated team policy |
| None | Plugins, skills, question forms and basic managed push within its abuse limits |
Allowances and what exhaustion means
Managed relay traffic has a monthly allowance per account, larger on a subscription. The defaults are 10 GiB free and 100 GiB on a standard subscription; they are operator configuration, not fixed constants. Anonymous installations receive the free allowance through a device credential, with per-network abuse controls and a global daily budget. Self-hosted services and direct connections do not draw on any of it.
You are warned at 80% and at 95%. At exhaustion the service stops admitting new relayed sessions and gives the connections you already have up to 15 minutes or 100 MiB, whichever ends first, with the remaining interval on screen. That allowance is shared across every connection of that account: it starts at the first exhaustion, and reconnecting, moving to another endpoint or another region cannot reset it. Self-hosted paths are unaffected, and a direct connection you already hold keeps working. Opening a new one can still need a relay to introduce the two devices, so exhaustion blocks that until you supply a current address hint, choose local network discovery, configure another relay or restore the allowance.
The terminal worker on your host stays alive throughout. This is a visible loss of remote connectivity, not the end of your session.
Cancelling a subscription removes future paid capacity at the effective time. It never terminates a local session, and a failed payment does not erase encrypted data without the stated retention period and notices.
Running the services yourself
Discovery, relays, push, sync, storage and model providers are selected independently, so a self-hosted configuration can replace one of them without replacing the rest. A pairing invitation carries the network configuration it expects, and self-hosted configuration names the publisher URL, resolver URL, DNS origin and relay map separately.
The documented HTTP and protocol boundary is kept so an alternative service implementation stays possible. An operator who omits an integration gets a precise diagnostic naming the capability that is disabled, not a silent failure.