Repository navigation
Releases
RailWatch 0.1.2 (nighttime recovery prerelease)
Fix missed nighttime camera recordings with an opt-in crossing-signal recovery path.
What changed
- A lightweight background worker can capture private review clips when a configured railway crossing light flashes, even if the ordinary train model misses a dark train.
- Signal episodes are joined across recording boundaries, include pre-roll and tail footage, and wait for a quiet interval before export.
- Recovery state and clip identity survive restarts, prevent duplicate submissions and retain explicit unconfirmed provenance.
- Candidates use the existing account-linked historical upload queue with original timestamps. They require review and do not bypass classification or public-map gates.
- Daytime detector thresholds and model weights are unchanged. No UI controls were added.
Enablement
This is an opt-in, camera-specific pilot. night_recovery_enabled defaults to false. Enable it only for an owner-authorized paired camera with a fixed crossing-light landmark and correct night_review_timezone/hours. night_review_enabled retains footage for later recovery. Inspect /api/status → night_recovery for worker progress and errors. See the README's nighttime recovery section for details.
Installed Pi clients can use the existing release update action. Docker installations should preserve their data/model volumes, check out v0.1.2, and rebuild/recreate the container.
Validation and limits
138 Python tests and the browser smoke checks passed locally. A hash-pinned replay on the testing camera captured all three known nighttime passage episodes and generated no candidates in nine reviewed non-train clips (13 clips total). This limited sample validates candidate capture, not general nighttime train recognition. Crossing lights may operate without a train; candidates remain unconfirmed. Cameras without visible crossing signals still need another validated capture method.
RailWatch 0.1.1 (prerelease)
RailWatch's first public pilot prerelease for Raspberry Pi freight cameras.
Install on a Raspberry Pi
Start with Raspberry Pi OS Lite (64-bit), then run this in a terminal or SSH session on the Pi:
curl -fsSL https://raw.githubusercontent.com/TrainsFYI/railwatch/main/install.sh | bashThe interactive installer checks the platform, explains the requirements, downloads and verifies the official release bundle, installs RailWatch, and shows the local dashboard address. Continue in the browser wizard to connect your camera, set the railway location and detection area, and link your trains.fyi account.
What's included
- USB and local RTSP/RTSPS camera support, live preview and guided railway setup.
- Local train detection, recordings and private uploads to your linked trains.fyi account.
- Daily GitHub release checks, including prereleases during this pilot.
- A “Please update” notice in the top navigation when a newer release is available.
- One-click Pi updates with verified downloads, a separate staged Python environment, a quiet recording boundary, health checks and rollback.
Existing installations
Run the installer above once on existing Pi installations to add the update helper. Settings, pairing, recordings, downloaded models and pending uploads are preserved. Subsequent compatible software releases can be installed from the dashboard.
For Docker, preserve the data/model volumes and run:
git fetch origin --tags
git checkout v0.1.1
docker compose up -d --buildDocker shows release notices and manual update instructions; it does not expose the Docker socket or host root access to the dashboard.
Pilot limitations
Use the dashboard only on a trusted local network; it has no login and should not be port-forwarded. A detector model must be downloaded in Settings before detection can run. Detection performance varies with the camera view, weather and lighting; new views need review before public freight publication. Monitoring pauses briefly during an update restart. OS packages and the root-owned updater itself require rerunning the installer when a future release calls for it.
The source bundle below is checked against GitHub's SHA-256 digest by the installer and updater. SHA256SUMS is also supplied for manual verification.