Skip to content

Repository files navigation

OpenSAK — Open Source Swiss Army Knife for Geocaching

A modern, cross-platform geocaching management tool for Linux, Windows and macOS — a free, open source successor to GSAK, built in Python.

Python PySide6 License Status Open Collective backers


ℹ️ Built by volunteers, for geocachers

OpenSAK is developed by a small international team of volunteers — geocachers building the tool they want to use themselves. There's no company behind it and no paid support, so while we read every issue and review every pull request, we can't promise when (or whether) a particular request will be addressed.

The best way to move something forward is to get involved: report bugs with clear steps to reproduce, test the betas, help with translations, or open a pull request.

OpenSAK is provided as-is, under the MIT License, without warranty or guaranteed support.


Features

Import & Database

  • 📥 Import GPX files and Pocket Query ZIP files from Geocaching.com
  • 📧 Pocket Queries by e-mail — fetch PQ ZIP attachments straight from your own IMAP mailbox; the password is kept in your OS keyring, never in plain text
  • 🔁 Import GSAK databases — read a GSAK database directly, including personal notes, corrected coordinates, child waypoints, attributes and the full log history
  • 🗄️ Multiple databases — keep regions separate (e.g. Zealand, Bornholm, Cyprus), and move caches between them
  • 📍 Home points — save multiple named home points (Home, Cottage, Hotel…) and switch instantly from the toolbar
  • ✅ Update finds from a reference database (e.g. your "My Finds" PQ)

Trip Planning

  • 🗺️ Trip Planner (Ctrl+T) — plan a geocaching trip in two modes:
    • Radius — find caches within a set distance from your active home point; sort by distance, difficulty, terrain, date or name
    • Route A→B→… — find caches along a multi-point route (up to 10 waypoints); caches sorted in driving order along the route
  • Route points can be typed in any coordinate format or picked from your saved home points
  • Preview on map — open selected trip caches on an interactive map with one click
  • Export trip caches directly to GPS or as a GPX file

View & Navigation

  • 🗺️ Interactive map with OpenStreetMap and colour-coded cache pins with clustering
  • 🔍 Advanced filter dialog modelled on GSAK's — 10 tabs: General, Dates, Other, Logs, Line/Polygon, Child Waypoints, Trackables, Attributes (~70 Groundspeak attributes), Text Search, and a raw SQL WHERE tab
    • 12 text operators on every text field (contains, equals, starts/ends with, in list, empty, regex — and their negations)
    • Date conditions, distance from any centre point, compass direction, caches along a route or inside a polygon
    • AND/OR logic, a global Invert filter, and saved filter profiles in the toolbar
    • Quick Where box in the toolbar for a raw SQL condition without opening the dialog
  • 📊 Configurable columns — 17+ columns, toggle on/off
  • 🎨 Color-coded status — found (yellow) and your own caches (green) in the GC Code column and info bar, archived/disabled caches in red; clickable info-bar counts filter the list instantly
  • 🔗 Click GC code → opens cache page on geocaching.com
  • 🗺️ Click coordinates → opens in Google Maps or OpenStreetMap
  • 🖥️ Full-screen / popout map — enlarge the map to a bigger, dedicated view
  • 🌍 Offline Country/State/County lookup — automatic reverse-geocoding on import, no internet connection required; optional downloadable boundary packs for more detail

Cache Details

  • 📋 Cache details — description, hints, logs, attributes, personal notes, and child waypoints, each in their own tab
  • 🔓 ROT13 hint decoding — one click to decode / re-hide the hint
  • 🔍 Search in logs — real-time search with match highlighting; links in log text are clickable
  • 📝 Personal notes — your own free-text notes per cache, round-trippable with GSAK (gsak:UserNote)
  • 🧩 Child waypoints — parking spots, trail heads, and stages imported from GPX, shown on the map and in a dedicated tab; caches with waypoints show in bold in the list
  • 🔒 Lock caches — freeze a cache's core fields (name, type, coordinates, D/T, owner, status, descriptions, hint…) against being overwritten by a later re-import
  • 📍 Corrected coordinates — store solved puzzle coordinates per cache; used in GPS export and shown on map
  • ✏️ Add / edit / delete caches manually — including owner, dates, elevation, user data 1–4, personal note and child waypoints

Right-click Menu

  • 🌐 Open on geocaching.com
  • 🗺️ Open in map app (Google Maps / OpenStreetMap)
  • 📋 Copy GC code / coordinates (in your chosen format)
  • ☑ Mark as found / not found
  • 🔒 Lock / unlock cache — protect against import overwrites
  • 📍 Add / edit / clear corrected coordinates
  • ⇄ Open coordinate converter directly from the cache list

GPS Export

  • 📤 Send to Garmin GPS — auto-detects USB-mounted Garmin devices, and newer MTP-only devices on both Windows and Linux
  • 📦 GGZ export — Garmin's compressed format, lifting the 10,000-cache device limit
  • 🗑️ Optional: delete existing GPX files on device before upload
  • 💾 Save as GPX, LOC, GGZ or KML — export to any location

Geocaching Tools

  • ⇄ Coordinate Converter — convert between DD, DMM and DMS formats with one click
  • 📐 Coordinate Projection — calculate a new coordinate from bearing and distance
  • 🔢 Digit Checksum — sum all digits in a coordinate (N/S and E/W separately)
  • ⊕ Midpoint — find the great-circle midpoint between two coordinates
  • 📏 Distance & Bearing — distance and azimuth between two coordinates
  • All tools open pre-filled with the currently selected cache's coordinates

Installation & Updates

  • 🪟 Windows — available from the Microsoft Store (free, signed, updates itself automatically), or as a direct download from GitHub
  • 🍎 macOS — signed and notarized .dmg for Apple Silicon and Intel; updates and uninstalls itself from within the app
  • 🐧 Linux — AppImage that adds itself to your application menu, updates itself in place, and uninstalls itself from within the app
  • 🔔 Updates — OpenSAK tells you when a new version is available (optionally including betas) and can download, verify and install it for you
  • 📂 Help → OpenSAK File Locations… — see every place OpenSAK keeps files, handy for backups
  • 🛡️ Your data is never removed by an update or uninstall unless you explicitly choose to

Language Support

  • 🌍 11 languages built in: Danish, English, French, Dutch, Portuguese, German, Swiss German, Czech, Swedish, Polish and Spanish
  • 🔧 Easy to add new languages — copy one file, translate, done

Known Limitations

  • Favourite points cannot be imported from GPX/PQ files (requires Geocaching.com API)
  • No Geocaching.com Live API integration
  • GPS auto-detection may not find every Garmin model automatically
  • The direct Windows download from GitHub is not code-signed, so SmartScreen or Smart App Control may warn or block it — the Microsoft Store version is signed and avoids this
  • Pocket Queries by e-mail don't yet support Gmail or Outlook.com (both require OAuth2)

Documentation

Guide Description
User Guide The complete, illustrated guide to using OpenSAK
Installation All platforms, automatic and manual methods, updating, uninstalling
Uninstalling What OpenSAK creates on disk, and how to remove it
Getting Started First launch, importing, filtering, GPS export, multiple databases
Filter Reference All filter types across 10 tabs, text operators, AND/OR logic, invert, filter profiles
Update Locations Filling in country/state/county via offline and online reverse geocoding
Keyboard Shortcuts Full shortcut reference
Feature Flags Developer feature flag system
CLI --version flag Print version or run a specific release
Roadmap Planned features and priorities
CHANGELOG Version history
CONTRIBUTING Development setup, code style, translations, PR workflow
Contributing with an AI Assistant Step-by-step guide to contributing code using an AI coding assistant
Reverse-geocoding data Developer notes on the offline boundary data (OpenSAK-Data)

Quick Start

# Linux / macOS (from source)
git clone https://github.com/OpenSAK-Org/OpenSAK.git
cd OpenSAK
python3 -m venv .venv && source .venv/bin/activate
pip install -e .
python run.py

This runs the latest stable version. To try the newest features, clone the beta branch instead (git clone --branch beta …).

For the Microsoft Store, macOS .dmg and Linux AppImage downloads see docs/installation.md or the Releases page.


Reporting Bugs

Please use GitHub Issues and include:

  • Your OpenSAK version (Help → About) and how you installed it (Microsoft Store, direct download, AppImage, .dmg, or from source)
  • Your platform (Linux / Windows / macOS + version)
  • The error message, or the log file (Help → Open log file)

Questions and ideas are also welcome in GitHub Discussions and the OpenSAK Facebook group.


Roadmap

See docs/ROADMAP.md for planned features and their current priority, and GitHub Issues for what's being worked on right now. The CHANGELOG lists everything that has landed.


Contributing

Contributions are welcome! See CONTRIBUTING.md for details.

Using an AI coding assistant to help write your contribution? See Contributing with an AI Assistant for a guide tailored to that workflow.


Support OpenSAK

OpenSAK is free and open source, developed in spare time. If it's useful to you, consider supporting ongoing development — contributions help cover costs like Apple notarization and the test hardware we use, so releases can be trusted and installed without security warnings.

👉 Support OpenSAK on Open Collective


License

MIT License — see LICENSE for details.


Acknowledgements

About

Cross-platform geocaching tool

Resources

Code of conduct

Contributing

Stars

36 stars

Watchers

7 watching

Forks

Releases

Packages

Contributors

Languages