You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Feb 20, 2026. It is now read-only.
It's been a long-standing frustration that AWS Lambda deployments have a 4KB environment variable limit. This limit also impacts other environments such as [Vercel](https://vercel.com/support/articles/how-do-i-workaround-vercel-s-4-kb-environment-variables-limit) and the [Serverless framework](https://www.serverless.com/framework/docs/providers/aws/guide/variables) who use AWS Lambda as their infrastructure provider.
7
+
## Usage
8
8
9
-
A GitOps Secrets workflow eliminates environment variable limits without insecure hacks such as storing unencrypted .env files in your builds and only takes three steps:
10
-
11
-
1. Install the GitOps Secrets package (currently in developer preview):
As creators of the [Doppler Universal Secrets Platform](https://www.doppler.com/) who provide secrets sync integrations for [Vercel](https://vercel.com/integrations/doppler) and [Serverless](https://docs.doppler.com/docs/enclave-installation-serverless), we've helped customers individually to work around this limitation.
48
+
Exceeding AWS Lambda's 4KB environment variable limit is a common problem that also impacts platforms such as [Vercel](https://vercel.com/support/articles/how-do-i-workaround-vercel-s-4-kb-environment-variables-limit) and the [Serverless framework](https://www.serverless.com/framework/docs/providers/aws/guide/variables) which deploy on top of AWS Lambda.
49
+
50
+
A SecretOps workflow that bundles encrypted secrets into a deployment eliminates such environment variable limits without insecure hacks such as storing unencrypted .env files in your builds.
51
51
52
-
But long-term, we wanted a generic, flexible and open source solution that both our customers and other teams experiencing the same issue could use.
52
+
As creators of the [Doppler SecretOps Platform](https://www.doppler.com/) which provide secrets sync integrations for [Vercel](https://vercel.com/integrations/doppler) and [Serverless](https://docs.doppler.com/docs/enclave-installation-serverless), we built this to provide a secure solution for our customers and the open source community.
53
53
54
54
Our goal was to design a new way of accessing secrets in production that:
55
55
56
-
- [x] Allowed for a secrets payload of any size
57
-
- [x] Could be up and running in minutes
58
-
- [x] Scaled to work in any environment, including local development
59
-
- [x] Could support the most restrictive serverless platforms
60
-
- [x] Provided firstclass support for ES modules
61
-
- [x] Prevented unencrypted secrets from ever touching the file system
62
-
- [x] Abstracted away the complexity of secrets fetching using communitycontributed [providers](./src/providers/)
56
+
- Allowed for a secrets payload of any size
57
+
- Could be up and running in minutes
58
+
- Scaled to work in any environment, including local development
59
+
- Could support the most restrictive serverless platforms
60
+
- Provided first-class support for ES modules
61
+
- Prevented unencrypted secrets from ever touching the file system
62
+
- Abstracted away the complexity of secrets fetching using community-contributed [providers](./src/providers/)
63
63
64
64
## Providers
65
65
66
66
A provider is designed to abstract away the complexities of fetching secrets from any secret manager or secrets store by exposing a single async `fetch` method.
67
67
68
-
A secrets provider returns a plain Key-Value Object to ensure that serializing to and from JSON during encryption and decryption produces the same object structure originally fetched from the provider.
68
+
A secrets provider returns a plain Key-Value Object to ensure that serializing to and from JSON during encryption and decryption produces the same object structure initially fetched from the provider.
69
69
70
70
The current list of providers are:
71
71
@@ -75,13 +75,11 @@ We'd love to see the list of providers grow! Please see our [contributing guide]
75
75
76
76
## Encryption and Decryption
77
77
78
-
There are two file formats available for bundling secrets into your build:
78
+
There are two file formats available for bundling encrypted secrets into your deployments:
79
79
80
80
- **JSON**: Encrypted JSON file.
81
81
- **JS Module**: Encrypted JSON embedded in JS module.
82
82
83
-
You may be forced to use the JS module format if reading static JSON at runtime is problematic, e.g. [Vercel prefers a JS module with a custom path](https://github.com/DopplerUniversity/vercel-gitops-secrets-nextjs), but otherwise, there isn't a compelling reason to use one format over another.
84
-
85
83
### JSON
86
84
87
85
To encrypt secrets to a JSON file:
@@ -119,7 +117,11 @@ secrets.populateEnv();
119
117
120
118
### JS Module
121
119
122
-
The JS module format suits restricted environments where reading static files is problematic and depending upon the platform, building with a custom path may be required.
120
+
The JS module format is ideal for restricted environments such as Vercel where application-wide access to reading static files is problematic.
121
+
122
+
Depending upon the deployment platform and framework, you can potentially omit the `path` parameter to have encrypted secrets access and storage managed internally for you.
123
+
124
+
But if using Vercel with Next.js for example, the `path` configures the module to be output in your codebase with the format of the module matching that of your application.
We recommend checking out the [Working around Vercel’s 4KB Environment Variables Limit for Node.js with GitOps Secrets article](https://hashnode.com/preview/623404babef4c71aa6f0d65e) which takes you through the entire process step-by-step.
165
-
166
-
## Examples
165
+
## Getting Started
167
166
168
-
Take a look at the [Vercel GitOps Secrets Next.js sample repository](https://github.com/DopplerUniversity/vercel-gitops-secrets-nextjs) and deploy to Vercel to see it in action.
167
+
We recommend checking out the [Working around Vercel's 4KB Environment Variables Limit for Node.js with GitOps Secrets](https://hashnode.com/preview/623404babef4c71aa6f0d65e) blog post which guides you through the entire process.
169
168
170
-
## Contributing
169
+
Or take a look at the [Vercel GitOps Secrets Next.js sample repository](https://github.com/DopplerUniversity/vercel-gitops-secrets-nextjs) to see a complete working example that you can test and deploy to Vercel.
171
170
172
-
As this package is still in developer preview, a huge contribution you can make is simply testing this with your preferred framework and serverless provider as we'd love your feedback!
171
+
## Support
173
172
174
-
You can get support in the [Doppler community forum](https://community.doppler.com/), find us on [Twitter](https://twitter.com/doppler), and for bugs or feature requests, [create an issue](https://github.com/DopplerHQ/gitops-secrets-nodejs/issues) on this repository.
173
+
You can get support in the [Doppler community forum](https://community.doppler.com/), find us on [Twitter](https://twitter.com/doppler), and for bugs or feature requests, [create an issue](https://github.com/DopplerHQ/gitops-secrets-nodejs/issues) on the [DopplerHQ/gitops-secrets-nodejs](https://github.com/DopplerHQ/gitops-secrets-nodejs) GitHub repository.
175
174
176
-
We'd also love to see the number of providers grow and you can check out our [contributing guide](CONTRIBUTING.md) to get started.
175
+
We'd also love to see the number of providers grow, and you can check out our [contributing guide](CONTRIBUTING.md) to get started.
0 commit comments