sefy-cli 0.2.0 → 0.3.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.
Files changed (2) hide show
  1. package/README.md +35 -0
  2. package/package.json +43 -43
package/README.md CHANGED
@@ -134,6 +134,34 @@ pass --i-know-this-writes-plaintext to go ahead
134
134
 
135
135
  Full command reference: **[lacodda.github.io/sefy](https://lacodda.github.io/sefy/)**.
136
136
 
137
+ ## Transports
138
+
139
+ Carrying a vault to another machine is the job of a **plugin**: any executable
140
+ named `sefy-plugin-*`, found in sefy's data directory or on `PATH`. sefy knows
141
+ nothing about git, FTP or any cloud drive - it asks a plugin what it can do and
142
+ what happened.
143
+
144
+ ```
145
+ $ sefy plugin list
146
+ ftp 0.2.1 push
147
+ future 9.0.0 unusable: it speaks protocol 99 and this build speaks 1
148
+ github 0.1.0 pull, push
149
+ ```
150
+
151
+ A transport is handed the **path of the sealed file** and nothing else - no
152
+ master password, no key, no item. What it carries is what anyone would find on
153
+ your disk: a blob it cannot read. That is also why a plugin cannot merge; it
154
+ fetches the other copy to a file, and `sefy merge` folds the two together where
155
+ both sides can actually be read.
156
+
157
+ Broken plugins are listed with the reason rather than skipped: an omitted line
158
+ would look exactly like a plugin that was never installed.
159
+
160
+ The protocol is small enough to implement in a shell script - manifest on
161
+ `--manifest`, one JSON request on stdin for `run`. Writing one:
162
+ [plugin reference](https://lacodda.github.io/sefy/reference/plugin/) ·
163
+ [ADR-0002](https://github.com/lacodda/sefy/blob/main/docs/adr/0002-plugin-protocol.md).
164
+
137
165
  ## How it works
138
166
 
139
167
  - The master password is stretched into a key with **Argon2id**.
@@ -164,6 +192,8 @@ macOS / Linux:
164
192
  curl -fsSL https://raw.githubusercontent.com/lacodda/sefy/main/tools/install.sh | sh
165
193
  ```
166
194
 
195
+ On Windows use the PowerShell line above: `install.sh` carries the macOS and Linux builds only, and run from Git Bash it stops with a pointer back here.
196
+
167
197
  **cargo** - `cargo install sefy`
168
198
 
169
199
  **npm** - `npm install -g sefy-cli`
@@ -190,6 +220,11 @@ The database inside the ciphertext is versioned separately, and it does move:
190
220
  from 0.1.x opens, is migrated on the way in, and is still readable by 0.1.x
191
221
  afterwards - the file on disk did not change shape.
192
222
 
223
+ The **plugin protocol is at version 1** as of 0.3.0. Optional fields may be
224
+ added to the manifest without breaking a plugin that predates them; changing
225
+ what an existing field means would arrive as version 2, with both accepted for a
226
+ time.
227
+
193
228
  Released versions and what landed in each: [CHANGELOG on the Releases page](https://github.com/lacodda/sefy/releases).
194
229
 
195
230
  ## Building
package/package.json CHANGED
@@ -1,43 +1,43 @@
1
- {
2
- "name": "sefy-cli",
3
- "version": "0.2.0",
4
- "sefy": {
5
- "binary": "v0.2.0"
6
- },
7
- "description": "An inconspicuous encrypted store for notes, credentials and files",
8
- "license": "MIT",
9
- "author": "Kirill Lakhtachev <lahtachev@gmail.com> (https://lacodda.com)",
10
- "homepage": "https://lacodda.github.io/sefy/",
11
- "repository": {
12
- "type": "git",
13
- "url": "git+https://github.com/lacodda/sefy.git"
14
- },
15
- "keywords": [
16
- "cli",
17
- "secrets",
18
- "password-manager",
19
- "encryption",
20
- "vault"
21
- ],
22
- "bin": {
23
- "sefy": "run.js"
24
- },
25
- "files": [
26
- "download.js",
27
- "install.js",
28
- "run.js",
29
- "README.md"
30
- ],
31
- "scripts": {
32
- "prepack": "node -e \"require('fs').copyFileSync('../README.md','README.md')\"",
33
- "postinstall": "node install.js"
34
- },
35
- "os": [
36
- "win32",
37
- "darwin",
38
- "linux"
39
- ],
40
- "engines": {
41
- "node": ">=18"
42
- }
43
- }
1
+ {
2
+ "name": "sefy-cli",
3
+ "version": "0.3.1",
4
+ "sefy": {
5
+ "binary": "v0.3.1"
6
+ },
7
+ "description": "An inconspicuous encrypted store for notes, credentials and files",
8
+ "license": "MIT",
9
+ "author": "Kirill Lakhtachev <lahtachev@gmail.com> (https://lacodda.com)",
10
+ "homepage": "https://lacodda.github.io/sefy/",
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "git+https://github.com/lacodda/sefy.git"
14
+ },
15
+ "keywords": [
16
+ "cli",
17
+ "secrets",
18
+ "password-manager",
19
+ "encryption",
20
+ "vault"
21
+ ],
22
+ "bin": {
23
+ "sefy": "run.js"
24
+ },
25
+ "files": [
26
+ "download.js",
27
+ "install.js",
28
+ "run.js",
29
+ "README.md"
30
+ ],
31
+ "scripts": {
32
+ "prepack": "node -e \"require('fs').copyFileSync('../README.md','README.md')\"",
33
+ "postinstall": "node install.js"
34
+ },
35
+ "os": [
36
+ "win32",
37
+ "darwin",
38
+ "linux"
39
+ ],
40
+ "engines": {
41
+ "node": ">=18"
42
+ }
43
+ }