{"_id":"@0ribi/lenver","_rev":"6-0c0469a017f0bf98eba0be19cb4e616b","name":"@0ribi/lenver","dist-tags":{"latest":"1.0.3"},"versions":{"1.0.1":{"name":"@0ribi/lenver","version":"1.0.1","_id":"@0ribi/lenver@1.0.1","maintainers":[{"name":"0ribi","email":"oribimegoodluck@gmail.com"}],"bin":{"lenver":"vault.tsx"},"dist":{"shasum":"db435b6f64f9443f439dfcb1e47a59a28aaf16f4","tarball":"https://registry.npmjs.org/@0ribi/lenver/-/lenver-1.0.1.tgz","fileCount":18,"integrity":"sha512-OFMQm0+uIRKErhiOL/N418TbNv4VWwxJXjGU120nGgL0CF7e1EpGDQR4tnGl9aoXAmsSMtNb27tn8uEYNMxoWQ==","signatures":[{"sig":"MEUCIQCZAnfU4k7EmAbpSbWLIHQ+y3f9orZYQ9H4nWuAWFf0NQIgAdoIzNYw5B+8iSJ8NNyTQhshiSKSGTBXlFDQJHftvnw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":89857},"type":"module","module":"index.ts","gitHead":"814c4941b2fd0311337f751cb893046f165189f5","scripts":{"test":"bun test","check":"bun run typecheck && bun run test","typecheck":"bunx tsc --noEmit"},"_npmUser":{"name":"0ribi","email":"oribimegoodluck@gmail.com"},"_npmVersion":"11.6.2","description":"Encrypted environment variable vault that stores secrets on USB drives or explicit folders.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"ink":"^6.7.0","zod":"^4.3.6","react":"^19.2.4","prompts":"^2.4.2","commander":"^14.0.3","clipboardy":"^5.3.0","ink-spinner":"^5.0.0","ink-big-text":"^2.0.0","ink-text-input":"^6.0.0","ink-select-input":"^6.2.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","@types/react":"^19.2.14","@types/prompts":"^2.4.9"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/lenver_1.0.1_1774032456019_0.12151489777636382","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@0ribi/lenver","version":"1.0.2","_id":"@0ribi/lenver@1.0.2","maintainers":[{"name":"0ribi","email":"oribimegoodluck@gmail.com"}],"bin":{"lenver":"vault.tsx"},"dist":{"shasum":"3a4cc5e88926af9deb62bc848919d88520d4a43a","tarball":"https://registry.npmjs.org/@0ribi/lenver/-/lenver-1.0.2.tgz","fileCount":17,"integrity":"sha512-ACxGN0X3a4gSxyniKoAtJfzL4Llexj7Rc42kczkm/0N2Gg6GnKhIHbN9K+NDtSlM1Phwq2HcaDwiQ8sg6++PVQ==","signatures":[{"sig":"MEUCIB10lGIuFmJs+kMjqsPGAWnaeor9HlRXiJ0BcX2lEe6eAiEA9qz5SJAU+vS3eBhyaVCFQZNUX+7VlN4MuLFYDCPieAY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":82837},"type":"module","module":"index.ts","gitHead":"814c4941b2fd0311337f751cb893046f165189f5","scripts":{"test":"bun test","check":"bun run typecheck && bun run test","typecheck":"bunx tsc --noEmit"},"_npmUser":{"name":"0ribi","email":"oribimegoodluck@gmail.com"},"_npmVersion":"11.6.2","description":"Encrypted environment variable vault that stores secrets on USB drives or explicit folders.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"ink":"^6.7.0","zod":"^4.3.6","react":"^19.2.4","prompts":"^2.4.2","commander":"^14.0.3","clipboardy":"^5.3.0","ink-spinner":"^5.0.0","ink-big-text":"^2.0.0","ink-text-input":"^6.0.0","ink-select-input":"^6.2.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","@types/react":"^19.2.14","@types/prompts":"^2.4.9"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/lenver_1.0.2_1774035164982_0.9881262206883823","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@0ribi/lenver","version":"1.0.3","module":"index.ts","type":"module","scripts":{"typecheck":"bunx tsc --noEmit","test":"bun test","check":"bun run typecheck && bun run test"},"bin":{"lenver":"vault.tsx"},"devDependencies":{"@types/bun":"latest","@types/prompts":"^2.4.9","@types/react":"^19.2.14"},"peerDependencies":{"typescript":"^5"},"dependencies":{"clipboardy":"^5.3.0","commander":"^14.0.3","ink":"^6.7.0","ink-big-text":"^2.0.0","ink-select-input":"^6.2.0","ink-spinner":"^5.0.0","ink-text-input":"^6.0.0","prompts":"^2.4.2","react":"^19.2.4","zod":"^4.3.6"},"gitHead":"fb48afeb13189a11330fbef4774b9cf13132d154","_id":"@0ribi/lenver@1.0.3","description":"Encrypted environment variable vault that stores secrets on USB drives or explicit folders.","_nodeVersion":"24.12.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-Haq8gWH2ZImPi8xnAljJ6d9UrVeb5zXugXqcYpOhb80Je60GVucd3I5/mTFAty8UpHdgXawK6BaA5VkaoKTaqA==","shasum":"36c01f5c18bd49fad0c1d6633d662a81dd00d909","tarball":"https://registry.npmjs.org/@0ribi/lenver/-/lenver-1.0.3.tgz","fileCount":17,"unpackedSize":83440,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC7iUkCHP7f1+WtHXBC5Bc4AAf0qTVW14uSY4ib1UZ3DwIhAN2rkIP3FLGpOb08M0R4hRT1QQfRHYWLWJDYr3e+eJ/d"}]},"_npmUser":{"name":"0ribi","email":"oribimegoodluck@gmail.com"},"directories":{},"maintainers":[{"name":"0ribi","email":"oribimegoodluck@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/lenver_1.0.3_1774038567186_0.8285833262931954"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-20T18:47:35.920Z","modified":"2026-03-20T20:29:27.468Z","1.0.0":"2026-03-20T18:38:27.891Z","1.0.1":"2026-03-20T18:47:36.156Z","1.0.2":"2026-03-20T19:32:45.106Z","1.0.3":"2026-03-20T20:29:27.353Z"},"description":"Encrypted environment variable vault that stores secrets on USB drives or explicit folders.","maintainers":[{"name":"0ribi","email":"oribimegoodluck@gmail.com"}],"readme":"# Lenver\n\nEncrypted environment variable vault that stores secrets on USB drives or explicit folders.\n\n## Features\n\n- **Encrypted Storage**: AES-256-GCM encryption with scrypt key derivation\n- **USB Drive Support**: Automatically detects removable drives on Linux and stores vault files\n- **Password Protection**: Secure vault access with password + optional hint\n- **Export Support**: Export environment variables directly to shell\n- **TUI Interface**: Interactive terminal UI for managing secrets\n\n## Quick Start\n\n1. **Install dependencies:**\n   ```bash\n   bun install\n   ```\n\n2. **Run the interactive TUI to create your vault:**\n   ```bash\n   bun run vault.tsx\n   ```\n\n3. **Add your secrets** (API keys, passwords, tokens, etc.)\n\n4. **Export to your shell:**\n   ```bash\n   eval \"$(bun run vault.tsx --export)\"\n   ```\n\n5. **Add to your shell config** (`.bashrc`, `.zshrc`, etc.) for automatic loading:\n   ```bash\n   eval \"$(bunx lenver --export)\"\n   ```\n\n## Installation\n\n### From source\n\n```bash\nbun install\nbunx lenver\n```\n\n### Global install\n\n```bash\nbun add -g lenver\nlenver\n```\n\n## Usage\n\n### Interactive Mode (TUI)\n\n```bash\nbun run vault.tsx\n# or\nbunx lenver\n```\n\n### Export Mode\n\nExport secrets to current shell:\n\n```bash\neval \"$(bunx lenver --export)\"\n```\n\nSelect a specific drive:\n\n```bash\nbunx lenver --export --drive /media/usb\n```\n\n## Commands\n\n- `--export, -e` - Export keys to stdout (for eval)\n- `--drive, -d <path>` - Force vault directory\n\n## Examples\n\n### Adding secrets in TUI\n\nRun the interactive interface to add, view, edit, or delete secrets:\n\n```bash\nbun run vault.tsx\n```\n\n### Exporting all secrets\n\n```bash\neval \"$(bunx lenver --export)\"\n```\n\n### Using a specific USB drive\n\n```bash\neval \"$(bunx lenver --export --drive /media/usb)\"\n```\n\n### Using with a specific vault file\n\n```bash\neval \"$(bunx lenver --export --drive /path/to/custom/vault)\"\n```\n\n### Common shell integrations\n\n**Bash (.bashrc):**\n```bash\n# Load Lenver vault on shell startup\neval \"$(lenver --export 2>/dev/null)\"\n```\n\n**Zsh (.zshrc):**\n```bash\n# Load Lenver vault on shell startup\neval \"$(lenver --export 2>/dev/null)\"\n```\n\n**Fish (config.fish):**\n```fish\n# Load Lenver vault on shell startup\neval (lenver --export 2>/dev/null)\n```\n\n### Environment-specific vaults\n\nUse different drives for different projects:\n\n```bash\n# Project A vault\neval \"$(lenver --export --drive /media/usb-a)\"\n\n# Project B vault  \neval \"$(lenver --export --drive /media/usb-b)\"\n```\n\n## Platform Support\n\n- **Linux**: supported for automatic removable-drive detection\n- **macOS / other Unix-like systems**: best-effort manual mount scanning plus `--drive`\n- **Windows**: not supported in this pass\n\n## Security\n\n- **Encryption**: AES-256-GCM\n- **Key Derivation**: scrypt (N=131072, r=8, p=1)\n- **File Permissions**: Vault files are saved with 0o600 (owner read/write only)\n\n## File Structure\n\n- `vault.tsx` - CLI entry point\n- `crypto.ts` - Vault manager and compatibility exports\n- `vault-format.ts` - Encryption, schema validation, and export formatting\n- `drive-detection.ts` - Drive detection helpers\n- `config-paths.ts` - Config migration and last-vault lookup\n- `ui.tsx` - Terminal UI components\n\n## License\n\nMIT\n","readmeFilename":"README.md"}