Documentation menu

Clients & Libraries

Everything in the secretserver-clients repository: four language libraries, an Ansible lookup, a desktop app, an MCP bridge, agent skills and the offline cache design.

Choose a client

Getting the source

All clients live in one public, MIT-licensed repository. The libraries are not published to PyPI, npm or Packagist, so the guides install them from the repository. The secretserver name on PyPI belongs to an unrelated package; do not pip install secretserver.

git clone https://github.com/afterdarksys/secretserver-clients.git
cd secretserver-clients
ClientDirectoryBuild or install from source
Pythonpython/pip install ./python
Python, without a clonepython/pip install "git+https://github.com/afterdarksys/secretserver-clients.git#subdirectory=python"
Node.js / TypeScriptnode/cd node && npm install && npm run build
PHPphp/Composer path repository (see the PHP guide)
Gogo/go get github.com/afterdarksys/secretserver-clients/go@latest
Ansibleansible/Copy secretserver.py into lookup_plugins/
Desktop appgo-gui/go build . (cgo and graphics libraries; see the guide)
MCP bridgemcp/go build -o secretserver-mcp .
Agent skillsskills/Copy the skill folder

The repository also has helper scripts: scripts/install-python.sh, scripts/install-node.sh, scripts/install-php.sh and scripts/install-go.sh. Each guide shows the exact commands those scripts run.

Authentication

Clients authenticate with an API key sent as Authorization: Bearer <key>. An account admin creates keys through POST /api/v1/api-keys (the admin:* scope). Each key carries permission scopes; grant only what the application needs. The key is shown once.

ClientAPI keyBase URLDefault URL
Pythonapi_key=api_url=https://api.secretserver.io
Node.jsapiKeyapiUrlhttps://api.secretserver.io
PHP$apiKey$apiUrlhttps://api.secretserver.io
Ansibleapi_keyapi_urlhttps://api.secretserver.io
GoConfig.APIKeyConfig.APIURLhttps://api.secretserver.io

Python, Node.js, PHP and Ansible fall back to SS_API_KEY and SS_API_URL when the argument is not passed. The Go library does not read the environment; pass the values in Config. Base URLs work with or without the /api/v1 suffix.

export SS_API_KEY=sk_...
export SS_API_URL=https://api.secretserver.io   # optional

Full option lists, including timeouts, private CA files and the partial update switch, are in the client configuration guide.

Shared behavior

BehaviorDetail
Transporthttps only. Plain http is accepted only for localhost, 127.0.0.1 or ::1. URLs with embedded credentials are rejected. TLS verification cannot be turned off.
RedirectsNever followed, so the bearer key cannot be replayed to another origin.
Response limitsJSON responses are capped at 4 MiB and raw downloads at 16 MiB.
ErrorsHTTP failures expose the status code but never echo the server response body. 401, 403, 404 and 409 map to typed errors.
RetriesMutations are not retried automatically. After a timeout, read the current state before trying again.
Escape hatchEvery library can call any REST route under /api/v1 before a typed helper exists.
Partial updatesSecret updates send only the fields you pass. They are refused unless you opt in or pass an ETag from a previous read, because servers older than build 3075630 treat PUT as a full replace.

Secret paths and versions

Library read helpers accept three shapes:

ShapeExampleREST route
Namedb-passwordGET /api/v1/secrets/db-password
Container and keyproduction/db-passwordGET /api/v1/s/production/db-password
Container, key and versionproduction/db-password/2GET /api/v1/s/production/db-password/2

Versions run from 1 (current) to 12; 2 is the previous value. A read by name returns the record with its values under data. A container path read returns {meta, data}.

Secret names are immutable, and request bodies carry the value under data, for example {"name":"db-password","data":{"value":"..."}}.

Permission scopes

These are the scopes the API checks. The admin:* scope grants everything.

ScopeGrants
secrets:read / write / deleteGeneric secrets
credentials:read / write / deleteExtended credential types
credentials:useUse provider credentials without exporting them
containers:read / writeContainer namespaces
certs:read / write / revokeTLS certificates
ssh:read / writeSSH keys
gpg:read / writeGPG keys
passwords:read / writePasswords
tokens:read / writeThird-party API tokens
variables:read / writeNamed %%NAME%% variable assignments
keys:sign / keys:decryptOperation-only use of non-exportable keys
history:readVersion history
sharing:manageShares
temp-access:createTime-limited access tokens
export:readExport key material and certificates
transform:useEncode, decode and detect formats
intelligence:readBreach detection
extract:runSecret discovery
ldap:useLDAP import and export
saml:read / writeSAML federation
oidc:read / writeOIDC clients
audit:readAudit logs
settings:writeAccount settings
webhooks:manageWebhooks
admin:*All permissions