v1.0 — now open source

Stop copy-pastingsecrets between dashboards

Sync env vars to Vercel, Netlify, Railway, Supabase, Fly.io, Render, and Convex from your terminal. No middleman. No servers. Your secrets never leave your machine.

Want the team dashboard? Drift alerts, audit log, sync status.

Workflow

Three commands. Every platform in sync.

Initialize
dotenvy init
? Select your platforms:
✔ Vercel ✔ Convex ○ Railway
✔ Created dotenvy.yaml with 2 targets
Set + Sync
dotenvy set STRIPE_KEY=sk_test_4eC39HqLyjWDarjtT1zdp7dc
✔ Synced STRIPE_KEY to 2 targets:
vercel development, preview ✔
convex dev ✔
Dry Run
dotenvy sync live --dry-run
vercel production
+ STRIPE_KEY = sk_live_… (new)
+ DATABASE_URL = postgres://… (new)
convex prod
~ DATABASE_URL (changed)
⚠ Dry run complete. Run without --dry-run to apply.

The problem

You already know the pain

Secrets scattered everywhere

Vercel has some. Railway has some. Supabase has some. Netlify has the rest. Your .env has a version from two weeks ago.

Copy-paste is not a workflow

Updating one secret means opening 5 dashboards, pasting the same value, and hoping you didn't miss one.

Your secrets, someone else's server

Other tools store your secrets on their infrastructure. That's another breach surface you didn't ask for.

How it works

One config. Two env files. Done.

1

Define what you track

dotenvy.yaml

version: 2
secrets:
  - STRIPE_SECRET_KEY
  - DATABASE_URL
  - RESEND_API_KEY
targets:
  vercel:
    type: vercel
    project: my-app
    mapping:
      development: test
      preview: test
      production: live
2

Store values locally

.env.test / .env.live

# .env.test
STRIPE_SECRET_KEY=sk_test_4eC39HqLyjWDarjtT1zdp7dc
DATABASE_URL=postgres://localhost:5432/myapp
RESEND_API_KEY=re_test_xxx

# .env.live
STRIPE_SECRET_KEY=sk_live_xxx
DATABASE_URL=postgres://prod-db:5432/myapp
RESEND_API_KEY=re_live_xxx
3

Sync everywhere

terminal

$ dotenvy sync test

Syncing test environment to 3 targets...

  vercel   development, preview
    STRIPE_SECRET_KEY  ✔
    DATABASE_URL       ✔
    RESEND_API_KEY     ✔

  netlify  deploy-preview, branch-deploy, dev
    STRIPE_SECRET_KEY  ✔
    DATABASE_URL       ✔
    RESEND_API_KEY     ✔

  flyio    default
    STRIPE_SECRET_KEY  ? (unknown)
    DATABASE_URL       ? (unknown)
    RESEND_API_KEY     ? (unknown)

✔ Synced 3 secrets to 3 targets

Integrations

Syncs to where you deploy

One CLI. Every platform. dotenvy calls each provider's API directly from your machine—no middleman.

Vercel

Sync to development, preview, and production environments

developmentpreviewproduction

Netlify

Context-aware deploys: production, previews, branch, and dev

productiondeploy-previewbranch-deploydev

Railway

Project-level and service-level variables across environments

productionstaging

Fly.io

write-only

App-level secrets for Machines with base64 encoding

default

Supabase

write-only

Project secrets via the Management API

default

Render

Service environment variables via the REST API

default

Convex

Deployment-level environment variables for your backend

default

Local .env

Read and write standard .env files on your machine

local
Coming soon
Cloudflare Workers
Modal

Architecture

Your secrets never touch our servers

Because we don't have servers. dotenvy calls platform APIs directly from your machine.

Other secret managers

Your machine
Their servers
Platform APIs

Your secrets stored on third-party servers

dotenvy

Your machine
Platform APIs

Direct connection — no middleman, no breach surface

Pricing

Free for individuals. Built for teams.

The CLI is free and open source forever. The team dashboard keeps everyone in sync.

Open Source

Free

Forever. No catch.

  • Full CLI access
  • Unlimited secrets
  • All providers
  • Local config & sync
Install CLI
Popular

Team

$10/mo flat

Up to 10 users

  • Everything in Free
  • Sync status dashboard
  • Drift alerts (Slack + email)
  • 90-day audit log

Enterprise

Custom

Unlimited users

  • Everything in Team
  • SSO / SAML
  • Role-based access
  • Priority support
Contact us

Dashboard preview

We know, we know — you just can't resist a dashboard. Fine. Here's what it looks like when you let someone else worry about drift.

dotenvy/my-app
testlive
Synced:8
Drifted:2
Missing:1
Last sync: 2 min ago
SecretVercelRailwaySupabaseUpdated
STRIPE_SECRET_KEYsyncedsyncedsynced2m ago
DATABASE_URLsynceddriftedsynced14m ago
RESEND_API_KEYsyncedsyncedmissing1h ago
OPENAI_API_KEYsyncedsyncedsynced3h ago
REDIS_URLdriftedsyncedsynced1d ago

Install

Get started in seconds

curlcurl -fsSL https://dotenvy.dev/install.sh | sh
brewbrew install dotenvy-dev/tap/dotenvy
gogo install github.com/dotenvy-dev/dotenvy@latest
macOSLinuxWindows