npm package: @hanoilab/bpacker
Description: Pack, encrypt, and sync browser profiles across machines
Author: phong.nguyen02
Latest version: 1.0.12

# BrowserPack

Pack, encrypt, and sync browser profiles across machines. No re-login needed.

## How it works

1. **Pack** your browser profile (cookies, sessions, extensions, bookmarks) into an encrypted archive
2. **Push** it to the cloud via your BrowserPack account
3. **Pull** it on another machine and restore — all sessions intact

## Install

```bash
npm install -g bpacker
```

Requires Node.js 18+.

## Quick start

```bash
# Login
bpacker login

# See local browser profiles
bpacker profile ls

# Pack and upload a profile
bpacker pack

# On another machine: login and pull
bpacker login
bpacker remote profile ls
bpacker pull --name <backup-name>
```

## CLI Commands

### Auth

| Command | Description |
|---------|-------------|
| `bpacker login` | Login via browser (Google or email) |
| `bpacker login --email` | Login with email/password in terminal |
| `bpacker logout` | Clear saved credentials |
| `bpacker whoami` | Show current logged-in user |

### Local profiles

| Command | Description |
|---------|-------------|
| `bpacker profile ls` | List all local browser profiles |
| `bpacker profile ls --browser chrome` | Filter by browser |
| `bpacker profile rm` | Remove a local profile (interactive) |
| `bpacker pack` | Interactive: pick profile, encrypt, upload |
| `bpacker pack --browser chrome --profile "base.vn"` | Pack specific profile |
| `bpacker pack --local-only -o backup.bpak` | Save locally only |

### Remote backups

| Command | Description |
|---------|-------------|
| `bpacker remote profile ls` | List backups on cloud |
| `bpacker pull --id <id>` | Pull backup by ID |
| `bpacker pull --name <name>` | Pull backup by name |
| `bpacker pull --from-file backup.bpak` | Restore from local file |
| `bpacker remote rm <id>` | Delete a backup from cloud |

### Pack options

```
--browser <type>       chrome, brave, edge, chromium
--profile <name>       Profile name
--preset <preset>      full, sessions-only, bookmarks-only (default: sessions-only)
--include-extensions   Include browser extensions
--include-history      Include browsing history
--include-passwords    Include saved passwords (OS-bound, won't work on other machines)
--password <pass>      Encryption password (prompted if omitted)
--no-encrypt           Skip encryption (not recommended)
--local-only           Save locally without uploading
--name <name>          Custom backup name
```

### Pull behavior

- **First pull**: Creates a new browser profile (visible in Chrome profile switcher)
- **Same backup pulled again**: Updates the previously created profile
- **`--force`**: Overwrites the target profile instead of creating new

## Supported browsers

- Google Chrome
- Brave
- Microsoft Edge
- Chromium

## Supported platforms

- Linux
- macOS
- Windows

## Security

- **AES-256-GCM** encryption with **Argon2id** key derivation
- Password never stored — prompted each time
- Data encrypted **before** leaving your machine
- Saved passwords (Login Data) are OS-keychain bound and will **not** transfer between machines

## License

MIT