Skip to main content

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):

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 before running it.

Windows (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 before running it.

Basic Usage

# Run setup (first time)
fetchtastic setup

# Download latest releases
fetchtastic download

# Browse repository files
fetchtastic repo browse

📖 Documentation

Installation Guides

Usage

🔧 Commands

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:

~/Downloads/Meshtastic/
├── app/
│   ├── v2.7.14/
│   │   ├── app-fdroid-universal-release.apk
│   │   ├── Meshtastic-2.7.14.dmg
│   │   └── release_notes-v2.7.14.md
│   ├── prerelease/   # Prerelease client app builds (optional)
│   └── snapshots/    # Rolling snapshot debug builds (opt-in)
├── firmware/
│   ├── v2.3.2/
│   ├── v2.3.1/
│   ├── repo-dls/      # Repository browser downloads
│   ├── prerelease/    # Prerelease firmware (optional)
│   └── nightlies/     # Rolling experimental firmware nightlies (opt-in)

APKs and desktop installers intentionally share app/<version>/ 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 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:

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 to get started.

🧪 Development & Testing

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

# install dependencies
pip install -e ".[test]"

# 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 for details.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fetchtastic-0.11.3.tar.gz (620.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fetchtastic-0.11.3-py3-none-any.whl (313.4 kB view details)

Uploaded Python 3

File details

Details for the file fetchtastic-0.11.3.tar.gz.

File metadata

  • Download URL: fetchtastic-0.11.3.tar.gz
  • Upload date:
  • Size: 620.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for fetchtastic-0.11.3.tar.gz
Algorithm Hash digest
SHA256 e252c517831bbad7abadb33efaa0bef2468e296848430a086558bfc860c29651
MD5 c1ed8bfbefb2ec829ac784653b99cb19
BLAKE2b-256 ae53a142152a8d2e531e58ae5d813e0d0d1cff45a24b5e80db2f1efb8535fd13

See more details on using hashes here.

Provenance

The following attestation bundles were made for fetchtastic-0.11.3.tar.gz:

Publisher: pypi-publish.yml on jeremiah-k/fetchtastic

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fetchtastic-0.11.3-py3-none-any.whl.

File metadata

  • Download URL: fetchtastic-0.11.3-py3-none-any.whl
  • Upload date:
  • Size: 313.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for fetchtastic-0.11.3-py3-none-any.whl
Algorithm Hash digest
SHA256 667136c0abf150758c241c00e1a30d7665885bb02246629f50ad69d10b4bd7bb
MD5 c7bdd86902402a7b5019d045920f6f2a
BLAKE2b-256 50d4c1ef04dc65e2518675b4a77da6f7741b4250f0f8bb5a24ec04ae815d4d71

See more details on using hashes here.

Provenance

The following attestation bundles were made for fetchtastic-0.11.3-py3-none-any.whl:

Publisher: pypi-publish.yml on jeremiah-k/fetchtastic

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.11.3 This release

2 files

0.11.2

2 files

0.11.1

2 files

0.11.0

2 files

0.10.11

2 files

0.10.10

2 files

0.10.9

2 files

0.10.8

2 files

0.10.7

2 files

0.10.6

2 files

0.10.5

2 files

0.10.4

2 files

0.10.3

2 files

0.10.2

2 files

0.10.1

2 files

0.10.0

2 files

0.9.7

2 files

0.9.6

2 files

0.9.5

2 files

0.9.4

2 files

0.9.3

2 files

0.9.2

2 files

0.9.1

2 files

0.9.0

2 files

0.8.9

2 files

0.8.8

2 files

0.8.7

2 files

0.8.6

2 files

0.8.5

2 files

0.8.4

2 files

0.8.3

2 files

0.8.2

2 files

0.8.1

2 files

0.8.0

2 files

0.7.3

2 files

0.7.2

2 files

0.7.1

2 files

0.7.0

2 files

0.6.6

2 files

0.6.5

2 files

0.6.4

2 files

0.6.3

2 files

0.6.2

2 files

0.6.1

2 files

0.6.0

2 files

0.5.1

2 files

0.5.0

2 files

0.4.5

2 files

0.4.4

2 files

0.4.3

2 files

0.4.2

2 files

0.4.1

2 files

0.4.0

2 files

0.3.0

2 files

0.2.5

2 files

0.2.4

2 files

0.2.3

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.11

2 files

0.1.10

2 files

0.1.9

2 files

0.1.8

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page