Complete Integration Guide

How ZeonVault Works

Every cloud. Every platform. Every language.
Zero .env files. Zero API keys. Identity is automatic.

8 cloud platforms
20+ managed services
8 programming languages
5 CI/CD platforms

The Core Concept

Your application code never knows how it's authenticated. It just calls new ZeonVault() and gets secrets. Identity is detected automatically based on where your code is running.

Cloud (AWS/GCP/Azure)

IAM roles, service accounts, managed identities — the cloud verifies who you are

Docker

Container labels + ZeonVault agent — identity via Unix socket, no env vars

Kubernetes

Service account tokens — auto-mounted JWT, verified against cluster OIDC

Bare Metal / VM

Machine identity + mTLS certificate — provisioned once, auto-rotates

Universal Flow — Same in Every Environment

1

App starts

new ZeonVault()

2

SDK detects environment

AWS? Docker? K8s? Local?

3

Identity verified

IAM role / SA token / mTLS

4

Secrets returned

Encrypted, decrypted locally

5

App runs

Auto-refresh, zero restarts

Choose Your Platform

Click any platform to see detailed setup instructions, every managed service, and the security flow.

How Identity Works on AWS

ZeonVault uses AWS IAM roles to verify identity. Your application never needs credentials — AWS automatically provides identity through instance metadata, task roles, or execution roles.

IAM Role → Instance Metadata Service (IMDS) / Task Role / Execution Role

Setup Steps

1

1. Create IAM Role for ZeonVault

Create an IAM role that ZeonVault trusts. This role defines which secrets your service can access.

# Create the IAM trust policy
cat > trust-policy.json << 'EOF'
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "ecs-tasks.amazonaws.com",
          "ec2.amazonaws.com",
          "lambda.amazonaws.com"
        ]
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
EOF

# Create the role
aws iam create-role \
  --role-name my-app-zeonvault-role \
  --assume-role-policy-document file://trust-policy.json

# No AWS permissions needed — ZeonVault handles authorization
2

2. Register IAM Role in ZeonVault Dashboard

In ZeonVault dashboard, link this IAM role ARN to your project and specify which secrets it can access.

# Or use CLI
zeonvault identity register \
  --type aws-iam \
  --arn arn:aws:iam::123456789:role/my-app-zeonvault-role \
  --project my-app \
  --environment production \
  --permissions read
3

3. Attach Role to Your Service

Attach the IAM role to your ECS task, EC2 instance, Lambda function, or EKS pod.

# That's it! Your app code is just:
const vault = new ZeonVault();
const dbUrl = await vault.get('DATABASE_URL');

# ZeonVault SDK automatically:
# 1. Detects it's running on AWS (via IMDS)
# 2. Reads the IAM role from instance metadata
# 3. Sends the role identity to ZeonVault API
# 4. ZeonVault verifies with AWS STS
# 5. Returns the authorized secrets

AWS Services — Detailed Setup

Click any service to see the complete configuration.

Security Flow — AWS

1

App starts → SDK detects AWS environment (IMDS endpoint at 169.254.169.254)

2

SDK reads IAM role ARN from instance metadata / task metadata

3

SDK calls AWS STS GetCallerIdentity to get a signed identity token

4

SDK sends signed token to ZeonVault API over TLS 1.3

5

ZeonVault verifies the token with AWS STS (cross-account verification)

6

ZeonVault checks: Does this IAM role have access to this project's secrets?

7

If authorized → secrets returned encrypted, decrypted locally in SDK

8

Secrets cached in memory (never written to disk) with configurable TTL

Every Language, Same Pattern

Install the SDK. Call new ZeonVault(). Get secrets. Same pattern in every language — with framework-specific integrations for Django, Rails, Spring Boot, Laravel, ASP.NET, and more.

npm install @zeonvault/sdk
const { ZeonVault } = require('@zeonvault/sdk');

// Zero config — identity auto-detected
const vault = new ZeonVault();

// Get individual secrets
const dbUrl = await vault.get('DATABASE_URL');
const stripeKey = await vault.get('STRIPE_SECRET_KEY');
const redisUrl = await vault.get('REDIS_URL');

// Get all secrets at once
const config = await vault.getAll();

// Use in your Express/Fastify/NestJS app
const app = express();
app.listen(config.PORT, () => {
  console.log(`Server running on port ${config.PORT}`);
});

// Auto-refresh — secrets update without restart
vault.enableAutoRefresh(300); // every 5 minutes

// Subscribe to changes
vault.on('secret:changed', (key, newValue) => {
  console.log(`${key} was rotated`);
});

// Download certificate files
const cert = await vault.getFile('TLS_CERTIFICATE');
fs.writeFileSync('./cert.pem', cert);

Express.js

Middleware that injects secrets into req.config

NestJS

ConfigModule replacement — @InjectVault() decorator

Next.js

Server-side getServerSideProps with vault.getAll()

What ZeonVault Protects

Every type of secret, key, credential, and configuration your application needs.

Database Credentials

  • DATABASE_URL
  • DB_HOST / DB_PORT
  • DB_USER / DB_PASSWORD
  • DB_SSL_CERTIFICATE
  • REDIS_URL
  • MONGODB_URI
  • ELASTICSEARCH_URL

API Keys & Tokens

  • STRIPE_SECRET_KEY
  • OPENAI_API_KEY
  • TWILIO_AUTH_TOKEN
  • SENDGRID_API_KEY
  • AWS_ACCESS_KEY_ID
  • GOOGLE_MAPS_KEY
  • SLACK_BOT_TOKEN

Auth & Security

  • JWT_SECRET
  • SESSION_SECRET
  • OAUTH_CLIENT_SECRET
  • ENCRYPTION_KEY
  • HMAC_SECRET
  • SSO_CERTIFICATE
  • SAML_PRIVATE_KEY

Infrastructure

  • SMTP_PASSWORD
  • S3_BUCKET / S3_REGION
  • CDN_TOKEN
  • DOCKER_REGISTRY_PASS
  • KUBERNETES_TOKEN
  • TERRAFORM_TOKEN
  • DNS_API_KEY

Certificates & Files

  • TLS_CERTIFICATE
  • TLS_PRIVATE_KEY
  • CA_BUNDLE
  • SSH_PRIVATE_KEY
  • PGP_KEY
  • SIGNING_KEY
  • LICENSE_KEY

Feature Flags

  • FEATURE_NEW_UI
  • FEATURE_DARK_MODE
  • FEATURE_BETA_API
  • MAINTENANCE_MODE
  • DEBUG_LEVEL
  • LOG_LEVEL
  • RATE_LIMIT

Third-Party Services

  • SENTRY_DSN
  • DATADOG_API_KEY
  • NEW_RELIC_KEY
  • CLOUDFLARE_TOKEN
  • VERCEL_TOKEN
  • NETLIFY_TOKEN
  • HEROKU_API_KEY

Application Config

  • APP_SECRET
  • COOKIE_SECRET
  • CORS_ORIGINS
  • ALLOWED_HOSTS
  • WEBHOOK_SECRET
  • INTERNAL_API_URL
  • PAYMENT_WEBHOOK_KEY

Switching to ZeonVault

Already using another solution? Here's how to migrate in minutes.

From .env Files

  1. 1Import your .env file into ZeonVault (CLI or Dashboard)
  2. 2Install the ZeonVault SDK in your project
  3. 3Replace process.env.X with vault.get("X")
  4. 4Delete .env file — it's now in ZeonVault
  5. 5Add .env to .gitignore (if not already)
# Import existing .env file
$ zeonvault import --file .env --project my-app --env production
✓ Imported 23 variables into my-app/production

# Before (old way):
const dbUrl = process.env.DATABASE_URL;

# After (ZeonVault):
const vault = new ZeonVault();
const dbUrl = await vault.get('DATABASE_URL');

From AWS Secrets Manager

  1. 1Export secrets from AWS Secrets Manager
  2. 2Import into ZeonVault
  3. 3Update IAM role permissions
  4. 4Replace AWS SDK calls with ZeonVault SDK
  5. 5Remove aws-sdk dependency (if only used for secrets)
# Import from AWS Secrets Manager
$ zeonvault import --source aws-secrets-manager \
    --region us-east-1 \
    --project my-app \
    --env production
✓ Imported 15 secrets from AWS Secrets Manager

# Before (AWS):
const client = new SecretsManagerClient({});
const response = await client.send(
  new GetSecretValueCommand({ SecretId: 'my-app/db' })
);

# After (ZeonVault — way simpler):
const vault = new ZeonVault();
const dbUrl = await vault.get('DATABASE_URL');

From HashiCorp Vault

  1. 1Export secrets from HashiCorp Vault
  2. 2Import into ZeonVault
  3. 3Replace vault client with ZeonVault SDK
  4. 4Remove AppRole / Token auth complexity
  5. 5No more Vault server to maintain
# Import from HashiCorp Vault
$ zeonvault import --source hashicorp-vault \
    --addr https://vault.company.com \
    --path secret/data/my-app \
    --project my-app
✓ Imported 31 secrets from HashiCorp Vault

# Before (HashiCorp Vault):
const vault = require('node-vault')({
  apiVersion: 'v1',
  endpoint: process.env.VAULT_ADDR,
  token: process.env.VAULT_TOKEN
});
const { data } = await vault.read('secret/data/my-app');

# After (ZeonVault — no server to manage):
const vault = new ZeonVault();
const dbUrl = await vault.get('DATABASE_URL');

From Doppler / Infisical / 1Password

  1. 1Export secrets from current provider
  2. 2Import into ZeonVault via CLI or JSON
  3. 3Replace SDK with ZeonVault SDK
  4. 4Update CI/CD pipelines
  5. 5Cancel old subscription
# Import from any JSON/YAML export
$ zeonvault import --file secrets.json \
    --format json \
    --project my-app \
    --env production
✓ Imported 28 variables

# Or import from Doppler directly
$ zeonvault import --source doppler \
    --token dp.xxx \
    --project my-app
✓ Imported 42 secrets from Doppler project

Security Guarantees

Every secret is protected with enterprise-grade security at every layer.

AES-256-GCM Encryption

Every secret encrypted at rest with AES-256-GCM. Keys rotated automatically.

TLS 1.3 in Transit

All communication uses TLS 1.3. Certificate pinning available for high-security environments.

Zero-Knowledge Architecture

ZeonVault cannot read your secrets. Encryption keys derived from your identity.

Complete Audit Trail

Every secret access logged with timestamp, IP, identity, and result. Immutable audit log.

Network Isolation

Secrets never leave your VPC. Agent communicates via encrypted channel.

Breach Detection

Real-time alerts if a secret is accessed from an unusual identity or location.

Automatic Rotation

Configure secrets to auto-rotate on schedule. Apps auto-refresh — zero downtime.

Never Written to Disk

Secrets exist only in memory. Never logged, never cached to disk, never in container layers.

Least Privilege

Each service only accesses its own secrets. auth-service can't see payment-service secrets.

Why ZeonVault vs Alternatives

FeatureZeonVault.env FilesAWS Secrets ManagerHashiCorp Vault
Zero config (no API key)
Identity-based auth
Works across all clouds
No server to maintain
2-command developer setup
Per-service isolation
Auto-refresh (no restart)
Audit trail
Free tier
8 language SDKs
CI/CD OIDC integration
File/certificate storage

Ready to eliminate .env files forever?

Your app code stays the same everywhere — local, Docker, Kubernetes, AWS, GCP, Azure. Just new ZeonVault() and you're done.

# New developer onboarding
$ zeonvault login
✓ Logged in as dev@company.com

$ zeonvault link
✓ Linked to my-app/development

$ npm run dev
✓ App running with 23 secrets loaded
# Total time: 90 seconds