Catalog npm
Back to packageRELEASE DETAILS

1.0.1

npm

@0ribi/lenver

Encrypted environment variable vault that stores secrets on USB drives or explicit folders.

Published20 Mar 2026
Direct dependencies14
Transitive dependenciesNot calculated

README

Current package documentation

Lenver

Encrypted environment variable vault that stores secrets on USB drives or explicit folders.

Features

  • Encrypted Storage: AES-256-GCM encryption with scrypt key derivation
  • USB Drive Support: Automatically detects removable drives on Linux and stores vault files
  • Password Protection: Secure vault access with password + optional hint
  • Export Support: Export environment variables directly to shell
  • TUI Interface: Interactive terminal UI for managing secrets

Quick Start

  1. Install dependencies:

    bun install
    
  2. Run the interactive TUI to create your vault:

    bun run vault.tsx
    
  3. Add your secrets (API keys, passwords, tokens, etc.)

  4. Export to your shell:

    eval "$(bun run vault.tsx --export)"
    
  5. Add to your shell config (.bashrc, .zshrc, etc.) for automatic loading:

    eval "$(bunx lenver --export)"
    

Installation

From source

bun install
bunx lenver

Global install

bun add -g lenver
lenver

Usage

Interactive Mode (TUI)

bun run vault.tsx
# or
bunx lenver

Export Mode

Export secrets to current shell:

eval "$(bunx lenver --export)"

Select a specific drive:

bunx lenver --export --drive /media/usb

Commands

  • --export, -e - Export keys to stdout (for eval)
  • --drive, -d <path> - Force vault directory

Examples

Adding secrets in TUI

Run the interactive interface to add, view, edit, or delete secrets:

bun run vault.tsx

Exporting all secrets

eval "$(bunx lenver --export)"

Using a specific USB drive

eval "$(bunx lenver --export --drive /media/usb)"

Using with a specific vault file

eval "$(bunx lenver --export --drive /path/to/custom/vault)"

Common shell integrations

Bash (.bashrc):

# Load Lenver vault on shell startup
eval "$(lenver --export 2>/dev/null)"

Zsh (.zshrc):

# Load Lenver vault on shell startup
eval "$(lenver --export 2>/dev/null)"

Fish (config.fish):

# Load Lenver vault on shell startup
eval (lenver --export 2>/dev/null)

Environment-specific vaults

Use different drives for different projects:

# Project A vault
eval "$(lenver --export --drive /media/usb-a)"

# Project B vault  
eval "$(lenver --export --drive /media/usb-b)"

Platform Support

  • Linux: supported for automatic removable-drive detection
  • macOS / other Unix-like systems: best-effort manual mount scanning plus --drive
  • Windows: not supported in this pass

Security

  • Encryption: AES-256-GCM
  • Key Derivation: scrypt (N=131072, r=8, p=1)
  • File Permissions: Vault files are saved with 0o600 (owner read/write only)

File Structure

  • vault.tsx - CLI entry point
  • crypto.ts - Vault manager and compatibility exports
  • vault-format.ts - Encryption, schema validation, and export formatting
  • drive-detection.ts - Drive detection helpers
  • config-paths.ts - Config migration and last-vault lookup
  • ui.tsx - Terminal UI components

License

MIT

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 14

Native requirements
14 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
ink
Environment
{
  "local_name": "ink",
  "alias": false,
  "peer_metadata": null
}
^6.7.0runtime
zod
Environment
{
  "local_name": "zod",
  "alias": false,
  "peer_metadata": null
}
^4.3.6runtime
react
Environment
{
  "local_name": "react",
  "alias": false,
  "peer_metadata": null
}
^19.2.4runtime
prompts
Environment
{
  "local_name": "prompts",
  "alias": false,
  "peer_metadata": null
}
^2.4.2runtime
commander
Environment
{
  "local_name": "commander",
  "alias": false,
  "peer_metadata": null
}
^14.0.3runtime
clipboardy
Environment
{
  "local_name": "clipboardy",
  "alias": false,
  "peer_metadata": null
}
^5.3.0runtime
ink-spinner
Environment
{
  "local_name": "ink-spinner",
  "alias": false,
  "peer_metadata": null
}
^5.0.0runtime
ink-big-text
Environment
{
  "local_name": "ink-big-text",
  "alias": false,
  "peer_metadata": null
}
^2.0.0runtime
ink-text-input
Environment
{
  "local_name": "ink-text-input",
  "alias": false,
  "peer_metadata": null
}
^6.0.0runtime
ink-select-input
Environment
{
  "local_name": "ink-select-input",
  "alias": false,
  "peer_metadata": null
}
^6.2.0runtime
@types/bun
Environment
{
  "local_name": "@types/bun",
  "alias": false,
  "peer_metadata": null
}
latestdevelopment
@types/react
Environment
{
  "local_name": "@types/react",
  "alias": false,
  "peer_metadata": null
}
^19.2.14development
@types/prompts
Environment
{
  "local_name": "@types/prompts",
  "alias": false,
  "peer_metadata": null
}
^2.4.9development
typescript
Environment
{
  "local_name": "typescript",
  "alias": false,
  "peer_metadata": null
}
^5peer

Distribution files

1 collected
Distribution 1

Source distribution

Source file
Checksums from source
{
  "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
}

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 22:15 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:d4ec4326c48ca7c49fc18603354eda4fa589bf6201444a445256023e8a8be4ea

Other collected versions

1.0.320 Mar1.0.220 MarView all collected versions →