Where DevOpsPad stores connections
Connection metadata (names, hosts, ports, usernames, environments, kubeconfig paths and SSH settings) is stored in a single file, workspace.json, in your user configuration folder. Every secret is stored separately in the operating system’s credential store under the service name devopspad. Nothing is sent to a server; DevOpsPad has no account or cloud sync.
On macOS the file is ~/Library/Application Support/DevOpsPad/workspace.json and the secrets live in the login keychain.
File locations
DevOpsPad uses Go’s os.UserConfigDir():
| Platform | Folder |
|---|---|
| macOS | ~/Library/Application Support/DevOpsPad/ |
| Linux (source builds) | $XDG_CONFIG_HOME/DevOpsPad/, usually ~/.config/DevOpsPad/ |
| Windows (source builds) | %AppData%\DevOpsPad\ |
The folder contains:
workspace.json: connection profiles and AI provider settings without the API key.workspace.json.backup: a copy written after each successful save.
What goes where
| Data | Location |
|---|---|
| Connection name, engine, host, port, username, database, environment, TLS flag | workspace.json |
| Kubeconfig path and context name | workspace.json (the kubeconfig itself stays where it is) |
| SSH host, user, method, private key path, known_hosts path, fingerprint | workspace.json |
| Database password, SSH password, SSH key passphrase | Keychain, service devopspad |
| AI API key | Keychain, service devopspad |
| Saved queries and optional query drafts | The app’s local webview storage, not encrypted. See restore query drafts |
| Query history | Memory only; cleared when the app closes |
How the file is written
- The folder is created with owner-only permissions (
0700), and the file is written through an owner-only temporary file. - Writes are atomic: DevOpsPad writes a temporary file, flushes it to disk and renames it over
workspace.json, so a crash never leaves a half-written file. - Keychain updates and file writes succeed or fail together; see keychain secrets.
- The file is limited to 4 MiB.
If the file is damaged
DevOpsPad never replaces an unreadable or invalid workspace with an empty one. If workspace.json cannot be parsed, contains unexpected fields or a password, or was saved by a newer version, the app reports the problem and leaves the file untouched.
To recover manually:
- Quit DevOpsPad.
- Copy
workspace.jsonsomewhere safe so you keep the damaged version. - Copy
workspace.json.backuptoworkspace.json. - Start DevOpsPad again.
The backup contains metadata only. Keychain entries are not part of it; if a secret is missing, enter it again with Edit connection.
If the file was written by a newer version, install that version instead of editing the file. See update DevOpsPad.
Frequently asked questions
Are passwords stored in workspace.json?
No. Passwords, SSH passwords, key passphrases and the AI API key are stored only in the OS keychain. DevOpsPad refuses to load a workspace file that contains a password.
Can I sync connections between computers?
Not in this version. Connections are local to one machine. Infra project mappings can be shared through Git, but connection profiles and secrets cannot.