Download

Get the software

Node hosts need one file: the UAP Finder system image, written to a microSD card. Everything else UAP Finder runs, from the server that triangulates to the live map and this website, is in one open repository.

Also as a .tar.gz archive, or with git: git clone https://github.com/coalsi/uapfinder.git

Early software. It is built and tested in simulation, and the server has been run end to end with a simulated network. The node system image is new: it is built and tested automatically, but has not yet been booted on a real Orin Nano, and the camera, GPS and orientation-sensor code follows the manufacturers' documentation without having run on a real device yet. Expect some troubleshooting, and please report what you find.

Set up a camera node

For hosts with a Jetson Orin Nano developer kit, a camera and a GPS receiver. The node runs from a ready-made system image: flash it, plug the parts together and finish setup from your phone.

  1. Download the image

    From the latest release, download uapfinder-node-<version>-orin-nano.img.xz (under 2 GB) and its SHA-256 checksum.

  2. Write it to a microSD card

    Use balenaEtcher and a 64 GB or larger A2 card. Etcher reads the compressed .img.xz directly and verifies the card afterwards.

  3. Follow the build guide

    The step-by-step guide covers the one-time firmware check for new developer kits, the wiring, the enclosure, and claiming the node with the code from your network coordinator.

Get the node image Build guide

New, not yet hardware-tested. Booting the image on a real Orin Nano, the CSI camera setup, PPS on pin 7 and the Wi-Fi hotspot still need to be confirmed on a real device.

Alternative: the command-line installer

Already running NVIDIA JetPack 6? The installer produces the same system as the image, including the setup page. On the Jetson, in a terminal:

sudo apt-get update && sudo apt-get install -y git
git clone https://github.com/coalsi/uapfinder.git
cd uapfinder
sudo ./edge/deploy/jetson/setup.sh

Then claim the node at http://uapfinder.local as in the build guide. To check the detection pipeline from a terminal:

journalctl -u skynet-edge -f        # live status, a line every minute
sudo -u skynet /opt/skynet/venv/bin/skynet-edge bench --config /etc/skynet/edge.yaml

Options and configuration are in the edge guide.

What's inside the download

One archive holds every part. Most people only need one folder and its guide.

Folders in the repository and who uses them
Folder What it is For Guide
edge/ Camera-node software for the Jetson: detection, tracking, filters, uplink, setup script and system service Node hosts Edge guide
server/ Ingest, matching, triangulation, 3D tracks, clip requests, database and HTTP API Network coordinators Server guide
deploy/ Running the server on a Mac Studio with Tailscale, and a Docker setup for Linux Network coordinators Mac Studio guide
common/ Shared geometry, triangulation and the signed message format (installed automatically) Everyone Error model
tools/ A simulated network with known targets that scores the server's tracks Testers Simulator
dashboard/, site/ The live 3D map and this website Developers Map code

Run the server

For network coordinators. One server collects every node's sightings, triangulates them and serves the live map. Nodes reach it over Tailscale (no open router ports) or over the internet.

On a Mac (Mac Studio)

The planned setup: the server and database on a Mac at home, nodes connected over Tailscale, and the public API published with Tailscale Funnel. Mac Studio guide.

brew install python@3.13 postgresql@17 postgis
git clone https://github.com/coalsi/uapfinder.git && cd uapfinder
python3.13 -m venv server/.venv
server/.venv/bin/pip install -e ./common -e ./server
cp server/.env.example server/.env        # set the keys and addresses (see the guide)
server/.venv/bin/skynet-server --env-file server/.env migrate
server/.venv/bin/skynet-server --env-file server/.env serve

On a Linux server (Docker)

The server and PostGIS database in containers, for a VPS or a spare machine. Put HTTPS in front of port 8000 for public access. Server guide.

git clone https://github.com/coalsi/uapfinder.git && cd uapfinder
cp server/.env.example server/.env        # set SKYNET_MASTER_KEY, SKYNET_ADMIN_TOKEN,
                                          # SKYNET_PUBLIC_URL (openssl rand -hex 32 makes a key)
echo "POSTGRES_PASSWORD=$(openssl rand -hex 24)" > .env
docker compose up -d --build

Try it without hardware

A simulated network of six cameras watches three objects with known paths, including a Mach 6 one. It sends real signed messages to a local server, then scores the server's 3D tracks against the truth. You need Python 3.10 or later.

git clone https://github.com/coalsi/uapfinder.git && cd uapfinder
python3 -m venv .venv && .venv/bin/pip install -e ./common -e ./server
export SKYNET_MASTER_KEY=$(.venv/bin/skynet-server keygen) SKYNET_ADMIN_TOKEN=$(openssl rand -hex 24)
export SKYNET_PUBLIC_URL=http://127.0.0.1:8000
.venv/bin/skynet-server serve &
.venv/bin/python tools/simulate_network.py --udp 127.0.0.1:9999 \
    --api http://127.0.0.1:8000 --master-key "$SKYNET_MASTER_KEY" --duration 30

Expect median position errors of roughly 10–20 m, and the hypersonic and high-g objects flagged as such.

Requirements

Software requirements by component
Component Runs on Needs
Camera node Jetson Orin Nano 8 GB developer kit The UAP Finder image on a 64 GB+ microSD card (or JetPack 6.x with the command-line installer), camera, GPS with PPS; NVMe SSD recommended
Server macOS or Linux Python 3.10+ (3.12 or 3.13 recommended), PostgreSQL 16–18 with PostGIS 3
Simulator macOS, Linux or Windows (WSL) Python 3.10+
Map and website (building) Any Node.js 22

Other downloads you may need

These come from their makers, not from this project.

NVIDIA JetPack

Only needed for the one-time firmware update of older developer kits (the JetPack 5.1.3 SD-card image) or for the command-line install.

JetPack downloads · Getting started

balenaEtcher

Writes the UAP Finder image (and, if needed, NVIDIA's firmware-update image) to a microSD card from macOS, Windows or Linux.

Download Etcher

Tailscale

Private network between the nodes and the server, with no open router ports.

Download Tailscale

Homebrew

Installs Python, PostgreSQL and PostGIS on a Mac running the server.

Install Homebrew

Python and Node.js

For running the server or simulator, and for building the map and website yourself.

Python · Node.js