Metadata-Version: 2.4
Name: twinerd-browser-vault
Version: 0.1.0
Summary: Browser profile snapshots, session cookie migration, and credential vault for Chrome, Chromium, and Firefox
Author-email: Tomasz Sapletta <info@softreck.com>
License: Proprietary
Requires-Python: >=3.10
Description-Content-Type: text/markdown

# twinerd-browser-vault

Browser profile snapshots, session cookie migration, and credential vault management for Chrome, Chromium, and Firefox.

## Features

- **Profile Discovery & Inspection**: Locates and analyzes profile state and size for Firefox, Chromium, Google Chrome, Brave, Edge, Opera, and Vivaldi.
- **Session Continuity (Cookie Sync)**: Migrates authenticated session cookies from Firefox (`cookies.sqlite`) into Chromium/Chrome SQLite `Cookies` table (mapping 1601-epoch timestamps).
- **Profile Snapshotting & Restore**: Clean backups omitting ephemeral caches, temporary locks, and GPU cache files.
- **Credential & Password Extraction**: Extracts credentials from isolated Firefox profiles (`logins.json` and external decrypt tools) with host and provider matching.
- **Zero Mandatory External Dependencies**: Built with Python 3.10+ standard library (`sqlite3`, `pathlib`, `shutil`, `urllib.parse`).

## Installation

```bash
pip install -e /path/to/twinerd-browser-vault
```

## CLI Usage

```bash
# Detect browser profiles on current system
twinerd-browser-vault detect

# Inspect a profile directory
twinerd-browser-vault inspect firefox ~/.mozilla/firefox/default

# Snapshot profile omitting cache
twinerd-browser-vault snapshot chrome --account dev --dest ~/snapshots/

# Migrate session cookies from Firefox to Chromium for an account
twinerd-browser-vault sync-cookies --home /home/worker1 --provider anthropic
```

## Python API

```python
from twinerd_browser_vault import (
    detect_available_profiles,
    sync_firefox_cookies_to_chromium,
    create_profile_snapshot,
)

# Sync cookies
result = sync_firefox_cookies_to_chromium(
    home=Path("/home/worker1"),
    provider="chatgpt",
    only_missing=True,
)
```
