An open API service indexing awesome lists of open source software.

https://github.com/jeremiah-k/fetchtastic

Fetchtastic is a utility for downloading and managing the latest Meshtastic Android app and Firmware releases on your PC and/or phone (using Termux). It also provides optional notifications via NTFY.
https://github.com/jeremiah-k/fetchtastic

android downloader firmware lora macos meshtastic termux windows

Last synced: about 1 month ago
JSON representation

Fetchtastic is a utility for downloading and managing the latest Meshtastic Android app and Firmware releases on your PC and/or phone (using Termux). It also provides optional notifications via NTFY.

Awesome Lists containing this project

README

          

# Fetchtastic

**A simple, cross-platform utility for downloading and managing Meshtastic firmware and client app releases.**

Fetchtastic automatically downloads the latest Meshtastic firmware and selected client app assets from GitHub, with support for notifications, scheduling, and repository browsing.

Requires Python 3.10+; Python 3.9 and earlier are unsupported.

## โœจ Features

- ๐Ÿ”„ **Automatic Downloads**: Latest firmware and Meshtastic client app assets
- โšก **Async Download Engine**: `aiohttp`-based downloads with connection pooling and retry/backoff
- ๐Ÿ“ฑ **Cross-Platform**: Linux, macOS, Windows, and Android (Termux)
- ๐Ÿ—‚๏ธ **Repository Browser**: Browse and download files from meshtastic.github.io
- ๐Ÿ”” **Notifications**: Push notifications via NTFY
- โฐ **Scheduling**: Automatic downloads via cron/startup scripts
- ๐ŸŽฏ **Smart Selection**: Choose specific devices, APKs, and desktop installers
- ๐Ÿ“ฆ **Auto-extraction**: Extract firmware files from zip archives
- โœ… **Stronger Integrity Checks**: Hash-based verification and ZIP integrity validation
- ๐Ÿšฆ **GitHub API Resilience**: Centralized release fetching, defensive parsing, caching, and rate-limit-aware behavior
- ๐Ÿงต **Parallel Validation**: Release completeness checks run in parallel for faster scans
- ๐Ÿ”ง **Easy Setup**: One-command installation with guided setup

## ๐Ÿš€ Quick Start

### One-Line Installation

Requires Python 3.10+.

**Linux/MacOS/Android (Termux):**

```bash
curl -sSL https://raw.githubusercontent.com/jeremiah-k/fetchtastic/main/src/fetchtastic/tools/setup_fetchtastic.sh | bash
```

> **Security Note:** For security-conscious users, you can [inspect the script](https://raw.githubusercontent.com/jeremiah-k/fetchtastic/main/src/fetchtastic/tools/setup_fetchtastic.sh) before running it.

**Windows (PowerShell):**

```powershell
irm https://raw.githubusercontent.com/jeremiah-k/fetchtastic/main/src/fetchtastic/tools/setup_fetchtastic.ps1 | iex
```

> **Security Note:** For security-conscious users, you can [inspect the script](https://raw.githubusercontent.com/jeremiah-k/fetchtastic/main/src/fetchtastic/tools/setup_fetchtastic.ps1) before running it.

### Basic Usage

```bash
# Run setup (first time)
fetchtastic setup

# Download latest releases
fetchtastic download

# Browse repository files
fetchtastic repo browse
```

## ๐Ÿ“– Documentation

### Installation Guides

- **[Linux Installation](docs/linux-installation.md)** - Complete installation guide for Linux distributions
- **[macOS Installation](docs/macos-installation.md)** - Installation guide for macOS with Homebrew
- **[Windows Installation](docs/windows-installation.md)** - Windows installation with integration features
- **[Termux Installation](docs/termux-installation.md)** - Android installation using Termux

### Usage

- **[Usage Guide](docs/usage-guide.md)** - Complete guide to using Fetchtastic

## ๐Ÿ”ง Commands

```bash
fetchtastic setup # Run the setup process
fetchtastic download # Download firmware and client app assets
fetchtastic cache clear # Clear cached API data
fetchtastic repo browse # Browse repository files
fetchtastic repo clean # Clean repository downloads
fetchtastic topic # Show NTFY topic
fetchtastic version # Show version
fetchtastic clean # Remove all configuration
```

## ๐Ÿ—๏ธ Architecture Highlights

- **Shared GitHub release source**: Release parsing and validation are centralized for consistency across firmware and client app assets.
- **Async + sync compatibility**: Async download paths are first-class, with sync fallbacks when async libraries are unavailable.
- **Defensive verification flow**: Size checks, hash baselines, and ZIP integrity checks are combined to reduce false positives.
- **Better retry semantics**: Retryable vs non-retryable errors are preserved to improve behavior and diagnostics.

## ๐Ÿ“ File Organization

Downloads are organized in a clean structure:

```text
~/Downloads/Meshtastic/
โ”œโ”€โ”€ app/
โ”‚ โ”œโ”€โ”€ v2.7.14/
โ”‚ โ”‚ โ”œโ”€โ”€ app-fdroid-universal-release.apk
โ”‚ โ”‚ โ”œโ”€โ”€ Meshtastic-2.7.14.dmg
โ”‚ โ”‚ โ””โ”€โ”€ release_notes-v2.7.14.md
โ”‚ โ””โ”€โ”€ prerelease/ # Pre-release client app builds (optional)
โ”œโ”€โ”€ firmware/
โ”‚ โ”œโ”€โ”€ v2.3.2/
โ”‚ โ”œโ”€โ”€ v2.3.1/
โ”‚ โ”œโ”€โ”€ repo-dls/ # Repository browser downloads
โ”‚ โ””โ”€โ”€ prerelease/ # Pre-release firmware (optional)
```

APKs and desktop installers intentionally share `app//` because they are treated as client app assets from the same release pipeline.

## ๐Ÿ”” Notifications

Get notified when new releases are downloaded:

1. Enable NTFY during setup
2. Install the [ntfy app](https://ntfy.sh/app/) or use the web interface
3. Subscribe to your unique topic
4. Receive push notifications for new downloads

## โฐ Scheduling

Set up automatic downloads:

- **Linux/macOS**: Cron jobs (daily at 3 AM)
- **Windows**: Startup folder shortcuts
- **Termux**: Boot scripts and cron jobs

## ๐Ÿ†™ Upgrading

**Automatic (recommended):**

- **Windows**: Use Start Menu โ†’ Fetchtastic โ†’ "Check for Updates"
- **Linux/macOS/Termux**: Re-run the installation script

**Manual:**

```bash
pipx upgrade fetchtastic
```

## ๐Ÿค Contributing

Contributions are welcome! Please feel free to:

- Report bugs and issues
- Suggest new features
- Submit pull requests
- Improve documentation

Visit the [GitHub repository](https://github.com/jeremiah-k/fetchtastic) to get started.

## ๐Ÿงช Development & Testing

```bash
# create and activate environment
python3 -m venv .venv
. .venv/bin/activate

# install dependencies
pip install -r requirements.txt
pip install -r requirements-dev.txt

# run tests
python -m pytest tests/
```

Test suite organization uses markers such as `unit`, `integration`, `core_downloads`, `user_interface`, `configuration`, and `infrastructure`.

## ๐Ÿ“„ License

MIT License - see [LICENSE](LICENSE) for details.