galata-vault
End-to-end encrypted secrets with no account. Your machine encrypts every secret before it leaves; the server keeps ciphertext it cannot read, and every value you read carries a signature this package verifies.
galata-vault has not been independently audited. Its formats may change before 1.0. Use it at your own risk.
This package gives you:
galata_vault, a token client for applications, for secrets and config documents;gv, the full command line: create projects and environments, set secrets, mint tokens, andgv run -- <cmd>.
pip install galata-vault
Quick start
Start a server on your machine (it needs the gv-server binary; see the
project README), then
create a project and an environment:
gv-server local &
gv init acme --server http://127.0.0.1:8750 # writes acme-recovery.gvkit: keep it safe
gv env add acme/prod
printf %s "postgres://..." | gv set DATABASE_URL --env acme/prod
gv token mint --scope read --env acme/prod # prints a gvt1_ token once
In the application:
import galata_vault
vault = galata_vault.Vault.from_env() # GV_SERVER, and GV_TOKEN or GV_TOKEN_FILE
url = vault.get("DATABASE_URL")
for secret in vault.list():
print(secret.name, secret.version, secret.updated_at)
vault.load_env() # readable secrets into os.environ (existing ones kept)
app = vault.get_config("app") # name, format, version, text, data (exact bytes)
settings = app.parse() # a dict, for toml and json
vault.set_config("app", new_text, "toml", expect_version=app.version)
head = vault.verify_audit(kept_head) # keep it; a server that rewrote history is caught
set_config checks the body before any request. It must parse in its
format, and a credential literal (a key, a token, a PEM block) is refused
unless allow_literals=True. With expect_version, an edit made from a stale
read raises ConflictError and overwrites nothing.
A token can also come from a file: Vault.from_token_file(path, server), or
GV_TOKEN_FILE with from_env(). The file must have mode 0600 or 0400
(checked before it is read) and hold one token. Setting both GV_TOKEN and
GV_TOKEN_FILE is refused.
What a token can do
| Scope | list |
get |
set |
get_config |
set_config |
|---|---|---|---|---|---|
meta |
✓ | ||||
append |
✓ | ✓ | ✓ | ||
read |
✓ | ✓ (optionally only listed names) | ✓ | ||
admin |
✓ | ✓ | ✓ | ✓ | ✓ |
config |
✓ | ✓ | |||
config-write |
✓ | ✓ | ✓ |
A meta or append token cannot decrypt a value even in principle: it
never receives the vault key. A config or config-write token receives
the config key only, so it reads configs and never a secret; a
config-write token cannot write a secret either, because it never
receives the key that signs one.
Errors
Every error derives from galata_vault.GalataVaultError and has a stable
code, the same string the Rust SDK reports:
AuthenticationError:invalid_token,unauthorized,token_expired;NotFoundError;ForbiddenError;ConflictError: another writer changed the secret or config first;TransportError: the server is unreachable;IntegrityError: something the server served does not verify (bad_signature,key_mismatch,binding_mismatch,version_rollback,generation_rollback,audit_mismatch);GalataVaultErroritself for everything refused before a request, among theminvalid_config,credential_literal,unsupported_format,invalid_token_fileandinvalid_environment.
No error message or repr contains a token, a key, a secret value or a
config body.
A server may expire vaults after a period without use (local mode does
not). When it announces an expiry less than 14 days away,
galata_vault.ExpiryWarning is issued.
Notes
- Python strings cannot be wiped from memory, so values you read live as long as your references to them.
- The library never changes process limits or touches the OS keychain; the
gvcommand does. - Supported: CPython 3.11 and later, on Linux and macOS.
Metadata
Release files for galata-vault 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| galata_vault-0.1.0.tar.gz | 507.7 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| galata_vault-0.1.0-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.11 | abi3 | Linux glibc 2.17+ x86-64 | Details |
| galata_vault-0.1.0-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl | CPython 3.11 | abi3 | Linux glibc 2.17+ ARM64 | Details |
| galata_vault-0.1.0-cp311-abi3-macosx_11_0_arm64.whl | CPython 3.11 | abi3 | macOS 11.0+ ARM64 | Details |
| galata_vault-0.1.0-cp311-abi3-macosx_10_12_x86_64.whl | CPython 3.11 | abi3 | macOS 10.12+ x86-64 | Details |
Total release size: 18.1 MB
Release files / galata_vault-0.1.0.tar.gz
| Download URL | galata_vault-0.1.0.tar.gz |
|---|---|
| Size | 507.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1e300e79a0199758a70923f0ea1570d1c82879cafa662048894894e5747e5033
|
|
BLAKE2b-256 checksum How to use checksums |
19ada091be10123f62edc671060bb89a5c5ebd3f00c711036501eeeb5b4b8e16
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.
Transparency logRelease files / galata_vault-0.1.0-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | galata_vault-0.1.0-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 5.3 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
d6da587ee64143c8e78900cb16a987c3afa7558688eed7aa56998fe78cf54c06
|
|
BLAKE2b-256 checksum How to use checksums |
9907f044e6dad3432b5bcc6cb65595db02cbb064aba47eb0f959946ceaf5f947
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.
Transparency logRelease files / galata_vault-0.1.0-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | galata_vault-0.1.0-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 5.2 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
592acd79f36ee1f3c45b905f3af6eeed88f1bc0c92b867f10f1aa5a09b2eccee
|
|
BLAKE2b-256 checksum How to use checksums |
bcc23e9f2ef366c581c1d7090b82a87ad84a1f09177671be5917f645deb7152e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.
Transparency logRelease files / galata_vault-0.1.0-cp311-abi3-macosx_11_0_arm64.whl
| Download URL | galata_vault-0.1.0-cp311-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 3.5 MB |
| Tags | CPython 3.11 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
4dbc9e7fb014a2380dbd4323c2839ed8387edb4c2b336438c0867180809b5caf
|
|
BLAKE2b-256 checksum How to use checksums |
4bf29bc78add3b48d2ada703e1575351051d0975e91b10f83d7a5737c824219e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.
Transparency logRelease files / galata_vault-0.1.0-cp311-abi3-macosx_10_12_x86_64.whl
| Download URL | galata_vault-0.1.0-cp311-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 3.6 MB |
| Tags | CPython 3.11 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
baf830c997e5c07d20d93c18aab9dc9e4f016ced397c33d9f6808b704fac0b9a
|
|
BLAKE2b-256 checksum How to use checksums |
39bc52a62f8d6ad53a7805cedf61d433fb4417af0563e5068a71c593b047856c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.
Transparency log