End-to-end encrypted secrets management for applications
The TinyCloud Secret Vault is a dedicated encrypted secrets management system for your applications. Store API keys, database credentials, tokens, and other sensitive values with end-to-end encryption — then access them from the CLI, CI/CD pipelines, or the web-based Secrets Manager.
TinyCloud provides three layers for managing configuration and secrets, each designed for a different use case:
Secret Vault
tc secrets — End-to-end encrypted storage purpose-built for application secrets. API keys, tokens, passwords, database credentials.
Data Vault
tc vault — Lower-level encrypted KV storage. Use when you need encrypted values with full control over key paths.
Variables
tc vars — Plaintext configuration values. Not encrypted. Feature flags, endpoint URLs, log levels, and other non-sensitive config.
Layer
Encrypted
Use Case
Example
tc secrets
Yes
Sensitive credentials
STRIPE_KEY, DATABASE_URL
tc vault
Yes
Lower-level encrypted KV
Custom key paths, binary data
tc vars
No
Non-sensitive config
API_BASE_URL, LOG_LEVEL
The tc vault and tc vars commands require a private key. Set TC_PRIVATE_KEY as an environment variable or pass --private-key on each command. tc secrets uses the active authenticated profile and also accepts --private-key as an override.
The Secret Vault (tc secrets) is the primary way to manage application secrets. Values are end-to-end encrypted and organized under a dedicated secrets namespace in your space.
Secrets support logical scopes. By default, tc secrets commands operate in the default scope. Use --scope to organize secrets for environments, teams, or services.
# List secrets in the default scopetc secrets list# List secrets in a logical scopetc secrets list --scope team-prod# Get a scoped secrettc secrets get DATABASE_URL --scope team-prod
Do not pass full TinyCloud space URIs to tc secrets --space; that flag is a deprecated alias for logical --scope.
The TinyCloud Secrets Manager at secrets.tinycloud.xyz is a browser-based interface for viewing and managing your secrets. It authenticates through OpenKey and provides a visual alternative to the CLI.
The Data Vault (tc vault) provides lower-level encrypted key-value storage. Unlike the Secret Vault, you manage the full key path yourself, giving you complete flexibility over how data is organized.
Variables (tc vars) store plaintext key-value pairs for non-sensitive configuration. They are not encrypted. The current CLI requires a private key via TC_PRIVATE_KEY or --private-key.
# Vault and vars require a private key.export TC_PRIVATE_KEY=$TINYCLOUD_PRIVATE_KEY# Store secrets (encrypted via Secret Vault)tc secrets put DATABASE_URL "postgres://user:pass@host:5432/db"tc secrets put STRIPE_KEY "sk_live_abc123"tc secrets put JWT_SECRET "super-secret-jwt-key"# Store config (plaintext variables)tc vars put API_BASE_URL "https://api.example.com"tc vars put LOG_LEVEL "info"tc vars put FEATURE_NEW_DASHBOARD "true"# Read in a scriptDB_URL=$(tc secrets get DATABASE_URL | jq -r '.value')API_URL=$(tc vars get API_BASE_URL | jq -r '.value')
# In CI, set the private key from your CI secretsexport TC_PRIVATE_KEY=$CI_TINYCLOUD_KEY# Pull secrets for deploymenttc secrets get DATABASE_URL | jq -r '.value' > .env.databasetc secrets get STRIPE_KEY | jq -r '.value' > .env.stripe# Pull config variablestc vars get API_BASE_URL | jq -r '.value' >> .env
# Store production secrets in a logical scopetc secrets put DATABASE_URL "postgres://prod:secret@db.internal:5432/app" --scope prodtc secrets put REDIS_URL "redis://:authpass@cache.internal:6379" --scope prod# List scoped secret namestc secrets list --scope prod# Read a scoped secrettc secrets get DATABASE_URL --scope prod
Use tc secrets for anything sensitive — API keys, passwords, tokens, connection strings. Use tc vars for non-sensitive configuration like URLs, feature flags, and log levels that do not need encryption.