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
Current secret management forces applications to answer three questions at once:
24
24
@@ -28,66 +28,11 @@ Current secret management forces applications to answer three questions at once:
28
28
29
29
This coupling creates vendor lock-in, runtime failures, poor developer experience, and inconsistent practices.
30
30
31
-
## The Solution
32
-
33
-
SecretSpec separates these concerns:
34
-
35
-
<CardGrid>
36
-
<LinkCard
37
-
title="WHAT secrets are needed"
38
-
href="/reference/configuration/"
39
-
description="Declared in secretspec.toml"
40
-
/>
41
-
<LinkCard
42
-
title="HOW requirements vary"
43
-
href="/concepts/profiles/"
44
-
description="Managed through profiles"
45
-
/>
46
-
<LinkCard
47
-
title="WHERE secrets are stored"
48
-
href="/reference/providers/"
49
-
description="Configured via providers"
50
-
/>
51
-
</CardGrid>
31
+
## WHAT - Declaring Your Secrets
52
32
53
-
This separation enables portable applications, early validation, better tooling, and type safety.
33
+
Applications declare their secret requirements in a `secretspec.toml` file.
54
34
55
-
## Features
56
-
57
-
<CardGrid>
58
-
<LinkCard
59
-
title="Configuration Inheritance"
60
-
href="/concepts/inheritance/"
61
-
description="Share common secrets across projects using extends"
62
-
/>
63
-
<LinkCard
64
-
title="Type-Safe Rust SDK"
65
-
href="/sdk/rust/"
66
-
description="Generate strongly-typed structs from your configuration"
67
-
/>
68
-
<LinkCard
69
-
title="Smart Discovery"
70
-
href="/quick-start/"
71
-
description="Import existing secrets from .env files automatically"
72
-
/>
73
-
<LinkCard
74
-
title="CLI Tools"
75
-
href="/reference/cli/"
76
-
description="Check, set, and run commands with secrets injected"
77
-
/>
78
-
<LinkCard
79
-
title="Multiple Providers"
80
-
href="/reference/providers/"
81
-
description="Support for Keyring, dotenv, 1Password, LastPass, and more"
82
-
/>
83
-
<LinkCard
84
-
title="Early Validation"
85
-
href="/concepts/overview/"
86
-
description="Catch missing secrets before your application starts"
87
-
/>
88
-
</CardGrid>
89
-
90
-
## Quick Example
35
+
Each secret is defined with its name and description, creating a single source of truth that's version controlled alongside your code. This standardized format enables ecosystem-wide tooling and ensures every developer knows exactly what secrets the application needs.
# Initialize secretspec.toml from existing .env files
49
+
$ secretspec init --from .env
104
50
```
105
51
106
-
## Get Started in Minutes
52
+
[Learn more about declarative configuration →](/concepts/declarative/)
53
+
54
+
## HOW - Managing Requirements with Profiles
55
+
56
+
SecretSpec's profile system allows you to specify different requirements, defaults, and validation rules for development, staging, production, or any custom environment.
57
+
58
+
A secret might be optional with a local default in development but required in production - all without changing your application code.
# Check all secrets are available and set them if not
116
+
$ secretspec check
117
+
$ secretspec set DATABASE_URL
118
+
119
+
# Override provider for specific commands
120
+
$ secretspec run --provider env -- npm test
121
+
$ secretspec run --provider 1password://vault -- npm start
122
+
123
+
# Or use environment variables
124
+
$ SECRETSPEC_PROVIDER=env secretspec run -- npm test
125
+
$ SECRETSPEC_PROVIDER=1password://vault secretspec run -- npm start
126
+
```
127
+
128
+
[Learn more about providers →](/concepts/providers/)
129
+
130
+
This separation enables portable applications, early validation, better tooling, and type safety.
131
+
132
+
## Type-Safe Rust SDK
133
+
134
+
While the CLI is great for development workflows, integrating SecretSpec directly into your application provides better type safety and error handling.
135
+
136
+
The Rust SDK generates strongly-typed structs from your `secretspec.toml`, ensuring compile-time verification of your secret access.
*SDKs for other languages are welcome! Please see our [contribution guide](https://github.com/cachix/secretspec) if you'd like to help.*
166
+
119
167
---
120
168
121
169
*SecretSpec was designed by [Cachix](https://cachix.org) for [devenv.sh](https://devenv.sh). See the [announcement post](https://devenv.sh/blog/2025/01/08/secretspec).*
0 commit comments