Create your own AirTag with OpenHaystack, but without the need to own an Apple device
  • Dart 64.9%
  • C 19.7%
  • Python 9%
  • CMake 2.4%
  • Makefile 1.6%
  • Other 2.3%
Find a file
2025-07-25 16:09:48 +02:00
.github/workflows Webapplication removed from release 2025-03-01 22:01:12 +01:00
endpoint Removed not needed variable 2025-02-23 18:07:48 +01:00
firmware feat: use deep sleep 2025-07-25 15:52:32 +02:00
images moved images 2024-02-23 16:08:43 +01:00
macless_haystack Merge remote-tracking branch 'fixes/main' into dev 2025-07-25 15:49:10 +02:00
.gitignore Fixed location for web 2025-02-15 16:37:03 +01:00
.gitmodules Added nrf5x-submodule and fixed build 2023-08-16 12:16:54 +02:00
FAQ.md More hints on registration 2025-03-09 12:48:00 +01:00
generate_keys.py Removed unused properties 2025-02-16 10:39:54 +01:00
LICENSE Changed licenes 2025-02-05 13:18:13 +01:00
README.md Prepare new release 2025-07-25 16:09:48 +02:00
version Prepare new release 2025-07-25 16:09:48 +02:00

Macless-Haystack

last commit Docker Hub Docker Pulls

This project tries to unify several projects for an easy-to-use and easy-to-setup custom FindMy network. The goal is to run a FindMy network without the need to own a real Mac or virtual Mac. Also you don't have to install the mail plugin or openhaystack itself. (As needed by the original OpenHaystack project).

Table of Contents

Setup

In this section, you will find a step-by-step guide on how to set up your own Macless-Haystack network.

1. Prerequisites

Prerequisites

  • Docker installed
  • Python3 and pip3 installed
  • Apple-ID with 2FA enabled. Only sms/text message as second factor is supported!

2. Hardware setup

Hardware setup

  1. Head over to the releases section and download generate_keys.py and your needed firmware (ESP32 or NRF5x) zip file.

  2. Execute the generate_keys.py script to generate your keypair. (Note: dependency cryptography is needed. Install it with pip install cryptography)

  3. Unzip the firmware and flash it to your device (see Install ESP32-firmware with your key or Install NRF5x-firmware with your key)

Note: In general, any OpenHaystack-compatible device or its firmware is also compatible with Macless-Haystack (i.e. the ST17H66). Typically, only the Base64-encoded advertisement key is required, which can be found in the .keys file after key generation

3. Server setup

Server setup

  1. Create a new docker network
docker network create mh-network
  1. Install Anisette Server:
docker run -d --restart always --name anisette -p 6969:6969 --volume anisette-v3_data:/home/Alcoholic/.config/anisette-v3 --network mh-network dadoum/anisette-v3-server
  1. Start and set up your Macless Haystack endpoint in interactive mode:
docker run -it --restart unless-stopped --name macless-haystack -p 6176:6176 --volume mh_data:/app/endpoint/data --network mh-network christld/macless-haystack
You will be asked for your Apple-ID, password and your 2FA. If you see serving at port 6176 over HTTP you have all set up correctly
  1. Restart your server now in background by restarting it in an other terminal
docker restart macless-haystack

4. Frontend setup

Frontend setup

You can either use the frontend provided by GitHub, host the webserver for yourself or use the Android application

  • Optional: Mobile: Install application
  • Optional: Host: Browse to Github Page (s. Notes on SSL usage)
  • Import PREFIX_devices.json to your application
  • If you run the frontend not on the same machine as your endpoint, you have to configure your Url in the settings

Problems / Issues / Questions

If you have any problems, issues or questions, please check the FAQ first. If this doesn't help you, create a new issue.

Included projects and changes

Included projects are (Credits goes to them for the hard work):

  • The original Openhaystack
    • Stripped down to the mobile application (Android) and ESP32 firmware. ESP32 firmware combined with FindYou project and optimizations in power usage.
    • Android application
    • ESP32 firmware
  • Biemster's FindMy
    • Customization in keypair generator to output an array for the ESP32 firmware and a json for import in the Android application.
    • The standalone python webserver for fetching the FindMy reports
  • Positive security's Find you
    • ESP32 firmware customization for battery optimization
  • acalatrava's OpenHaystack-Fimware alternative
    • NRF5x firmware customization for battery optimization

Screenshots

Android App

Android

Dashboard Dashboard Dashboard Dashboard

Website

Web

Dashboard Dashboard Dashboard

Contributing

Pull requests are welcome. Please fork from dev-branch. For major changes, please open an issue first to discuss what you would like to change.

License: AGPL v3

Disclaimer

This repository is for research purposes only, the use of this code is your responsibility.

I take NO responsibility and/or liability for how you choose to use any of the source code available here. By using any of the files available in this repository, you understand that you are AGREEING TO USE AT YOUR OWN RISK. Once again, ALL files available here are for EDUCATION and/or RESEARCH purposes ONLY.