@gorlitzer-labs/comb 0.1.0 → 0.1.1
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 +14 -1
- package/package.json +1 -1
- package/src/backends/sops.mjs +2 -2
- package/src/realms.mjs +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# comb
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**the vault** — keep your keys out of your conversations. Keys by name, never by value.
|
|
4
4
|
|
|
5
5
|
You paste a Cloudflare token to an agent so it can do a job. That token is now in
|
|
6
6
|
a transcript file on your disk, in plaintext, forever. Do it enough times and you
|
|
@@ -19,6 +19,19 @@ comb run --with CF_API_TOKEN -- curl -H "Authorization: Bearer $CF_API_TOKEN" ..
|
|
|
19
19
|
comb audit
|
|
20
20
|
```
|
|
21
21
|
|
|
22
|
+
## Install
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
npm i -g @gorlitzer-labs/comb
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Also needs `sops` and `age` on your `PATH`, and Node 20+ — see [Requires](#requires)
|
|
29
|
+
below.
|
|
30
|
+
|
|
31
|
+
`comb` is part of the
|
|
32
|
+
[`gorlitzer-labs/seldon`](https://github.com/gorlitzer-labs/seldon/tree/main/modules/comb)
|
|
33
|
+
monorepo, at `modules/comb`.
|
|
34
|
+
|
|
22
35
|
## Why not a secrets server
|
|
23
36
|
|
|
24
37
|
Infisical and OpenBao are good. They are also a database, a cache, a patch
|
package/package.json
CHANGED
package/src/backends/sops.mjs
CHANGED
|
@@ -17,9 +17,9 @@
|
|
|
17
17
|
* matters. Everything else is recoverable; that is not. It never goes in the
|
|
18
18
|
* store, it never goes in the repo.
|
|
19
19
|
*/
|
|
20
|
-
import {
|
|
20
|
+
import { spawnSync } from "node:child_process";
|
|
21
21
|
import { existsSync, mkdirSync, writeFileSync, readFileSync, chmodSync } from "node:fs";
|
|
22
|
-
import { join
|
|
22
|
+
import { join } from "node:path";
|
|
23
23
|
import { homedir } from "node:os";
|
|
24
24
|
|
|
25
25
|
/** Where the encrypted store and the key live. Override for tests. */
|
package/src/realms.mjs
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
// Revoking a realm is re-encrypting the store WITHOUT its key — no secret has to
|
|
11
11
|
// be rotated, because that realm can no longer decrypt anything, old copies
|
|
12
12
|
// included (its key never changes what the current ciphertext is encrypted to).
|
|
13
|
-
import {
|
|
13
|
+
import { spawnSync } from "node:child_process";
|
|
14
14
|
import { readFileSync, writeFileSync, existsSync, mkdirSync, readdirSync, rmSync } from "node:fs";
|
|
15
15
|
import { join } from "node:path";
|
|
16
16
|
import { combHome, storePath, keyPath } from "./backends/sops.mjs";
|