# go-haystack: Track Devices with Apple's Find My Network, No Apple Hardware Needed

This repository profile is provided by osrepos.com, an open source repository discovery platform.

Source: osrepos.com
Repository profile: https://osrepos.com/repo/hybridgroup-go-haystack
Generated for open source discovery and AI-assisted research.

go-haystack enables users to track personal Bluetooth devices by leveraging Apple's extensive "Find My" network. This innovative project utilizes OpenHaystack and Macless-Haystack, providing robust tools developed in Go and TinyGo. A key advantage is its ability to establish a custom Find My network without requiring any proprietary Apple hardware.

GitHub: https://github.com/hybridgroup/go-haystack
OSRepos URL: https://osrepos.com/repo/hybridgroup-go-haystack

## Summary

go-haystack enables users to track personal Bluetooth devices by leveraging Apple's extensive "Find My" network. This innovative project utilizes OpenHaystack and Macless-Haystack, providing robust tools developed in Go and TinyGo. A key advantage is its ability to establish a custom Find My network without requiring any proprietary Apple hardware.

## Topics

- go
- tinygo
- bluetooth
- find-my
- openhaystack
- airtag
- device-tracking
- iot

## Repository Information

Last analyzed by OSRepos: Thu Oct 16 2025 20:17:09 GMT+0100 (Western European Summer Time)
Detail views: 4
GitHub clicks: 10

## Safety Notice

OSRepos shares public repositories for knowledge and discovery only. Review source code, dependencies, licenses, and security implications before running or installing anything.

## Content

## Introduction
`go-haystack` is an exciting open-source project that empowers you to track your personal Bluetooth devices using Apple's vast "Find My" network. It achieves this by integrating with [OpenHaystack](https://github.com/seemoo-lab/openhaystack){:target="_blank"} and [Macless-Haystack](https://github.com/dchristl/macless-haystack){:target="_blank"}, offering a suite of tools written in Go and TinyGo. The most compelling feature is its ability to set up a custom Find My network entirely without the need for any Apple hardware.

The project allows you to build your own beacons using TinyGo firmware, compatible with various nRF-based boards and even Linux systems like Raspberry Pi. Additionally, `go-haystack` includes TinyScan, a hardware scanner for local devices, providing a complete solution for personal device tracking.

## Installation
To get `go-haystack` up and running, you'll need to follow a few steps, including setting up supporting services.

### Apple ID
You must have an Apple ID with 2FA enabled. Note that only SMS/text message as a second factor is currently supported.

### anisette-v3-server
Start the `anisette-v3-server` using Docker:
bash
docker network create mh-network
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


### macless-haystack
1. Start and set up your Macless Haystack endpoint in interactive mode:
bash
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 prompted for your Apple ID, password, and 2FA. Once you see `serving at port 6176 over HTTP`, the setup is complete. Hit `ctrl-C` to exit the process.

2. Restart the `macless-haystack` server:
bash
docker restart macless-haystack

For more details, refer to the [original Macless-Haystack instructions](https://github.com/dchristl/macless-haystack/blob/main/README.md#server-setup){:target="_blank"}.

### go-haystack
Install the `go-haystack` command-line tool:
shell
go install github.com/hybridgroup/go-haystack/cmd/haystack@latest


## Examples
Once installed, `go-haystack` provides simple commands for scanning and managing your devices.

### Scanning for local devices
To scan for any local devices within range, use the `scan` command:
shell
haystack scan

This will return a list of nearby devices, including their MAC addresses, RSSI values, and battery status.

### Adding a new device
1. Generate keys for your new device:
shell
haystack keys DEVICENAME

Replace `DEVICENAME` with your desired name for the device. This command will create `DEVICENAME.keys` and `DEVICENAME.json` files.

2. Flash the hardware with the TinyGo target and your device's name:
shell
haystack flash DEVICENAME nano-rp2040

This command compiles the TinyGo firmware with your generated keys and flashes it to the specified device. For more information on TinyGo, visit [https://tinygo.org/getting-started/overview/](https://tinygo.org/getting-started/overview/){:target="_blank"}.

3. Upload the device's JSON configuration to `macless-haystack`:
Navigate your web browser to [`https://dchristl.github.io/macless-haystack/`](https://dchristl.github.io/macless-haystack/){:target="_blank"}. This is a single-page web application that interacts with your local `macless-haystack` instance. Click on "Accessories," then the "+" button, and select the `DEVICENAME.json` file you generated earlier.

Your device is now set up! It might take some time for the first data to appear in the Macless-Haystack web UI as your device needs to be in range of an iPhone to be picked up by the Find My network.

## Why Use go-haystack?
`go-haystack` offers a unique and powerful solution for personal device tracking. Its primary advantage is the ability to leverage Apple's robust "Find My" network without needing any Apple hardware, making it accessible to a broader audience. The use of Go and TinyGo ensures efficient, performant, and resource-friendly applications, ideal for embedded systems and microcontrollers. This project provides a customizable and open-source alternative for those interested in building their own tracking beacons, offering greater control and privacy over their personal devices.

## Links
*   **GitHub Repository**: [https://github.com/hybridgroup/go-haystack](https://github.com/hybridgroup/go-haystack){:target="_blank"}
*   **OpenHaystack**: [https://github.com/seemoo-lab/openhaystack](https://github.com/seemoo-lab/openhaystack){:target="_blank"}
*   **Macless-Haystack**: [https://github.com/dchristl/macless-haystack](https://github.com/dchristl/macless-haystack){:target="_blank"}
*   **TinyGo**: [https://tinygo.org/](https://tinygo.org/){:target="_blank"}
*   **Macless-Haystack Web UI**: [https://dchristl.github.io/macless-haystack/](https://dchristl.github.io/macless-haystack/){:target="_blank"}