TUI for managing Posit Connect environment variable secrets
Project description
posit-connect-secrets-manager
A terminal UI for bulk-managing environment variables across Posit Connect content items.
What it does
Posit Connect stores environment variables per content item. Managing them one at a time through the web UI is tedious at scale. This tool lets you:
- Browse all your content items and their environment variables
- Maintain a local vault of key/value pairs (stored as JSON)
- Safe-merge sync (
Ctrl+U) — pushes vault values into each project's env vars without touching keys the vault doesn't know about and without adding new keys to projects that don't already define them - Filter any list with fuzzy search
- Blacklist projects or individual variables from sync
- Edit values in
$EDITORfor multi-line or sensitive content
Install
uv tool install posit-connect-secrets-manager
Or from source (requires Rust toolchain):
uv tool install git+https://github.com/KalebJS/posit-connect-secrets-manager
# or
cargo install --git https://github.com/KalebJS/posit-connect-secrets-manager
Getting started
Launch the TUI:
posit-secrets
On first launch you'll land on the Projects page. Use j/k in the sidebar to navigate to Settings, then press l or Enter to enter the settings pane and fill in your server URL and API key. Press h or Esc to return to the sidebar, then Ctrl+P to fetch your content items — they'll populate the project list within a few seconds.
Once projects are loaded, navigate to Env Vars in the sidebar to see an aggregated list of every environment variable key across all your projects, alongside the matching value from your vault. Use Vault to manage those vault entries. When your vault is ready, press Ctrl+U from anywhere to sync vault values into every project that already has a matching key.
Pages
| Page | Description |
|---|---|
| Projects | Browse content items and their env vars; expand to inspect, add, delete, or blacklist individual vars |
| Env Vars | Aggregated view of all env var keys across projects, showing which have vault values |
| Vault | Manage the local key/value store that gets synced to projects |
| Settings | Server URL, API key, vault path, and theme |
Configuration
Config is saved to ~/.config/posit-secrets/config.toml.
| Field | Description |
|---|---|
| Server URL | Your Posit Connect base URL (e.g. https://connect.example.com) |
| API Key | A Posit Connect API key with write access to your content |
| Vault Path | Path to the local JSON vault file (default: ~/.config/posit-secrets/vault.json) |
| Theme | Color theme — cycle with Enter on the theme row |
Corporate TLS: set SSL_CERT_FILE (path to a PEM file) or SSL_CERT_DIR (directory of *.pem files) to inject custom CA certificates.
Keybindings
Global
| Key | Action |
|---|---|
Tab |
Toggle sidebar / content focus |
q / Ctrl+C |
Quit |
Ctrl+P |
Refresh project list from Posit Connect |
Ctrl+U |
Safe-merge sync vault → all projects (shows confirmation) |
Navigation
| Key | Action |
|---|---|
j / ↓ |
Move down |
k / ↑ |
Move up |
h / ← / Esc |
Return to sidebar |
l / → / Enter |
Enter content pane (from sidebar) |
g |
Jump to top |
G |
Jump to bottom |
f / / |
Open fuzzy filter |
F |
Clear filter |
Projects page
| Key | Action |
|---|---|
Enter / Space |
Expand / collapse project to show its env vars |
x |
On a project row: toggle project in/out of sync whitelist. On a var row: toggle var exclusion for that project |
a |
Add an env var to the selected project (fuzzy-picks from vault keys) |
d |
Delete the selected env var from the project |
Env Vars page
| Key | Action |
|---|---|
Enter / Space |
Open popup showing which projects use the selected var |
e / E |
Open the selected var's vault value in $EDITOR |
Vault page
| Key | Action |
|---|---|
n |
New entry (opens key field for editing) |
e / Enter |
Edit value of selected entry |
E |
Open value in $EDITOR |
d / Delete |
Delete selected entry |
Settings page
| Key | Action |
|---|---|
e / Enter |
Edit selected field (theme field cycles values instead) |
Esc |
Cancel edit |
Safe-merge sync
Ctrl+U iterates every non-blacklisted content item and, for each one:
- Fetches current env vars from the Connect API
- Overlays vault values only for keys that already exist in the project
- PATCHes the merged set back
It never adds new environment variables to a project that doesn't already define them, and never deletes existing ones. Safe to run repeatedly.
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file posit_connect_secrets_manager-0.5.0.tar.gz.
File metadata
- Download URL: posit_connect_secrets_manager-0.5.0.tar.gz
- Upload date:
- Size: 55.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4095e4473cccc4d4df8d7992db3de04f028f27b22edfd429f3c8595db9082396
|
|
| MD5 |
569c5dd89469ece9ce80cc6191fc9169
|
|
| BLAKE2b-256 |
0018d3db34e57a664d53efbd4a7bb4d957419967793ca8e5fa18e7392a2b0c59
|
Provenance
The following attestation bundles were made for posit_connect_secrets_manager-0.5.0.tar.gz:
Publisher:
release.yaml on KalebJS/posit-connect-secrets-manager
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
posit_connect_secrets_manager-0.5.0.tar.gz -
Subject digest:
4095e4473cccc4d4df8d7992db3de04f028f27b22edfd429f3c8595db9082396 - Sigstore transparency entry: 1342568700
- Sigstore integration time:
-
Permalink:
KalebJS/posit-connect-secrets-manager@9c5354b2ebd890c8370321796116ac776ce85107 -
Branch / Tag:
refs/tags/0.5.0 - Owner: https://github.com/KalebJS
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@9c5354b2ebd890c8370321796116ac776ce85107 -
Trigger Event:
push
-
Statement type:
File details
Details for the file posit_connect_secrets_manager-0.5.0-py3-none-win_amd64.whl.
File metadata
- Download URL: posit_connect_secrets_manager-0.5.0-py3-none-win_amd64.whl
- Upload date:
- Size: 2.2 MB
- Tags: Python 3, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f2b218361228ba2ec9cd173195750f2453f621ae4294fbbb50c300ac09beb93a
|
|
| MD5 |
3a0d9faacf686311cb8904f0d391773e
|
|
| BLAKE2b-256 |
d5a6fc5f45099862b7ded2980b7ac8a27166ef25571c454a050e56a64485f72a
|
Provenance
The following attestation bundles were made for posit_connect_secrets_manager-0.5.0-py3-none-win_amd64.whl:
Publisher:
release.yaml on KalebJS/posit-connect-secrets-manager
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
posit_connect_secrets_manager-0.5.0-py3-none-win_amd64.whl -
Subject digest:
f2b218361228ba2ec9cd173195750f2453f621ae4294fbbb50c300ac09beb93a - Sigstore transparency entry: 1342568730
- Sigstore integration time:
-
Permalink:
KalebJS/posit-connect-secrets-manager@9c5354b2ebd890c8370321796116ac776ce85107 -
Branch / Tag:
refs/tags/0.5.0 - Owner: https://github.com/KalebJS
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@9c5354b2ebd890c8370321796116ac776ce85107 -
Trigger Event:
push
-
Statement type:
File details
Details for the file posit_connect_secrets_manager-0.5.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: posit_connect_secrets_manager-0.5.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 2.4 MB
- Tags: Python 3, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
603735b29c0dc95bbc600b6aedfb8804289b6f882ac8d8c5c2a3baec8c944196
|
|
| MD5 |
d20e9452a56942638841587d89260d4d
|
|
| BLAKE2b-256 |
0897b7c2c82ba69036ac6189be385f877f1d4e09ee8b3d211c8774b1d88f51ed
|
Provenance
The following attestation bundles were made for posit_connect_secrets_manager-0.5.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
release.yaml on KalebJS/posit-connect-secrets-manager
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
posit_connect_secrets_manager-0.5.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
603735b29c0dc95bbc600b6aedfb8804289b6f882ac8d8c5c2a3baec8c944196 - Sigstore transparency entry: 1342568743
- Sigstore integration time:
-
Permalink:
KalebJS/posit-connect-secrets-manager@9c5354b2ebd890c8370321796116ac776ce85107 -
Branch / Tag:
refs/tags/0.5.0 - Owner: https://github.com/KalebJS
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@9c5354b2ebd890c8370321796116ac776ce85107 -
Trigger Event:
push
-
Statement type:
File details
Details for the file posit_connect_secrets_manager-0.5.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: posit_connect_secrets_manager-0.5.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 2.2 MB
- Tags: Python 3, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dec2555db8003ac49c50c9e6b03303e9ce05fb9fac3ff8f2729fbee05d53afa2
|
|
| MD5 |
67307e764a21c56f4b67d48c0ee640a8
|
|
| BLAKE2b-256 |
778c4fb5ef92620e738d22d8559e2ee3c117ce65dfc20343a19017a1249cb78e
|
Provenance
The following attestation bundles were made for posit_connect_secrets_manager-0.5.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:
Publisher:
release.yaml on KalebJS/posit-connect-secrets-manager
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
posit_connect_secrets_manager-0.5.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -
Subject digest:
dec2555db8003ac49c50c9e6b03303e9ce05fb9fac3ff8f2729fbee05d53afa2 - Sigstore transparency entry: 1342568719
- Sigstore integration time:
-
Permalink:
KalebJS/posit-connect-secrets-manager@9c5354b2ebd890c8370321796116ac776ce85107 -
Branch / Tag:
refs/tags/0.5.0 - Owner: https://github.com/KalebJS
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@9c5354b2ebd890c8370321796116ac776ce85107 -
Trigger Event:
push
-
Statement type:
File details
Details for the file posit_connect_secrets_manager-0.5.0-py3-none-macosx_11_0_arm64.whl.
File metadata
- Download URL: posit_connect_secrets_manager-0.5.0-py3-none-macosx_11_0_arm64.whl
- Upload date:
- Size: 2.2 MB
- Tags: Python 3, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
787331c4777d8253e574ca616a9c1a70c052af6a2089aaf2e47055f3f74c18b5
|
|
| MD5 |
d15cea1449f6ff3d3259b1a5be795863
|
|
| BLAKE2b-256 |
bbe0720fdee925f5835f365e3a5ffb21268c6a6eecbd4cbfa6ee6ed8c980ec99
|
Provenance
The following attestation bundles were made for posit_connect_secrets_manager-0.5.0-py3-none-macosx_11_0_arm64.whl:
Publisher:
release.yaml on KalebJS/posit-connect-secrets-manager
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
posit_connect_secrets_manager-0.5.0-py3-none-macosx_11_0_arm64.whl -
Subject digest:
787331c4777d8253e574ca616a9c1a70c052af6a2089aaf2e47055f3f74c18b5 - Sigstore transparency entry: 1342568752
- Sigstore integration time:
-
Permalink:
KalebJS/posit-connect-secrets-manager@9c5354b2ebd890c8370321796116ac776ce85107 -
Branch / Tag:
refs/tags/0.5.0 - Owner: https://github.com/KalebJS
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@9c5354b2ebd890c8370321796116ac776ce85107 -
Trigger Event:
push
-
Statement type:
File details
Details for the file posit_connect_secrets_manager-0.5.0-py3-none-macosx_10_12_x86_64.whl.
File metadata
- Download URL: posit_connect_secrets_manager-0.5.0-py3-none-macosx_10_12_x86_64.whl
- Upload date:
- Size: 2.3 MB
- Tags: Python 3, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3cd1bd0796619c0b9df8e8ab902760e952f240539f8719eaadceb974ba6d0d6b
|
|
| MD5 |
15891f30246e5ee851c9a308a38e786b
|
|
| BLAKE2b-256 |
6d10e52590e400e0c965cbc8a49ff345c4258c76be58bf39d6a18ea260d10137
|
Provenance
The following attestation bundles were made for posit_connect_secrets_manager-0.5.0-py3-none-macosx_10_12_x86_64.whl:
Publisher:
release.yaml on KalebJS/posit-connect-secrets-manager
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
posit_connect_secrets_manager-0.5.0-py3-none-macosx_10_12_x86_64.whl -
Subject digest:
3cd1bd0796619c0b9df8e8ab902760e952f240539f8719eaadceb974ba6d0d6b - Sigstore transparency entry: 1342568711
- Sigstore integration time:
-
Permalink:
KalebJS/posit-connect-secrets-manager@9c5354b2ebd890c8370321796116ac776ce85107 -
Branch / Tag:
refs/tags/0.5.0 - Owner: https://github.com/KalebJS
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@9c5354b2ebd890c8370321796116ac776ce85107 -
Trigger Event:
push
-
Statement type: