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.
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.
To list secrets from another space, you need delegation access to that space. Without a valid delegation, the command will return an authorization error.
Secrets are scoped to a space. By default, tc secrets commands operate on your current active space. Use the --space flag to work with secrets in a different space.
# List secrets in your current spacetc secrets list# List secrets in a specific spacetc secrets list --space tinycloud:pkh:eip155:1:0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045:team-prod# Get a secret from a delegated spacetc secrets get DATABASE_URL --space tinycloud:pkh:eip155:1:0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045:team-prod
Accessing secrets in another user’s space requires a delegation that grants the appropriate permissions. See Delegations & Sharing for how to create and receive delegations.
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 general-purpose encrypted key-value storage. Unlike the Secret Vault, you manage the full key path yourself, giving you complete flexibility over how data is organized.
# 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 --json | jq -r '.value')API_URL=$(tc vars get API_BASE_URL --json | 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 --json | jq -r '.value' > .env.databasetc secrets get STRIPE_KEY --json | jq -r '.value' > .env.stripe# Pull config variablestc vars get API_BASE_URL --json | jq -r '.value' >> .env
# Team lead: store production secrets in the team spacetc secrets put DATABASE_URL "postgres://prod:[email protected]:5432/app"tc secrets put REDIS_URL "redis://:[email protected]:6379"# Team lead: grant a team member read access to secretstc delegation create \ --to did:pkh:eip155:1:0x5678...efgh \ --actions kv/get,kv/list \ --paths "secrets/*" \ --duration 30d# Team member: read secrets from the team spacetc secrets get DATABASE_URL \ --space tinycloud:pkh:eip155:1:0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045:team-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.