{"_id":"@1time/cli","_rev":"8-c5c82faa1213c8a698f869744007c003","name":"@1time/cli","dist-tags":{"latest":"0.6.3"},"versions":{"0.1.0":{"name":"@1time/cli","version":"0.1.0","_id":"@1time/cli@0.1.0","maintainers":[{"name":"shingrus","email":"shingrus@gmail.com"}],"bin":{"1time":"cli/index.mjs"},"dist":{"shasum":"e19580a42b9d3e359bdba6a20c280c8f13fab929","tarball":"https://registry.npmjs.org/@1time/cli/-/cli-0.1.0.tgz","fileCount":6,"integrity":"sha512-3/5VEwixH8cDDOLF1PpQ0EOyz8km6S35s/Lk+xTQtdHQf2ug+yICyO7lssH7ub4F3yvPP3RkyZXn7z9N2hvOgQ==","signatures":[{"sig":"MEQCIF3lPwW8DLZOBImdZczqchBfUERFaxvlkwd62V1PoO/PAiAtIuV00Sjp09GGG7Y8bNdbXX88NU8JAikc2Sm5sS57tQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23600},"type":"module","engines":{"node":">=20"},"gitHead":"2816248ee5c954d4c70cc55f29964bbb369f9208","scripts":{"test":"node --test cli/*.test.mjs"},"_npmUser":{"name":"shingrus","email":"shingrus@gmail.com"},"_npmVersion":"11.6.2","description":"1time command-line client","directories":{},"_nodeVersion":"25.2.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cli_0.1.0_1774133780642_0.9903715879577597","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@1time/cli","version":"0.2.0","keywords":["1time","1time.io","cli","one-time secret","secret sharing","self-destructing links","encrypted links","password sharing","api key sharing","security"],"_id":"@1time/cli@0.2.0","maintainers":[{"name":"shingrus","email":"shingrus@gmail.com"}],"homepage":"https://1time.io","bugs":{"url":"https://github.com/shingrus/1time/issues"},"bin":{"1time":"index.mjs"},"dist":{"shasum":"01f44f6b7a34c6787fee9b216383a4525b3e0127","tarball":"https://registry.npmjs.org/@1time/cli/-/cli-0.2.0.tgz","fileCount":5,"integrity":"sha512-+6vVIG9e4SO5HTggaidBYy9azFF1MGe6WKlspWR8RtUgDmvHJ2ncgx0/ZadoiANbjiYTIMK06hcxAiGci07NoA==","signatures":[{"sig":"MEQCIHfuhrd1+EhEgf2GZTwwS+f6Rly3xYuEfecq5MZ5V2vUAiBy1R2LNBZ8WA6FHcns3dbwB9K1/O3r9o2Voe+JYNQt3A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18845},"type":"module","engines":{"node":">=20"},"gitHead":"9f16ff4cf0f2f9ff292195e5e75e664468791240","scripts":{"test":"node --test ./lib.test.mjs","prepack":"npm run sync:protocol","pretest":"npm run sync:protocol","pack:dry":"npm pack --dry-run","sync:protocol":"node ./scripts/sync-protocol.mjs"},"_npmUser":{"name":"shingrus","email":"shingrus@gmail.com"},"repository":{"url":"git+https://github.com/shingrus/1time.git","type":"git","directory":"cli"},"_npmVersion":"11.6.2","description":"Command-line client for end-to-end encrypted one-time secret sharing on 1time.io","directories":{},"_nodeVersion":"25.2.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cli_0.2.0_1774170042530_0.42656660954630454","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@1time/cli","version":"0.4.0","keywords":["1time","1time.io","cli","one-time secret","secret sharing","self-destructing links","encrypted links","password sharing","api key sharing","security"],"_id":"@1time/cli@0.4.0","maintainers":[{"name":"shingrus","email":"shingrus@gmail.com"}],"homepage":"https://1time.io","bugs":{"url":"https://github.com/shingrus/1time/issues"},"bin":{"1time":"index.mjs"},"dist":{"shasum":"4cd86fb3910c88976effb4057667cbe91cbc2bc4","tarball":"https://registry.npmjs.org/@1time/cli/-/cli-0.4.0.tgz","fileCount":5,"integrity":"sha512-e4gYMWRxc0I8i4nbinYiLvJda5RqjRVZkcbTZi+Y7gizzjLLCnWeladw4q4BgYiEnyf4f86GUQX8ANffHNZZeQ==","signatures":[{"sig":"MEUCIQCiXeWY1hLhkwssuLfbXVI9y6Cg6eLGntZL5YijeYPgFQIgN6rdaSfwdu37RaWg99m8dvWNmv9DceYtASEMrGSAYm4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30361},"type":"module","engines":{"node":">=20"},"gitHead":"185c5ce4888bb1b63bb027eff113bb484b977d4b","scripts":{"test":"node --test ./lib.test.mjs","prepack":"npm run sync:protocol","pretest":"npm run sync:protocol","pack:dry":"npm pack --dry-run","sync:protocol":"node ./scripts/sync-protocol.mjs"},"_npmUser":{"name":"shingrus","email":"shingrus@gmail.com"},"repository":{"url":"git+https://github.com/shingrus/1time.git","type":"git","directory":"cli"},"_npmVersion":"11.6.2","description":"Command-line client for end-to-end encrypted one-time secret sharing on 1time.io","directories":{},"_nodeVersion":"25.2.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cli_0.4.0_1775325200465_0.13307134737931814","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@1time/cli","version":"0.5.0","keywords":["1time","1time.io","cli","one-time secret","secret sharing","self-destructing links","encrypted links","password sharing","api key sharing","security"],"_id":"@1time/cli@0.5.0","maintainers":[{"name":"shingrus","email":"shingrus@gmail.com"}],"homepage":"https://1time.io","bugs":{"url":"https://github.com/shingrus/1time/issues"},"bin":{"1time":"index.mjs"},"dist":{"shasum":"ccb007ab1a8bce50ab9bc01126fe89fb092effd9","tarball":"https://registry.npmjs.org/@1time/cli/-/cli-0.5.0.tgz","fileCount":5,"integrity":"sha512-HNF89Kbt5hMQKX13aoV5t8Xxj6UDzpq2xkv3gTIQvOv6VqhMYv+rpSXLqf1o3q3+ShVETEImd9G2M4sI0/tzCA==","signatures":[{"sig":"MEUCIQDW58HQEKdM5ubYEv0Ud+JwIAQGW+raehzx6NR43RPQUwIgK3ALC7E0k3c8hEa9Ol8cwS+E34CMEgRU5y7rjtxkCPY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32185},"type":"module","engines":{"node":">=20"},"gitHead":"3f9d4287c07e4e96133f70bd02ed8b48e6d75dce","scripts":{"test":"node --test ./lib.test.mjs","prepack":"npm run sync:protocol","pretest":"npm run sync:protocol","pack:dry":"npm pack --dry-run","sync:protocol":"node ./scripts/sync-protocol.mjs"},"_npmUser":{"name":"shingrus","email":"shingrus@gmail.com"},"repository":{"url":"git+https://github.com/shingrus/1time.git","type":"git","directory":"cli"},"_npmVersion":"11.14.1","description":"Command-line client for end-to-end encrypted one-time secret sharing on 1time.io","directories":{},"_nodeVersion":"25.2.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cli_0.5.0_1779011523766_0.7130664594257377","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@1time/cli","version":"0.6.0","keywords":["1time","1time.io","cli","one-time secret","secret sharing","self-destructing links","encrypted links","password sharing","api key sharing","security"],"_id":"@1time/cli@0.6.0","maintainers":[{"name":"shingrus","email":"shingrus@gmail.com"}],"homepage":"https://1time.io","bugs":{"url":"https://github.com/shingrus/1time/issues"},"bin":{"1time":"index.mjs"},"dist":{"shasum":"88e9d146c3ecee31d55b9a9c985c5051188031b5","tarball":"https://registry.npmjs.org/@1time/cli/-/cli-0.6.0.tgz","fileCount":5,"integrity":"sha512-g+GGF+xRSRhqdZVT548m3YJZZ9Blr4iuagZ4Q/az2tjo0kdhic4RwvSzcE0gy+Hzy+LWhFnKQkgVvNLP7x97Aw==","signatures":[{"sig":"MEUCIBx0Mhpf88dNJ/OBswijSS2FIdTmUyjok9iwZAu4DdnYAiEAlr5DGSBeH4YEqepGHNiXTQafoRImY187N8nkKf7q5FI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35832},"type":"module","engines":{"node":">=20"},"gitHead":"81be005411df553486f0aa77d864d8c3ce64bd8d","scripts":{"test":"node --test ./lib.test.mjs","prepack":"npm run sync:protocol","pretest":"npm run sync:protocol","pack:dry":"npm pack --dry-run","sync:protocol":"node ./scripts/sync-protocol.mjs"},"_npmUser":{"name":"shingrus","email":"shingrus@gmail.com"},"repository":{"url":"git+https://github.com/shingrus/1time.git","type":"git","directory":"cli"},"_npmVersion":"11.18.0","description":"Command-line client for end-to-end encrypted one-time secret sharing on 1time.io","directories":{},"_nodeVersion":"26.1.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cli_0.6.0_1785938750089_0.9813920352930843","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@1time/cli","version":"0.6.1","keywords":["1time","1time.io","cli","one-time secret","secret sharing","self-destructing links","encrypted links","password sharing","api key sharing","security"],"_id":"@1time/cli@0.6.1","maintainers":[{"name":"shingrus","email":"shingrus@gmail.com"}],"homepage":"https://1time.io","bugs":{"url":"https://github.com/shingrus/1time/issues"},"bin":{"1time":"index.mjs"},"dist":{"shasum":"6993bf1c6ecde289de83b796e82e6bc38073019b","tarball":"https://registry.npmjs.org/@1time/cli/-/cli-0.6.1.tgz","fileCount":5,"integrity":"sha512-LrI1JWqJnxzb9AuY8BKhiSEfs7jgcgKG3XxSqTR2bMNKh7W9VK8kkIO9xSU5zr1kH7mn2q4j01/bNwbZWZZm0g==","signatures":[{"sig":"MEUCIQDNimGlL0rU01uYuhmxOGQL3bhngihh8qMW20+kIUze0QIgZNV3O2hJKXl+Qus657bGAATaCfHZAi/16RZwuVyUuSw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36092},"type":"module","engines":{"node":">=20"},"gitHead":"32ac49767a149711a131ff7d417e6638c37fde7e","scripts":{"test":"node --test ./lib.test.mjs","prepack":"npm run sync:protocol","pretest":"npm run sync:protocol","pack:dry":"npm pack --dry-run","sync:protocol":"node ./scripts/sync-protocol.mjs"},"_npmUser":{"name":"shingrus","email":"shingrus@gmail.com"},"repository":{"url":"git+https://github.com/shingrus/1time.git","type":"git","directory":"cli"},"_npmVersion":"11.18.0","description":"Command-line client for end-to-end encrypted one-time secret sharing on 1time.io","directories":{},"_nodeVersion":"26.1.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cli_0.6.1_1785992987254_0.30014460550842736","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"@1time/cli","version":"0.6.2","keywords":["1time","1time.io","cli","one-time secret","secret sharing","self-destructing links","encrypted links","password sharing","api key sharing","security"],"_id":"@1time/cli@0.6.2","maintainers":[{"name":"shingrus","email":"shingrus@gmail.com"}],"homepage":"https://1time.io","bugs":{"url":"https://github.com/shingrus/1time/issues"},"bin":{"1time":"index.mjs"},"dist":{"shasum":"875df7a843fa2812ecc403dcdd7dae1ec7d781b0","tarball":"https://registry.npmjs.org/@1time/cli/-/cli-0.6.2.tgz","fileCount":5,"integrity":"sha512-FIvZaarNfGlvir2tqtzMN0pkbZHhbKUkAYRoqSEEfPggEqwhbFbN54Q8m8WSK3c/Lnfbo/cKo6Vy11dLZR3crQ==","signatures":[{"sig":"MEUCIQC+Mb9XjXKtVymS/WrLI5YQUikGi0JtiIMbxeUcdUJo4wIgDrIKMCXRtNk2BM8Ngn8wgjbF+aCrk/E2JcVWdAoW7P4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37576},"type":"module","engines":{"node":">=20"},"gitHead":"f840ec750e8a4c932569eb85bee9184d908ce79b","scripts":{"test":"node --test ./lib.test.mjs","prepack":"npm run sync:protocol","pretest":"npm run sync:protocol","pack:dry":"npm pack --dry-run","sync:protocol":"node ./scripts/sync-protocol.mjs"},"_npmUser":{"name":"shingrus","email":"shingrus@gmail.com"},"repository":{"url":"git+https://github.com/shingrus/1time.git","type":"git","directory":"cli"},"_npmVersion":"11.6.2","description":"Command-line client for end-to-end encrypted one-time secret sharing on 1time.io","directories":{},"_nodeVersion":"25.1.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cli_0.6.2_1788108665059_0.1619221937724038","host":"s3://npm-registry-packages-npm-production"}},"0.6.3":{"_id":"@1time/cli@0.6.3","bin":{"1time":"index.mjs"},"bugs":{"url":"https://github.com/shingrus/1time/issues"},"dist":{"shasum":"d121be20764f6938d59461ebc57b4d341f38d1bc","tarball":"https://registry.npmjs.org/@1time/cli/-/cli-0.6.3.tgz","fileCount":5,"integrity":"sha512-XrVGoRAxvNmDeJB8orqFicUUDM4VUg4uYL37jQZcCC/xR2LyjhuN+dzxuzJJbVQmo13Uz7y5mwLPeo231Vhf1g==","signatures":[{"sig":"MEQCIE79F/+b/xW6HdZ3aHA+n3hydQ4qy+Z/eQv5O1+wlAn5AiATCbcvuXOh1K1grvlTGTpm/uUsNyEGEKwbnq+qTZ2Q7g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGRWd+ONvHbmkHKpz8J9XYxAWoMz11+wc1mjO2nu6ZZWAiEA4NzVS0R0cikedJ5dct81IERgLvj/kbDNWbiEmYCvBYg="}],"unpackedSize":38627},"name":"@1time/cli","type":"module","engines":{"node":">=20"},"gitHead":"2a04601fe5cb9bdf7fa1628e225d85cc62b15179","scripts":{"test":"node --test ./lib.test.mjs","prepack":"npm run sync:protocol","pretest":"npm run sync:protocol","pack:dry":"npm pack --dry-run","sync:protocol":"node ./scripts/sync-protocol.mjs"},"version":"0.6.3","_npmUser":{"name":"shingrus","email":"shingrus@gmail.com"},"homepage":"https://1time.io","keywords":["1time","1time.io","cli","one-time secret","secret sharing","self-destructing links","encrypted links","password sharing","api key sharing","security"],"repository":{"url":"git+https://github.com/shingrus/1time.git","type":"git","directory":"cli"},"_npmVersion":"11.6.2","description":"Command-line client for end-to-end encrypted one-time secret sharing on 1time.io","directories":{},"maintainers":[{"name":"shingrus","email":"shingrus@gmail.com"}],"_nodeVersion":"25.1.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cli_0.6.3_1788821745246_0.028842955846463125"}}},"time":{"created":"2026-03-21T22:56:20.547Z","modified":"2026-09-07T22:55:45.543Z","0.1.0":"2026-03-21T22:56:20.777Z","0.2.0":"2026-03-22T09:00:42.685Z","0.4.0":"2026-04-04T17:53:20.637Z","0.5.0":"2026-05-17T09:52:03.917Z","0.6.0":"2026-08-05T14:05:50.267Z","0.6.1":"2026-08-06T05:09:47.394Z","0.6.2":"2026-08-30T16:51:05.228Z","0.6.3":"2026-09-07T22:55:45.343Z"},"bugs":{"url":"https://github.com/shingrus/1time/issues"},"homepage":"https://1time.io","keywords":["1time","1time.io","cli","one-time secret","secret sharing","self-destructing links","encrypted links","password sharing","api key sharing","security"],"repository":{"url":"git+https://github.com/shingrus/1time.git","type":"git","directory":"cli"},"description":"Command-line client for end-to-end encrypted one-time secret sharing on 1time.io","maintainers":[{"name":"shingrus","email":"shingrus@gmail.com"}],"readme":"# 1time CLI\n\n`1time` is a command-line client for [1time.io](https://1time.io), an end-to-end encrypted one-time secret sharing service.\n\nUse it to share passwords, API keys, tokens, private notes, and other sensitive text as self-destructing links from your terminal.\nIt can also share encrypted files with one-time download links.\n\nPrefer the browser? The [1time Chrome extension](https://chromewebstore.google.com/detail/1time-%E2%80%94-one-time-secret-l/oclenaeccacnolionlpiefekmmbppgkb) turns any selected text into a one-time link from the right-click menu.\n\n## Why Use 1time CLI\n\n- End-to-end encrypted: the secret is encrypted locally before it is sent to the server.\n- One-time links: once the recipient opens the link, the stored payload is deleted.\n- Simple terminal workflow: pipe a secret in, get a secure link out.\n- Good for developer secrets: API keys, access tokens, SSH snippets, passwords, and incident-response notes.\n\n## Quick Start\n\nInstall from npm:\n\n```bash\nnpm install -g @1time/cli\n```\n\nCreate a one-time link from `stdin`:\n\n```bash\nprintf 'my-api-key' | 1time send\n```\n\nRead a one-time link:\n\n```bash\n1time read 'https://1time.io/v/#...'\n```\n\nCreate a one-time file link:\n\n```bash\n1time send-file ./backup-codes.txt\n```\n\nDownload a one-time file:\n\n```bash\n1time read-file 'https://1time.io/f/#...'\n```\n\n## How It Works\n\n1. You send a secret from your terminal.\n2. The CLI encrypts it locally using the same protocol as the web app.\n3. The backend stores only ciphertext plus a SHA-256 hash of the read token — never the token itself, so the stored record cannot read or destroy the secret.\n4. The recipient opens the one-time link and decrypts the payload with the key material stored in the URL fragment.\n\nThe server does not receive the plaintext secret.\n\n## Install\n\nFrom npm:\n\n```bash\nnpm install -g @1time/cli\n```\n\nFrom this repository:\n\n```bash\ncd cli\nnpm install -g .\n```\n\nRequires Node.js `20+`.\n\n## Commands\n\n### `1time send`\n\nCreate an encrypted one-time link.\n\nInput precedence:\n\n1. piped `stdin`\n2. `1TIME_SECRET`\n3. positional secret argument\n\nExamples:\n\n```bash\nprintf 'postgres://user:pass@host/db' | 1time send\n```\n\n```bash\n1TIME_SECRET='sk_live_123' 1time send\n```\n\n```bash\n1time send 'temporary-password-123'\n```\n\nUse a custom host:\n\n```bash\nprintf 'hello' | 1time send --host 1time.io\nprintf 'hello' | 1time send --host https://1time.io\nprintf 'hello' | 1time send --host http://127.0.0.1:8080\n```\n\nSet a custom expiry:\n\n```bash\nprintf 'hello' | 1time send --expires-in 23h\nprintf 'hello' | 1time send --expires-in 2d\nprintf 'hello' | 1time send --expires-in 2d23h\n```\n\nAllow more than one view before the link self-destructs:\n\n```bash\nprintf 'hello' | 1time send --views 3\n```\n\n### `1time read <link>`\n\nFetch and decrypt a one-time link.\n\nThe secret goes to `stdout`. The number of views left on the link is reported on `stderr`, so piping stays clean.\n\nExamples:\n\n```bash\n1time read 'https://1time.io/v/#...'\n```\n\n```bash\n1time read --host http://127.0.0.1:8080 'http://127.0.0.1:8080/v/#...'\n```\n\n### `1time send-file <path>`\n\nCreate an encrypted one-time file link.\n\nExamples:\n\n```bash\n1time send-file ./secret.pdf\n```\n\n```bash\n1TIME_PASSPHRASE='extra-passphrase' 1time send-file ./backup-codes.txt\n```\n\n```bash\n1time send-file --host http://127.0.0.1:8080 --passphrase 'extra-passphrase' ./report.zip\n```\n\n```bash\n1time send-file --expires-in 2d23h ./report.zip\n```\n\n```bash\n1time send-file --views 3 ./report.zip\n```\n\n### `1time read-file <link>`\n\nFetch, decrypt, and save a one-time file link.\n\nBy default, the file is written to the current directory using the original filename. The number of downloads left on the link is reported on `stderr`.\n\nExamples:\n\n```bash\n1time read-file 'https://1time.io/f/#...'\n```\n\n```bash\n1TIME_PASSPHRASE='extra-passphrase' 1time read-file 'https://1time.io/f/#...'\n```\n\n```bash\n1time read-file --out ./downloads/secret.pdf 'https://1time.io/f/#...'\n```\n\n## Command Reference\n\n- `--host <host-or-origin>`\n- `--expires-in <duration>` for `send` and `send-file`; supports `h` and `d`, for example `23h`, `2d`, or `2d23h`; default is `1d`; maximum is `30d`\n- `--views <N>` for `send` and `send-file`; how many times the link can be opened (downloads for files) before it self-destructs; default is `1`; maximum is `10`\n- `--passphrase <passphrase>` for `send-file` and `read-file`\n- `--out <path>` for `read-file`\n- `-h`, `--help`\n\n## Host Rules\n\n- default host is `1time.io`\n- bare hosts like `1time.io` are normalized to `https://1time.io`\n- `https://...` is accepted\n- `http://...` is rejected except for loopback hosts such as `127.0.0.1`\n\n## Security Notes\n\n- Prefer `stdin` for `send`.\n- `1time send 'secret'` is supported for convenience, but it is insecure because command-line arguments can leak through shell history and process listings.\n- `1time read <link>` also places the full secret link in command history and process listings. In this protocol, the URL fragment contains the decryption material.\n- `send-file` and `read-file` support optional passphrases via `--passphrase` or `1TIME_PASSPHRASE`.\n- `--expires-in` and `--views` are validated locally before the CLI sends the secret or file.\n\n## Current Limitations\n\n- `read` currently accepts the link as a command argument only\n\n## Local Development\n\nRun directly from the repository root:\n\n```bash\nnode cli/index.mjs --help\nprintf 'hello' | node cli/index.mjs send\nnode cli/index.mjs read 'https://1time.io/v/#...'\n```\n\nRun tests:\n\n```bash\ncd cli\nnpm test\n```\n\n## Release\n\nPublish from `cli/` so npm uses this README for the package page:\n\n```bash\ncd cli\nnpm login\nnpm pack --dry-run\nnpm publish --access public\n```\n\nThe package syncs the shared protocol before `npm test`, `npm pack`, and `npm publish`, so the published CLI includes the current encryption logic.\n","readmeFilename":"README.md"}