Stored locally
06 Security
Local-first is a boundary—not a magic word.
Palshell separates stored records, operating-system credentials, browser state, network destinations, and execution targets so the trust model can be explained plainly.
01 Trust model
Four places your data can be. No vague cloud diagram.
Stored by the OS
Passwords, passphrases, provider keys, secrets, and OAuth material
Stored secrets use macOS Keychain or Windows Credential Manager. SSH private-key contents are not stored; app records retain the selected key path and opaque secret references.Contacts the network when asked
SSH, APIs, portals, RDP, sign-in, and configured AI providers
Local-first does not mean offline. Explicit user work reaches the endpoint chosen for that task.Kept in separate lanes
Terminal identity, portal state, API authentication, and AI context
Sharing one window does not make these contexts interchangeable.02 SSH identity
Trust the host before Palshell reads its credential.
Read the presented server key.
The embedded SSH transport reaches the destination without asking the host ssh executable or known_hosts.
Compare or ask for a trust decision.
First use stops for review. A changed key stops again for independent verification.
Only then read the stored secret.
The operating-system credential store is consulted after host identity has been authorized.
Remote pages do not inherit Palshell’s trusted IPC.
Portal pages run in native child webviews. Cookies and browser storage are not copied into React, API authentication, or terminal context. Portal chat can include bounded visible page context when the user sends it.
Local-first is not a promise that nothing leaves your machine.
Network tools contact destinations you choose. AI chat sends bounded context to the provider you configured. Filtering reduces risk, but operational text can still be sensitive. The local operating system and user account remain part of the trust base.