01

Create a secret

Send a name, a value, and your access key. It's encrypted with Fernet before it ever touches disk.

$ curl -X POST .../api/create-secret/ \
    -H "access-key: $ACCESS_KEY" \
    -H "secret-name: DATABASE_PASSWORD" \
    -H "secret-value: ..."
02

Retrieve it, from anywhere

Any service, any language — it's just HTTP headers. No SDK lock-in required.

$ curl .../api/get-secret/ \
    -H "access-key: $ACCESS_KEY" \
    -H "secret-name: DATABASE_PASSWORD"
03

Update or delete it

Same shape, different verb — PUT to rotate a value, DELETE to remove it.

$ curl -X PUT .../api/update-secret/ \
    -H "access-key: $ACCESS_KEY" \
    -H "secret-name: DATABASE_PASSWORD" \
    -H "secret-value: ..."

UNDER THE HOOD

Every request is checked, scoped, and logged.

1. Rate limit

Per-IP limits reject abusive traffic before it reaches auth.

2. Authenticate

Access key validated via O(1) hash lookup, then checked against the IP allowlist.

3. Execute

Secret is encrypted or decrypted with Fernet, scoped to the key's owner.

4. Audit

The outcome — success or failure — is written to the audit log.

See the full feature set

Encryption, allowlisting, rate limits, and observability — all in the core service.