An Axis camera that knows where to look β and when not to bother.
A standalone ACAP for AXIS OS 12 that aims an Axis PTZ camera at the brightest visible aurora. It reads the NOAA SWPC OVATION nowcast every few minutes, works out which part of the sky is actually worth photographing from your camera's position, and turns the lens there β then checks the sun, the cloud and the moon, and stands down when the answer is no.
π Full documentation and screenshots β
It aims. Not an alert β a PTZ movement. The app ranks every visible cell of the auroral oval, clusters them into arcs, and drives the camera via presets, CamSwitcher views, or absolute pan/tilt. Tilt is calculated: the apparent elevation of a curtain follows from its distance.
It knows when not to. Four conditions multiply:
activity Γ darkness Γ clear sky Γ moonlight = score
Any one at zero zeroes the result. A 90 % aurora forecast at noon scores exactly nothing, and the app says which factor is stopping it rather than reporting a bare "quiet".
It sees red aurora. Most models track the green curtain at 110 km. Aurora Chaser also evaluates the red 630 nm layer at 230 km, which clears the horizon from 1,687 km rather than 1,175 km. That is the difference between detecting a mid-latitude storm and reporting an empty sky β during the May 2024 G5 storm, observers at 50Β°N photographed red aurora whose base sat over the Baltic.
All free, all public, no API key required.
| Source | Provides | Cadence |
|---|---|---|
| NOAA SWPC OVATION | Global 1Β°Γ1Β° visible-aurora probability, 65,160 cells | ~5 min, ~30 min ahead |
| Planetary Kp | 3-hourly index + 3-day forecast | 3 h |
| Real-time solar wind | Bz/Bt, speed, density at L1 (IMAP, ACE backup) | 1 min |
| Open-Meteo | Cloud cover along each sightline | per scan |
| AuroraWatch UK | Ground magnetometer status (optional) | 3 min |
| Sun & Moon | Solar elevation, lunar phase and altitude | computed locally |
Note. The SWPC viewline product was removed in May 2026 β this app uses the OVATION grid directly, which is both still published and more useful.
Docker is the only prerequisite. TypeScript is compiled inside the container.
cd aurora-chaser-acap
sh build.sh arm64 # ARTPEC-8/9 β aarch64
sh build.sh armhf # ARTPEC-7 β armv7hf
sh build.sh # bothFirst run pulls the ~2 GB ACAP Native SDK image; later builds are cached and take
under a minute. Use sh build.sh, not ./build.sh β the exec bit does not
survive on exFAT volumes.
See aurora-chaser-acap/BUILD.md for the full build notes, the preflight checks, and a troubleshooting table.
Camera UI β System β Apps β enable Allow unsigned apps β Add app β
upload the .eap matching your chip.
Settings UI: http://<camera>/local/aurora_chaser/
Expected first-start log:
=== Aurora Chaser ACAP v1.1.1 ===
HTTP server listening on 127.0.0.1:<port>
Scan loop started
[DEBUG] OVATION: 65160 cells in 812ms, valid 2026-08-15T23:54:00.000Z
[INFO] Aurora: green 71% bearing=352.0Β° elev=18.4Β° dist=310km score=0.612 preset=2
β¦or, in daylight, Darkness gate closed (sun 12.4Β°) β which is the app working
correctly, not failing.
.
βββ aurora-chaser-acap/ the ACAP itself
β βββ Dockerfile builds the .eap (compiles TS in-container)
β βββ build.sh docker build + docker cp, both architectures
β βββ BUILD.md build notes, preflight, troubleshooting
β βββ app/
β βββ manifest.json ACAP manifest (schema 2.0, AXIS OS 12.10+)
β βββ aurora_chaser launcher (filename must equal appName)
β βββ preflight.sh manifest assertions, run during the build
β βββ src/ TypeScript
β βββ html/ settings UI + vendored Leaflet
βββ docs/ GitHub Pages site
| File | Role |
|---|---|
aurora.ts |
The four-gate orchestrator |
ovation.ts |
OVATION grid: fetch, cache, band-aware cell resolution |
sky.ts |
Sun/moon, darkness gate, line-of-sight geometry |
spaceweather.ts |
Kp series, solar wind, coupling index |
cloud.ts |
Cloud gate, sampled along each sightline |
aurorawatch.ts |
Lancaster magnetometer status |
scanner.ts |
Scan loop, hysteresis, dwell, camera dispatch |
vapix.ts |
Digest auth (MD5/SHA-256), PTZ, CamSwitcher, CamOverlay |
server.ts |
settings.cgi, status.cgi, ovation.cgi, static assets |
- AXIS OS 12.10 β 13
- ARTPEC-7 (armv7hf) or ARTPEC-8/9 (aarch64)
- A PTZ camera, or CamSwitcher views, or a fixed camera for overlay-only use
- Optional: CamOverlay for burned-in status graphics
No runtime dependencies β the app is pure Node standard library, with a Node 20 runtime bundled into the package because AXIS OS ships none.
Built on the Storm Chaser platform, which supplies the VAPIX, CamSwitcher, CamOverlay and settings-UI layers.
NOAA SWPC data is public domain. Open-Meteo's free tier is non-commercial β set an API key for commercial deployments. AuroraWatch UK data Β© Lancaster University.
MIT β see LICENSE.
If this is useful to you: β ko-fi.com/K3K6RR4LY
