Skip to main content

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, and gv 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);
  • GalataVaultError itself for everything refused before a request, among them invalid_config, credential_literal, unsupported_format, invalid_token_file and invalid_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 gv command does.
  • Supported: CPython 3.11 and later, on Linux and macOS.

Metadata

Release files for galata-vault 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for galata-vault 0.2.0
File Size Uploaded
galata_vault-0.2.0.tar.gz 508.2 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for galata-vault 0.2.0
File
galata_vault-0.2.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.2.0-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.11 abi3 Linux glibc 2.17+ ARM64 Details
galata_vault-0.2.0-cp311-abi3-macosx_11_0_arm64.whl CPython 3.11 abi3 macOS 11.0+ ARM64 Details
galata_vault-0.2.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.2.0.tar.gz

Download URL galata_vault-0.2.0.tar.gz
Size 508.2 kB
Tags Source
SHA-256 checksum
How to use checksums
21ad46231c5e4fa803d0b53b1f9ddf94469bbd3a5d0f23f0090ec9616e890500
BLAKE2b-256 checksum
How to use checksums
49733ab4003021771aeaae0990f571ad29c6dda189bfcf862fef99dc2245f193
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

Release files / galata_vault-0.2.0-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL galata_vault-0.2.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
2e9fd64d19c28302b4277d303a69e7fe801b9d719bfeda358636fa0e74dc9432
BLAKE2b-256 checksum
How to use checksums
afa41b1730069accc534793fbc378644957645de8776fea9bf89c0c965829331
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

Release files / galata_vault-0.2.0-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL galata_vault-0.2.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
c88c781e97b431bacd2ae116a56f7528bbf3982f46be57b2faaad9e94602b585
BLAKE2b-256 checksum
How to use checksums
5a80f2bdb632b39a68640f80db24745b3520dc24273ef838ce8cac28be406234
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

Release files / galata_vault-0.2.0-cp311-abi3-macosx_11_0_arm64.whl

Download URL galata_vault-0.2.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
dbcc408f2d2ef3c131c4578df03c91ffb9378fc5fd35268418db54ad1334e83a
BLAKE2b-256 checksum
How to use checksums
74669f58aa4533b56be1a3b8e0790a75350299bee2085e2238cc96dd586e3877
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

Release files / galata_vault-0.2.0-cp311-abi3-macosx_10_12_x86_64.whl

Download URL galata_vault-0.2.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
7ab386f71a6bd7a3bf7967e61582aa11d2d73690348310cf5028c6e0e36044d9
BLAKE2b-256 checksum
How to use checksums
7366ce12792912480e0722c17ed6defc85d0efbacac951c9f9c90625069960fe
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

Release history Release notifications | RSS feed

0.4.0

5 release files

0.3.0

5 release files

This release

0.2.0 This release

5 release files

0.1.0

5 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page