The short version: LaraBench never stores an SSH password or a private key. It shells out to the tools you already trust and lets them handle authentication.
SSH connections
An SSH connection stores a host, a user, a port, an app path, and optionally the path to a private key you already have. The key itself is never read into the app, never copied, and never synced. Runs are executed by spawning your system ssh binary, so authentication is handled by OpenSSH and your agent exactly as it is on your own command line. There is no password field, because there is nowhere for a password to go.
Local and Docker connections
A local connection stores an app path and optionally the path to a PHP binary. A Docker connection stores a container name and an optional container user, and runs through your system docker binary. Neither stores database credentials — your app's own .env stays where it is, and LaraBench reads nothing out of it to keep.
Where this lives
Connections, saved snippets, run history, and preferences are written to the app's own directory: ~/.config/LaraBench on macOS and Linux, or %APPDATA%\LaraBench on Windows. They are plain files under your user account, protected by your operating system's file permissions, and they stay on your machine unless you sign in and turn on Premium cloud sync. Connection profiles are never synced, shared, or uploaded — they are deliberately local-only, even for Premium accounts.
Sharing a connection
Connections can be exported and imported as JSON. The AI access level is deliberately stripped on import, so a connection file someone sends you cannot silently grant an AI client access to a production host. You set that level yourself, on your own machine, every time.