ophix-creds
One place to store fleet secrets, instead of one more copy in every server's .env file.
If your deploy scripts and server configs have ended up with database passwords, API keys, and other secrets copied onto every host that happens to need them, ophix-creds gives your fleet one central place to store them instead. Clients fetch a named secret on demand over HTTPS — authenticated with a per-client token and IP check — and hold it in memory only; nothing is written to disk or cached locally on the client side.
Access is granted per client, per credential: a client can be given read, update, delete, or no access at all to any given secret, and any grant can be revoked instantly without touching the credential itself. Secrets are encrypted at rest on the server.
Installation
See installation.md for the full step-by-step guide — service user, TLS setup, the guided installer, and getting the service running under nginx and systemd.
Routine upgrades
The guided installer generates ophixcredserver-update.sh (Step 4 in
installation.md) — a single script that checks for and installs package
updates, then runs migrate, collectstatic, generate_config --append (picks up any new
.env settings automatically), refreshes documentation, and refreshes the Plugin Versions
table. Run it as the service user, not root:
./ophixcredserver-update.sh
It finishes by printing a reminder to restart the service — it doesn't restart it for you.
If you ever move the venv or change INSTALL_DIR, re-run ophix-manage create_update_script
first to regenerate the script with the new paths.
What this plugin provides
Credentialmodel — named JSON secret withenabledflagClientCredentialjoin model — per-client permissions (enabled,can_update,can_delete,can_share)GET/POST/PUT/DELETE /api/credentials/<name>/API endpoints- Django admin with inline
ClientCredentialmanagement and linked-artifact columns - Access audit logging via
ophix.core.audit - Built-in documentation (loaded by
update_docsifophix-docsis installed)
Configuration (.env)
| Variable | Default | Purpose |
|---|---|---|
CRED_ENCRYPTION_KEY |
(generated) | Fernet key used to encrypt secrets at rest — generated by configure_install |
ENABLE_ARTIFACT_DELETE |
False |
Allow clients to delete credentials they own |
Client
Fleet clients use ophix-cred-client to authenticate and fetch credentials.
Documentation
If ophix-docs is installed, documentation is loaded automatically during run_install.
To load or refresh docs manually after an upgrade:
ophix-manage update_docs --include-app-docs ophix.core,ophix_creds,ophix_docs
See ophix-docs for the full list of documentation management commands.
Metadata
Release files for ophix-creds 2026.10.8.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ophix_creds-2026.10.8.1.tar.gz | 31.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ophix_creds-2026.10.8.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 69.1 kB
Release files / ophix_creds-2026.10.8.1.tar.gz
| Download URL | ophix_creds-2026.10.8.1.tar.gz |
|---|---|
| Size | 31.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c2bae364f6030c0066c0d5c19a3f36242ac46c623c3493bc10231bbe1870c5d9
|
|
BLAKE2b-256 checksum How to use checksums |
e073540005bc7f0782e7f752bd40f92382923d637a7b583c3b8f73d88b4611bf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|
Release files / ophix_creds-2026.10.8.1-py3-none-any.whl
| Download URL | ophix_creds-2026.10.8.1-py3-none-any.whl |
|---|---|
| Size | 37.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a73b9f6f88055e75c91f15d75d2f22ac47e6a715a744170f805d369a55d38f42
|
|
BLAKE2b-256 checksum How to use checksums |
9393a169edfd04a7edae4f5ba71fcbd7b4618d076a967b919bb27692eccd8fda
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|