slickenv 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +210 -0
- package/oclif.manifest.json +1 -1
- package/package.json +1 -1
package/README.md
ADDED
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
# SlickEnv
|
|
2
|
+
|
|
3
|
+
CLI tool for securely managing, syncing, and versioning `.env` files across your team.
|
|
4
|
+
|
|
5
|
+
- **End-to-end encrypted** — Private variables are encrypted client-side with AES-256-GCM before leaving your machine
|
|
6
|
+
- **Version history** — Every push creates an immutable version you can diff, rollback, or audit
|
|
7
|
+
- **Team sync** — Pull the latest environment from anywhere, always in sync
|
|
8
|
+
- **Zero plaintext on server** — The server never sees your unencrypted secrets
|
|
9
|
+
|
|
10
|
+
## Install
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
npm install -g slickenv
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Quick Start
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
# Authenticate via browser
|
|
20
|
+
slickenv login
|
|
21
|
+
|
|
22
|
+
# Initialize a project in your repo
|
|
23
|
+
slickenv init --name my-app
|
|
24
|
+
|
|
25
|
+
# Push your .env to SlickEnv
|
|
26
|
+
slickenv push -m "Initial environment"
|
|
27
|
+
|
|
28
|
+
# Pull from another machine or teammate
|
|
29
|
+
slickenv pull
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Commands
|
|
33
|
+
|
|
34
|
+
### Authentication
|
|
35
|
+
|
|
36
|
+
#### `slickenv login`
|
|
37
|
+
|
|
38
|
+
Open browser to authenticate via OAuth. Your token is stored securely in the OS keychain (with a file fallback).
|
|
39
|
+
|
|
40
|
+
#### `slickenv logout`
|
|
41
|
+
|
|
42
|
+
Revoke your token and clear local credentials.
|
|
43
|
+
|
|
44
|
+
### Project Setup
|
|
45
|
+
|
|
46
|
+
#### `slickenv init`
|
|
47
|
+
|
|
48
|
+
Initialize a SlickEnv project in the current directory. Creates a `.slickenv` config file and ensures `.env` is in your `.gitignore`.
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
slickenv init --name my-app --env production
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
| Flag | Description | Default |
|
|
55
|
+
| ------- | ------------------------------------ | -------------------- |
|
|
56
|
+
| `--name`| Project name | Current directory |
|
|
57
|
+
| `--env` | Default environment label | `production` |
|
|
58
|
+
|
|
59
|
+
### Syncing
|
|
60
|
+
|
|
61
|
+
#### `slickenv push`
|
|
62
|
+
|
|
63
|
+
Push local `.env` changes to SlickEnv. Private variables are encrypted before upload.
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
slickenv push -m "Add Stripe keys" --yes
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
| Flag | Description | Default |
|
|
70
|
+
| --------------- | ------------------------------------ | -------- |
|
|
71
|
+
| `--file` | Path to env file | `.env` |
|
|
72
|
+
| `--force` | Skip conflict check | `false` |
|
|
73
|
+
| `--message, -m` | Version description | — |
|
|
74
|
+
| `--yes, -y` | Auto-confirm prompts | `false` |
|
|
75
|
+
|
|
76
|
+
#### `slickenv pull`
|
|
77
|
+
|
|
78
|
+
Pull the latest (or a specific) version and write it to your local `.env`.
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
slickenv pull --version 3 --dry-run
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
| Flag | Description | Default |
|
|
85
|
+
| ----------- | ---------------------------------- | -------- |
|
|
86
|
+
| `--version` | Pull a specific version | latest |
|
|
87
|
+
| `--dry-run` | Preview without writing to disk | `false` |
|
|
88
|
+
| `--yes, -y` | Auto-confirm overwrite | `false` |
|
|
89
|
+
|
|
90
|
+
### Version History
|
|
91
|
+
|
|
92
|
+
#### `slickenv versions`
|
|
93
|
+
|
|
94
|
+
List version history for the current environment.
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
slickenv versions --limit 10
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
| Flag | Description | Default |
|
|
101
|
+
| --------- | ------------------------- | ------- |
|
|
102
|
+
| `--limit` | Number of versions | `20` |
|
|
103
|
+
|
|
104
|
+
#### `slickenv diff <version-a> <version-b>`
|
|
105
|
+
|
|
106
|
+
Show what changed between two versions.
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
slickenv diff 3 5
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
#### `slickenv rollback <version>`
|
|
113
|
+
|
|
114
|
+
Roll back to a previous version. This is non-destructive — it creates a new version with the contents of the target version.
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
slickenv rollback 2 --yes
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
| Flag | Description | Default |
|
|
121
|
+
| ----------- | ---------------------- | ------- |
|
|
122
|
+
| `--yes, -y` | Auto-confirm rollback | `false` |
|
|
123
|
+
|
|
124
|
+
### Sharing
|
|
125
|
+
|
|
126
|
+
#### `slickenv export`
|
|
127
|
+
|
|
128
|
+
Generate a `.env.example` file with metadata annotations. Public variables include their values; private variables show only examples or placeholders.
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
slickenv export --out .env.example
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
| Flag | Description | Default |
|
|
135
|
+
| ------- | ------------------ | --------------- |
|
|
136
|
+
| `--out` | Output file path | `.env.example` |
|
|
137
|
+
|
|
138
|
+
#### `slickenv share`
|
|
139
|
+
|
|
140
|
+
Display a shareable view of the current environment. Private values are masked by default.
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
slickenv share --public-only
|
|
144
|
+
slickenv share --reveal
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
| Flag | Description | Default |
|
|
148
|
+
| --------------- | ------------------------------- | ------- |
|
|
149
|
+
| `--public-only` | Show only public variables | `false` |
|
|
150
|
+
| `--reveal` | Show private values in plain | `false` |
|
|
151
|
+
|
|
152
|
+
#### `slickenv status`
|
|
153
|
+
|
|
154
|
+
Show what's different between your local `.env` and the remote version.
|
|
155
|
+
|
|
156
|
+
### Global Flags
|
|
157
|
+
|
|
158
|
+
All commands support:
|
|
159
|
+
|
|
160
|
+
| Flag | Description |
|
|
161
|
+
| ------------ | ------------------------ |
|
|
162
|
+
| `--json` | Output as JSON |
|
|
163
|
+
| `--no-color` | Disable colored output |
|
|
164
|
+
| `--verbose` | Show debug information |
|
|
165
|
+
|
|
166
|
+
## `.env` Metadata Annotations
|
|
167
|
+
|
|
168
|
+
SlickEnv supports metadata annotations as comments above your variables:
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
# @visibility=public @type=string @required=true
|
|
172
|
+
APP_NAME=my-app
|
|
173
|
+
|
|
174
|
+
# @visibility=private @required=true @example=sk_live_xxx
|
|
175
|
+
STRIPE_SECRET_KEY=sk_live_abc123
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
| Annotation | Values | Default |
|
|
179
|
+
| --------------- | ------------------------------ | ----------- |
|
|
180
|
+
| `@visibility` | `public`, `private` | `private` |
|
|
181
|
+
| `@type` | `string`, `number`, `boolean` | `string` |
|
|
182
|
+
| `@required` | `true`, `false` | `false` |
|
|
183
|
+
| `@example` | Any value | — |
|
|
184
|
+
|
|
185
|
+
Variables marked `private` are encrypted client-side before syncing. Variables marked `public` are stored in plaintext.
|
|
186
|
+
|
|
187
|
+
## Security
|
|
188
|
+
|
|
189
|
+
SlickEnv uses **client-side AES-256-GCM encryption** so private variables never leave your machine unencrypted.
|
|
190
|
+
|
|
191
|
+
- **Key derivation**: PBKDF2-SHA256 (100,000 iterations) using your user identity, project ID, and a server-side salt
|
|
192
|
+
- **Encryption**: AES-256-GCM with a unique 12-byte IV per variable and 128-bit authentication tags
|
|
193
|
+
- **Token storage**: OS keychain via keytar, with a chmod 600 file fallback
|
|
194
|
+
- **Zero knowledge**: The server stores only ciphertext — it cannot read your private variables
|
|
195
|
+
|
|
196
|
+
## Environment Variables
|
|
197
|
+
|
|
198
|
+
| Variable | Description | Default |
|
|
199
|
+
| ------------------- | ------------------------------------ | ------------------------------------- |
|
|
200
|
+
| `SLICKENV_API_URL` | Override the backend API URL | `https://apienv.slickspender.com` |
|
|
201
|
+
| `SLICKENV_AUTH_URL` | Override the auth website URL | `https://env.slickspender.com` |
|
|
202
|
+
| `SLICKENV_TOKEN` | Use a token directly (CI/CD) | — |
|
|
203
|
+
|
|
204
|
+
## Documentation
|
|
205
|
+
|
|
206
|
+
Full documentation is available at [env.slickspender.com/docs](https://env.slickspender.com/docs).
|
|
207
|
+
|
|
208
|
+
## License
|
|
209
|
+
|
|
210
|
+
MIT
|
package/oclif.manifest.json
CHANGED