Ship environment variables without the drift.
CLI-first secrets and config delivery for dev, staging, CI, and production.
The problem: .env files are the #1 source of credential leaks. Teams share secrets via Slack DMs, email threads, and Google Docs. Each copy is a potential breach.
The solution: EnvSync provides a single source of truth for environment variables and secrets, with:
- π Point-in-time rollback β Undo any secret change to any previous state
- β Approval workflows β Require review before production changes
- π End-to-end encryption β AES-256 at rest, TLS in transit
- π CLI-first workflow β
envsync pullandenvsync pushin your terminal - π 28+ integrations β GitHub, GitLab, Vercel, AWS, and more
# Install CLI
curl -fsSL https://cli.envsync.cloud/install.sh | sh
# Login
envsync auth login
# Pull secrets
envsync pull --env development
# Push changes
envsync push --env stagingOne API process serves both product routes (/api/...) and, when Enterprise modules are enabled, manage routes (/api/v1/manage/{module}/...). There is no separate management API process or management SDK package.
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β EnvSync Platform β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β π₯οΈ Dashboard β β¨οΈ CLI β π¦ SDKs (TS + Go) β
β (React + Vite) β (Go) β core + manage paths β
βββββββββββ¬ββββββββββ΄ββββββββ¬βββββββββ΄βββββββββββ¬βββββββββββββββ
β β β
βΌ βΌ βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Single API process (Bun + Hono) β
β /api/* Β· /api/v1/manage/* (Enterprise) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β π Secrets β π Rotation β π Integrations β
β π Variables β β° Dynamic β π Audit Logs β
β π OIDC/SAML β π€ Log Fwd β πͺ Webhooks β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
| Feature | Description |
|---|---|
| π Secrets Management | Store, sync, and manage secrets across teams |
| π Environment Variables | Version-controlled config with rollback |
| π₯ Team Management | Users, teams, roles, and permissions |
| π Audit Logs | Track every change with full history |
| π Change Requests | Approval workflows for production |
| Feature | Description |
|---|---|
| π OIDC Auth | GitHub Actions, GitLab CI, K8s service accounts |
| π‘οΈ SAML SSO | Okta, OneLogin, Azure AD, Google, Duo, Rippling |
| π Secret Rotation | Auto-rotate DB creds, AWS IAM, Azure SP |
| β° Dynamic Secrets | Short-lived credentials with auto-expiry |
| π€ Log Forwarding | Datadog, Splunk, Sumo Logic |
| π 28 Integrations | GitHub, GitLab, Vercel, AWS, Azure, and more |
| Path | Purpose |
|---|---|
packages/envsync-api |
Bun + Hono API (product + optional manage surface) |
packages/envsync-enterprise |
Proprietary EE modules/routes (mounted at /api/v1/manage) |
packages/envsync-enterprise-web |
Proprietary dashboard modules (injected into web) |
packages/envsync-cli |
Go CLI |
packages/envsync-kernel |
Shared MIT kernel (errors, ApiModule) |
packages/envsync-ui |
Shared MIT UI tokens/primitives |
apps/envsync-web |
React dashboard shell |
apps/envsync-landing |
Marketing landing (Hosted) |
packages/deploy |
Public OSS self-host CLI (@envsync-cloud/deploy) |
packages/deploy-cli |
EE deploy entry β @envsync-cloud/deploy-enterprise (private) |
packages/envsync-keycloak-theme |
Custom Keycloak theme |
sdks/envsync-ts-sdk |
Generated TypeScript SDK (core + manage) |
sdks/envsync-go-sdk |
Generated Go SDK (core + manage) |
scripts/ |
Local bootstrap and helper scripts |
Editions / dual license: EDITIONING.md Β· self-host: SELFHOSTING.md.
# 1. Clone and setup
git clone https://github.com/EnvSync-Cloud/envsync.git
cd envsync
cp .env.example .env
bun install
# 2. Start infrastructure
docker compose up -d
# 3. Initialize
bun run cli:init
bun run cli:create-dev-user --seed
bun run clickstack:sync
# 4. Start development
bun run dev| Service | URL |
|---|---|
| π₯οΈ Dashboard | http://app.lvh.me:8001 |
| β‘ API | http://api.lvh.me:4000 |
| π Keycloak | http://auth.lvh.me:8080 |
| π HyperDX | http://localhost:8800 |
| π§ Mailpit | http://localhost:8025 |
| ποΈ RustFS | http://localhost:19000 |
| π OpenFGA | http://localhost:8090 |
# Authentication
envsync auth login
envsync auth whoami
# Project management
envsync init
envsync app list
# Secrets
envsync pull --env development
envsync push --env staging
envsync push --env production --strict
# Export
envsync export --format dotenv
envsync export --format json
# Run with secrets
envsync run -- npm startOne TypeScript package and one Go package cover both product and Enterprise manage routes. Set BASE / base URL to the API origin only (not a separate manage host).
import { EnvSyncAPISDK } from '@envsync-cloud/envsync-ts-sdk';
const sdk = new EnvSyncAPISDK({ BASE: 'https://api.envsync.cloud' });
const secrets = await sdk.secrets.getSecrets({ app_id: 'my-app' });
// Enterprise (when enabled): sdk.license.*, sdk.enterprise.*, β¦ under /api/v1/manageimport (
"github.com/EnvSync-Cloud/envsync/sdks/envsync-go-sdk/sdk/client"
"github.com/EnvSync-Cloud/envsync/sdks/envsync-go-sdk/sdk/option"
)
c := client.NewClient(option.WithBaseURL("https://api.envsync.cloud"))
// Product + manage packages on the same client (e.g. c.License, c.Enterprise)| Edition | Guide |
|---|---|
| Hosted Enterprise | Platform CI/CD |
| Self-host OSS | envsync-deploy |
| Self-host Enterprise | envsync-deploy-enterprise |
See DEPLOY.md for full instructions (DNS, CLI flow, env matrix, license, pitfalls).
Self-host OSS short form: SELFHOSTING.md. Editions: EDITIONING.md.
See CONTRIBUTING.md for guidelines.
- π Docs: docs.envsync.cloud
- π Issues: GitHub Issues
- π¬ Discussions: GitHub Discussions
Made with β€οΈ by the EnvSync team