# πŸ›£οΈ Envilder Roadmap Envilder is evolving from a CLI tool into a **multi-runtime secret management platform**. The goal: one declarative map-file format becomes the universal standard for resolving environment variables from cloud secret stores (AWS SSM Parameter Store, AWS Secrets Manager, Azure Key Vault, GCP Secret Manager) β€” whether in local development, CI/CD pipelines, or directly inside application code at runtime. > **Vision:** One map-file. Every cloud. Every language. Every runtime. > > **Note:** This roadmap contains ideas and potential features based on initial vision and community feedback. > Not all features are guaranteed to be implemented. Priorities may change based on user needs, feedback, > and real-world usage patterns. Your input mattersβ€”feel free to share your thoughts and suggestions! --- ## Feature Status & Roadmap ### βœ… Shipped | Feature | Notes | |---------|-------| | **Mapping-based resolution** | Core functionality | | **`.env` file generation** | Core functionality | | **AWS SSM Parameter Store** | Default provider | | **AWS profile support** | `--profile` flag | | **Push mode** (`--push`) | [Guide](./docs/push-command.md) | | **GitHub Action** | [Documentation](./github-action/README.md) | | **Azure Key Vault** | Multi-backend via `$config` map-file section ([#90](https://github.com/macalbert/envilder/pull/90)) | | **Documentation website** | [envilder.com](https://envilder.com) | | **Onboarding documentation** | [Setup guide](./docs/requirements-installation.md) | | **.NET SDK** (`Envilder`) | First runtime SDK β€” load secrets into `IConfiguration` or `EnvilderClient`. AWS SSM + Azure Key Vault. [Documentation](./src/sdks/dotnet/README.md) | | **Python SDK** (`envilder`) | Runtime library for Python β€” Django, FastAPI, data pipelines. Sync API with `EnvilderClient`, `MapFileParser`, `SecretProviderFactory`. AWS SSM + Azure Key Vault. Published to PyPI. [Documentation](./src/sdks/python/README.md) | | **Node.js SDK** (`@envilder/sdk`) | Runtime library for Node.js β€” load secrets directly into `process.env` from a map-file. AWS SSM + Azure Key Vault. Published to npm. [Documentation](./src/sdks/nodejs/README.md) | ### πŸ”₯ Up Next | Feature | Priority | Notes | |---------|----------|-------| | **Go SDK** (`envilder`) | πŸ”΄ High | Runtime library for Go β€” cloud-native apps, Kubernetes tooling. Published as Go module | | **Java SDK** (`envilder`) | πŸ”΄ High | Runtime library for Java/Kotlin β€” Spring Boot, Android backends. Published to Maven Central | | **Map-file JSON Schema** | πŸ”΄ High | Formal spec for the map-file format at `spec/` β€” serves as the contract between all SDKs and tools | | **SDK conformance tests** | πŸ”΄ High | Language-agnostic test fixtures (JSON input β†’ expected output) that all SDKs must pass | | **Exec mode** (`--exec`) | 🟑 Medium | Inject secrets into a child process env without writing to disk (`envilder exec -- node server.js`) | | **GCP Secret Manager** | 🟑 Medium | Third cloud provider β€” similar DX to AWS SSM. Completes the multi-cloud trident (AWS + Azure + GCP) | | **AWS Secrets Manager** | 🟑 Medium | Support AWS Secrets Manager alongside SSM Parameter Store for teams using JSON-structured secrets | | **Check/sync mode** (`--check`) | 🟑 Medium | Validate cloud secrets vs local `.env`, fail CI if out-of-sync | ### πŸ’‘ Planned | Feature | Priority | Notes | |---------|----------|-------| | **Auto-discovery mode** (`--auto`) | Medium | Fetch all parameters matching a given prefix (e.g., `/my-app/prod/*`) | | **Exec with refresh** (`--refresh-interval`) | Low | Kill & restart child process periodically with fresh secrets (requires `--exec`) | | **Hierarchical mapping** | Low | Per-environment `envilder.json` with inheritance/overrides | --- ## πŸ—οΈ Platform Architecture All tools and SDKs live in a single monorepo and share the same map-file format: ```txt envilder.json (universal contract) β”‚ β”œβ”€β”€ envilder CLI β†’ generates .env files β”œβ”€β”€ envilder GitHub Action β†’ CI/CD secret injection β”œβ”€β”€ @envilder/sdk (npm) β†’ Node.js / TypeScript runtime β”œβ”€β”€ envilder (PyPI) β†’ Python runtime β”œβ”€β”€ Envilder (NuGet) β†’ .NET runtime β”œβ”€β”€ envilder (Go module) β†’ Go runtime └── envilder (Maven) β†’ Java / Kotlin runtime ``` ### SDK Rollout All five SDKs are developed **in parallel** β€” same map-file contract, same conformance tests, shipped simultaneously: | SDK | Package | Registry | |-----|---------|----------| | **Node.js** | `@envilder/sdk` | npm | | **Python** | `envilder` | PyPI | | **Go** | `envilder` | Go module | | **.NET** | `Envilder` | NuGet | | **Java** | `envilder` | Maven Central | ### Monorepo Principles - **One map-file spec** β€” formal JSON Schema at `spec/` is the source of truth for all SDKs - **Conformance tests** β€” language-agnostic fixtures that every SDK must pass - **Independent versioning** β€” each SDK has its own semver (`sdk-node@1.2.0`, `sdk-py@0.3.0`) - **Shared test infrastructure** β€” LocalStack (AWS) and Lowkey Vault (Azure) via Docker Compose serve all SDKs --- ## πŸ™Œ Contribute or Suggest Ideas If you've faced similar problems or want to help improve this tool, feel free to: - πŸ› [Open an issue](https://github.com/macalbert/envilder/issues/new) - πŸ’‘ Share feature ideas and use cases - πŸ”§ Submit a Pull Request - πŸ’¬ Provide feedback on planned features Every bit of feedback helps make this tool better for the community!