hushbox 0.1.0__tar.gz

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.
hushbox-0.1.0/PKG-INFO ADDED
@@ -0,0 +1,159 @@
1
+ Metadata-Version: 2.4
2
+ Name: hushbox
3
+ Version: 0.1.0
4
+ Summary: A zero-dependency secrets manager built entirely from the Python standard library
5
+ Author: Pranav Salian
6
+ Project-URL: Repository, https://github.com/Pranav-s-salian/Vault-ai
7
+ Requires-Python: >=3.10
8
+ Description-Content-Type: text/markdown
9
+
10
+ # Vault
11
+
12
+ A zero-dependency secrets manager. Everything is built from the Python
13
+ standard library — no `requirements.txt`, no pip packages. See
14
+ [STDLIB.md](STDLIB.md) for exactly which stdlib modules replace which
15
+ third-party packages, and [THREAT_MODEL.md](THREAT_MODEL.md) for what
16
+ Vault does and does not protect against.
17
+
18
+ ## Installation
19
+
20
+ Nothing beyond Python 3.10+ is required — clone the repository, then run
21
+ the installer for your OS:
22
+
23
+ macOS/Linux:
24
+
25
+ ```sh
26
+ chmod +x install.sh && ./install.sh
27
+ ```
28
+
29
+ Windows:
30
+
31
+ ```
32
+ install.bat
33
+ ```
34
+
35
+ After installing, `vault` works as a plain command from any directory —
36
+ no need to `cd` into the repo or type `python -m vault` — for example:
37
+
38
+ ```
39
+ vault init
40
+ vault set KEY value
41
+ vault run -- your-command
42
+ vault ui
43
+ ```
44
+
45
+ ### macOS
46
+
47
+ `install.sh` creates a wrapper at `/usr/local/bin/vault` (using `sudo`
48
+ only if that directory isn't already writable by you). The master key is
49
+ stored in the macOS Keychain (service `vault-cli`, account `master-key`)
50
+ via the built-in `security` command-line tool.
51
+
52
+ ### Windows
53
+
54
+ `install.bat` creates `vault.bat` in this project folder and, if the
55
+ folder isn't already on your `PATH`, adds it there via `setx` — reopen
56
+ your terminal afterward for that change to take effect. The master key is
57
+ stored, DPAPI-encrypted, at `%APPDATA%\vault-cli\master.key`. DPAPI ties
58
+ the encryption to your Windows user account, so only that account can
59
+ decrypt it.
60
+
61
+ ### Running without installing
62
+
63
+ You can also run Vault directly from the repo without installing a global
64
+ command — `./run.sh init` (macOS/Linux) or `python -m vault init`
65
+ (Windows), from inside the project directory.
66
+
67
+ ## CLI commands
68
+
69
+ All commands operate on the vault file at `~/.vault/secrets.json` by
70
+ default.
71
+
72
+ ### `vault init`
73
+
74
+ Generate a new 32-byte master key and store it in the OS keychain.
75
+
76
+ ```
77
+ $ vault init
78
+ vault initialized — master key stored in the OS keychain
79
+ ```
80
+
81
+ ### `vault set KEY VALUE`
82
+
83
+ Encrypt and store a secret.
84
+
85
+ ```
86
+ $ vault set DB_PASSWORD hunter2
87
+ stored 'DB_PASSWORD'
88
+ ```
89
+
90
+ ### `vault get KEY`
91
+
92
+ Decrypt and print a secret's value. A warning is printed to stderr first,
93
+ since the value will appear in your terminal (and possibly shell
94
+ history).
95
+
96
+ ```
97
+ $ vault get DB_PASSWORD
98
+ warning: printing a secret to the terminal may be recorded in your shell history
99
+ hunter2
100
+ ```
101
+
102
+ ### `vault list`
103
+
104
+ List secret names only — values are never shown.
105
+
106
+ ```
107
+ $ vault list
108
+ DB_PASSWORD
109
+ TEST_KEY
110
+ ```
111
+
112
+ ### `vault delete KEY`
113
+
114
+ Remove a secret.
115
+
116
+ ```
117
+ $ vault delete DB_PASSWORD
118
+ deleted 'DB_PASSWORD'
119
+ ```
120
+
121
+ ### `vault run -- COMMAND...`
122
+
123
+ Decrypt every secret, inject them into the environment alongside the rest
124
+ of `os.environ`, and run `COMMAND`. Decrypted values live only in memory
125
+ for the duration of the subprocess.
126
+
127
+ ```
128
+ $ vault run -- python3 -c "import os; print(os.environ['TEST_KEY'])"
129
+ hello123
130
+ ```
131
+
132
+ ### `vault ui`
133
+
134
+ Launch the local web UI (see below).
135
+
136
+ ```
137
+ $ vault ui
138
+ vault UI running at http://127.0.0.1:52341/?token=<random-token>
139
+ press Ctrl+C to stop
140
+ ```
141
+
142
+ ## The UI
143
+
144
+ `vault ui` starts a local HTTP server bound to `127.0.0.1` only (never
145
+ `0.0.0.0`), generates a random session token, and opens your browser to
146
+ the vault page with that token pre-filled in the URL. Every API request
147
+ must include the same token or it is rejected with `403`.
148
+
149
+ From the page you can:
150
+
151
+ - see a table of secret names (values are hidden by default),
152
+ - add a new secret via the form,
153
+ - click **Reveal** to briefly show a secret's value (it re-hides itself
154
+ after a few seconds),
155
+ - click **Delete** to remove a secret.
156
+
157
+ No frameworks, no build step, no external CDN — the whole UI is one
158
+ static `index.html` with inline `<style>` and `<script>`, served by
159
+ `http.server` from the stdlib.
@@ -0,0 +1,150 @@
1
+ # Vault
2
+
3
+ A zero-dependency secrets manager. Everything is built from the Python
4
+ standard library — no `requirements.txt`, no pip packages. See
5
+ [STDLIB.md](STDLIB.md) for exactly which stdlib modules replace which
6
+ third-party packages, and [THREAT_MODEL.md](THREAT_MODEL.md) for what
7
+ Vault does and does not protect against.
8
+
9
+ ## Installation
10
+
11
+ Nothing beyond Python 3.10+ is required — clone the repository, then run
12
+ the installer for your OS:
13
+
14
+ macOS/Linux:
15
+
16
+ ```sh
17
+ chmod +x install.sh && ./install.sh
18
+ ```
19
+
20
+ Windows:
21
+
22
+ ```
23
+ install.bat
24
+ ```
25
+
26
+ After installing, `vault` works as a plain command from any directory —
27
+ no need to `cd` into the repo or type `python -m vault` — for example:
28
+
29
+ ```
30
+ vault init
31
+ vault set KEY value
32
+ vault run -- your-command
33
+ vault ui
34
+ ```
35
+
36
+ ### macOS
37
+
38
+ `install.sh` creates a wrapper at `/usr/local/bin/vault` (using `sudo`
39
+ only if that directory isn't already writable by you). The master key is
40
+ stored in the macOS Keychain (service `vault-cli`, account `master-key`)
41
+ via the built-in `security` command-line tool.
42
+
43
+ ### Windows
44
+
45
+ `install.bat` creates `vault.bat` in this project folder and, if the
46
+ folder isn't already on your `PATH`, adds it there via `setx` — reopen
47
+ your terminal afterward for that change to take effect. The master key is
48
+ stored, DPAPI-encrypted, at `%APPDATA%\vault-cli\master.key`. DPAPI ties
49
+ the encryption to your Windows user account, so only that account can
50
+ decrypt it.
51
+
52
+ ### Running without installing
53
+
54
+ You can also run Vault directly from the repo without installing a global
55
+ command — `./run.sh init` (macOS/Linux) or `python -m vault init`
56
+ (Windows), from inside the project directory.
57
+
58
+ ## CLI commands
59
+
60
+ All commands operate on the vault file at `~/.vault/secrets.json` by
61
+ default.
62
+
63
+ ### `vault init`
64
+
65
+ Generate a new 32-byte master key and store it in the OS keychain.
66
+
67
+ ```
68
+ $ vault init
69
+ vault initialized — master key stored in the OS keychain
70
+ ```
71
+
72
+ ### `vault set KEY VALUE`
73
+
74
+ Encrypt and store a secret.
75
+
76
+ ```
77
+ $ vault set DB_PASSWORD hunter2
78
+ stored 'DB_PASSWORD'
79
+ ```
80
+
81
+ ### `vault get KEY`
82
+
83
+ Decrypt and print a secret's value. A warning is printed to stderr first,
84
+ since the value will appear in your terminal (and possibly shell
85
+ history).
86
+
87
+ ```
88
+ $ vault get DB_PASSWORD
89
+ warning: printing a secret to the terminal may be recorded in your shell history
90
+ hunter2
91
+ ```
92
+
93
+ ### `vault list`
94
+
95
+ List secret names only — values are never shown.
96
+
97
+ ```
98
+ $ vault list
99
+ DB_PASSWORD
100
+ TEST_KEY
101
+ ```
102
+
103
+ ### `vault delete KEY`
104
+
105
+ Remove a secret.
106
+
107
+ ```
108
+ $ vault delete DB_PASSWORD
109
+ deleted 'DB_PASSWORD'
110
+ ```
111
+
112
+ ### `vault run -- COMMAND...`
113
+
114
+ Decrypt every secret, inject them into the environment alongside the rest
115
+ of `os.environ`, and run `COMMAND`. Decrypted values live only in memory
116
+ for the duration of the subprocess.
117
+
118
+ ```
119
+ $ vault run -- python3 -c "import os; print(os.environ['TEST_KEY'])"
120
+ hello123
121
+ ```
122
+
123
+ ### `vault ui`
124
+
125
+ Launch the local web UI (see below).
126
+
127
+ ```
128
+ $ vault ui
129
+ vault UI running at http://127.0.0.1:52341/?token=<random-token>
130
+ press Ctrl+C to stop
131
+ ```
132
+
133
+ ## The UI
134
+
135
+ `vault ui` starts a local HTTP server bound to `127.0.0.1` only (never
136
+ `0.0.0.0`), generates a random session token, and opens your browser to
137
+ the vault page with that token pre-filled in the URL. Every API request
138
+ must include the same token or it is rejected with `403`.
139
+
140
+ From the page you can:
141
+
142
+ - see a table of secret names (values are hidden by default),
143
+ - add a new secret via the form,
144
+ - click **Reveal** to briefly show a secret's value (it re-hides itself
145
+ after a few seconds),
146
+ - click **Delete** to remove a secret.
147
+
148
+ No frameworks, no build step, no external CDN — the whole UI is one
149
+ static `index.html` with inline `<style>` and `<script>`, served by
150
+ `http.server` from the stdlib.
@@ -0,0 +1,159 @@
1
+ Metadata-Version: 2.4
2
+ Name: hushbox
3
+ Version: 0.1.0
4
+ Summary: A zero-dependency secrets manager built entirely from the Python standard library
5
+ Author: Pranav Salian
6
+ Project-URL: Repository, https://github.com/Pranav-s-salian/Vault-ai
7
+ Requires-Python: >=3.10
8
+ Description-Content-Type: text/markdown
9
+
10
+ # Vault
11
+
12
+ A zero-dependency secrets manager. Everything is built from the Python
13
+ standard library — no `requirements.txt`, no pip packages. See
14
+ [STDLIB.md](STDLIB.md) for exactly which stdlib modules replace which
15
+ third-party packages, and [THREAT_MODEL.md](THREAT_MODEL.md) for what
16
+ Vault does and does not protect against.
17
+
18
+ ## Installation
19
+
20
+ Nothing beyond Python 3.10+ is required — clone the repository, then run
21
+ the installer for your OS:
22
+
23
+ macOS/Linux:
24
+
25
+ ```sh
26
+ chmod +x install.sh && ./install.sh
27
+ ```
28
+
29
+ Windows:
30
+
31
+ ```
32
+ install.bat
33
+ ```
34
+
35
+ After installing, `vault` works as a plain command from any directory —
36
+ no need to `cd` into the repo or type `python -m vault` — for example:
37
+
38
+ ```
39
+ vault init
40
+ vault set KEY value
41
+ vault run -- your-command
42
+ vault ui
43
+ ```
44
+
45
+ ### macOS
46
+
47
+ `install.sh` creates a wrapper at `/usr/local/bin/vault` (using `sudo`
48
+ only if that directory isn't already writable by you). The master key is
49
+ stored in the macOS Keychain (service `vault-cli`, account `master-key`)
50
+ via the built-in `security` command-line tool.
51
+
52
+ ### Windows
53
+
54
+ `install.bat` creates `vault.bat` in this project folder and, if the
55
+ folder isn't already on your `PATH`, adds it there via `setx` — reopen
56
+ your terminal afterward for that change to take effect. The master key is
57
+ stored, DPAPI-encrypted, at `%APPDATA%\vault-cli\master.key`. DPAPI ties
58
+ the encryption to your Windows user account, so only that account can
59
+ decrypt it.
60
+
61
+ ### Running without installing
62
+
63
+ You can also run Vault directly from the repo without installing a global
64
+ command — `./run.sh init` (macOS/Linux) or `python -m vault init`
65
+ (Windows), from inside the project directory.
66
+
67
+ ## CLI commands
68
+
69
+ All commands operate on the vault file at `~/.vault/secrets.json` by
70
+ default.
71
+
72
+ ### `vault init`
73
+
74
+ Generate a new 32-byte master key and store it in the OS keychain.
75
+
76
+ ```
77
+ $ vault init
78
+ vault initialized — master key stored in the OS keychain
79
+ ```
80
+
81
+ ### `vault set KEY VALUE`
82
+
83
+ Encrypt and store a secret.
84
+
85
+ ```
86
+ $ vault set DB_PASSWORD hunter2
87
+ stored 'DB_PASSWORD'
88
+ ```
89
+
90
+ ### `vault get KEY`
91
+
92
+ Decrypt and print a secret's value. A warning is printed to stderr first,
93
+ since the value will appear in your terminal (and possibly shell
94
+ history).
95
+
96
+ ```
97
+ $ vault get DB_PASSWORD
98
+ warning: printing a secret to the terminal may be recorded in your shell history
99
+ hunter2
100
+ ```
101
+
102
+ ### `vault list`
103
+
104
+ List secret names only — values are never shown.
105
+
106
+ ```
107
+ $ vault list
108
+ DB_PASSWORD
109
+ TEST_KEY
110
+ ```
111
+
112
+ ### `vault delete KEY`
113
+
114
+ Remove a secret.
115
+
116
+ ```
117
+ $ vault delete DB_PASSWORD
118
+ deleted 'DB_PASSWORD'
119
+ ```
120
+
121
+ ### `vault run -- COMMAND...`
122
+
123
+ Decrypt every secret, inject them into the environment alongside the rest
124
+ of `os.environ`, and run `COMMAND`. Decrypted values live only in memory
125
+ for the duration of the subprocess.
126
+
127
+ ```
128
+ $ vault run -- python3 -c "import os; print(os.environ['TEST_KEY'])"
129
+ hello123
130
+ ```
131
+
132
+ ### `vault ui`
133
+
134
+ Launch the local web UI (see below).
135
+
136
+ ```
137
+ $ vault ui
138
+ vault UI running at http://127.0.0.1:52341/?token=<random-token>
139
+ press Ctrl+C to stop
140
+ ```
141
+
142
+ ## The UI
143
+
144
+ `vault ui` starts a local HTTP server bound to `127.0.0.1` only (never
145
+ `0.0.0.0`), generates a random session token, and opens your browser to
146
+ the vault page with that token pre-filled in the URL. Every API request
147
+ must include the same token or it is rejected with `403`.
148
+
149
+ From the page you can:
150
+
151
+ - see a table of secret names (values are hidden by default),
152
+ - add a new secret via the form,
153
+ - click **Reveal** to briefly show a secret's value (it re-hides itself
154
+ after a few seconds),
155
+ - click **Delete** to remove a secret.
156
+
157
+ No frameworks, no build step, no external CDN — the whole UI is one
158
+ static `index.html` with inline `<style>` and `<script>`, served by
159
+ `http.server` from the stdlib.
@@ -0,0 +1,20 @@
1
+ README.md
2
+ pyproject.toml
3
+ hushbox.egg-info/PKG-INFO
4
+ hushbox.egg-info/SOURCES.txt
5
+ hushbox.egg-info/dependency_links.txt
6
+ hushbox.egg-info/entry_points.txt
7
+ hushbox.egg-info/top_level.txt
8
+ tests/test_cipher.py
9
+ tests/test_keychain.py
10
+ tests/test_store.py
11
+ vault/__init__.py
12
+ vault/__main__.py
13
+ vault/cipher.py
14
+ vault/cli.py
15
+ vault/keychain.py
16
+ vault/runner.py
17
+ vault/store.py
18
+ vault/ui/__init__.py
19
+ vault/ui/server.py
20
+ vault/ui/static/index.html
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ vault = vault.cli:main
@@ -0,0 +1 @@
1
+ vault
@@ -0,0 +1,24 @@
1
+ [build-system]
2
+ requires = ["setuptools>=61.0"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "hushbox"
7
+ version = "0.1.0"
8
+ description = "A zero-dependency secrets manager built entirely from the Python standard library"
9
+ readme = "README.md"
10
+ requires-python = ">=3.10"
11
+ authors = [{name = "Pranav Salian"}]
12
+
13
+ [project.urls]
14
+ Repository = "https://github.com/Pranav-s-salian/Vault-ai"
15
+
16
+ [project.scripts]
17
+ vault = "vault.cli:main"
18
+
19
+ [tool.setuptools.packages.find]
20
+ include = ["vault*"]
21
+ exclude = ["tests*"]
22
+
23
+ [tool.setuptools.package-data]
24
+ vault = ["ui/static/*.html"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+