# car-secrets
Cross-platform secret store for [Common Agent Runtime](https://github.com/Parslee-ai/car).
## What it does
Unifies OS-native secure storage across the three platforms CAR targets:
| macOS | Security.framework / Keychain Services |
| Windows | Credential Manager (DPAPI) |
| Linux | Secret Service — GNOME Keyring / KWallet / KeePassXC / anything speaking `org.freedesktop.secrets` |
The API is intentionally small: `put`, `get`, `delete`, `status`, `list`. Callers choose a `service` (namespace) and `account` (key); values are UTF-8 strings. JSON helpers are provided for structured values.
## Availability
On headless Linux without a Secret Service daemon, `put` / `get` / `delete` return `SecretError::Unavailable`. **There is no silent plaintext fallback.** Callers should probe `is_available()` before relying on the store, or handle `Unavailable` with their own fallback.
## Security boundary
Secrets never enter CAR memory, state, or prompt context unless a caller **explicitly** reads them and passes them into one of those systems. The store treats a missing backend as a hard error so misconfigured environments are loud, not silently insecure.
## Where it fits
Surfaced via the WebSocket `secret.*` methods. Used by `car-integrations` for OAuth token storage and by any user app that needs to persist credentials gathered through its own auth flow.