Metadata-Version: 2.4
Name: unstrap
Version: 0.3.2
Summary: Your device data, set free. Copies everything your Garmin device records, straight off the device over USB.
Author: SweatStack
License-Expression: MIT
License-File: LICENSE
Classifier: Environment :: Console
Classifier: Operating System :: MacOS
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.10
Requires-Dist: httpx<1,>=0.28
Description-Content-Type: text/markdown
License-File: mtp-rs/LICENSE-MIT
License-File: mtp-rs/LICENSE-APACHE

# unstrap

Your device data, set free. Install once (macOS, Linux):

```sh
curl -LsSf https://uvx.sh/unstrap/install.sh | sh
```

This installs [uv](https://docs.astral.sh/uv/) if it isn't there yet, then the `unstrap` command
(`uv tool install unstrap@latest`). Run the same line again to update; `uv tool uninstall unstrap`
removes it. Already use uv? `uvx unstrap` works without installing.

Then plug in your Garmin device and run:

```sh
unstrap
```

It copies everything new off the device over USB, uploads it, and tells you when you can unplug.

## Sync whenever a device is connected

```sh
unstrap listen           # keep running; sync each Garmin device when you plug it in
unstrap autostart        # run `listen` in the background at login (macOS and Linux)
unstrap autostart --off
```

`autostart` registers a LaunchAgent on macOS (logs in `~/Library/Logs/unstrap.log`) or a systemd
user service on Linux (logs: `journalctl --user -u unstrap`). After updating, run
`unstrap autostart` again to restart it with the new version. (Run from `uvx`, it is pinned to
that version: use `uvx unstrap@latest autostart`.)

## Notifications

Unstrap shows a desktop notification when a sync finishes or fails (macOS, and Linux with
`notify-send`). Turn them off with `--no-notify` or `UNSTRAP_NOTIFY=0`.

See the project README for how it works.
