Skip to content

Latest commit

Β 

History

19 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Software Release Radar. Know what changed before you update.

Version 2.8.0 Python 3.13 application Docker Compose deployment AGPL 3.0 licence AI is optional

Quick start Β· Preview Β· Features Β· Monitoring Β· Readiness Β· Roadmap Β· Changelog Β· Support

Important

v2.7.0 is the first public release of Software Release Radar. The application, Docker lifecycle, backup and restore path, automated monitoring, dependency audit, static security gate and clean macOS installation were validated before publication.

πŸ“‘ What is Software Release Radar?

Software Release Radar is a self-hosted dashboard for people who run a growing collection of software and want a better way to keep track of updates.

It checks upstream releases, compares them with the versions you run, adds machine and service context, and gives you one place to decide what should be updated, delayed, ignored or investigated.

🐍 Python application

The application is written in Python 3.13 and served through Gunicorn.

🐳 Docker deployment

Docker Compose is the primary deployment path. Host Python is not required for the recommended first run.

🧠 AI is optional

Core monitoring is deterministic. AI can help interpret release notes when wanted.


πŸ§’ ELI5

Imagine you run 20 or 30 apps at home, in a homelab, or on your own servers.

Each app gets updates at different times. Without a tool like this, you may need to visit several websites, remember what version you installed, read release notes, work out which server runs each app, and decide whether the update is worth doing.

Software Release Radar handles the repetitive tracking so you can focus on the decision.

Software you run
       β”‚
       β–Ό
Check official upstream releases
       β”‚
       β–Ό
Compare latest version with your version
       β”‚
       β–Ό
Add machine, container and health context
       β”‚
       β–Ό
Put the result in one review queue
       β”‚
       β”œβ”€β”€ Update
       β”œβ”€β”€ Wait
       β”œβ”€β”€ Ignore
       └── Investigate

Note

Release Radar is not an unattended production updater. It is designed to improve the information available before you make a change.


πŸš€ Quick start

Requirements

  • Docker Engine or Docker Desktop
  • Docker Compose v2
  • Git

Install

git clone https://github.com/muhdusama/Software-Release-Radar.git
cd Software-Release-Radar
bash scripts/setup.sh

The setup helper asks for the first administrator account, generates secure application secrets inside a temporary Docker container, writes a protected .env, builds the stack, starts all services and waits for the application to report healthy.

Then open:

http://localhost:9120

The administrator password itself is not written to .env.

Read docs/DOCKER.md before exposing Release Radar beyond a trusted network.


πŸ–ΌοΈ Preview

The following visuals use neutral demo data and contain no private production information.

Dashboard

Software Release Radar dashboard reference screenshot

Review queue

Software Release Radar review queue reference screenshot

Fleet

Software Release Radar fleet reference screenshot


✨ What it does

Area Capability
πŸ“‘ Release tracking GitHub releases, prereleases and latest tags
⏱️ Automatic monitoring Scheduler checks only trackers whose individual refresh interval is due
πŸ”’ Version awareness Installed, detected and upstream version comparison
πŸ–₯️ Fleet inventory Machine, service, container, folder, port and health context with editable display names
🐳 Portainer or Dockhand Inventory and source-name synchronisation with local aliases and resilient container rebinding
βœ… Review workflow Update, Wait, Ignore, Deployed and Needs Attention decisions
🩺 Diagnostics Separates real updates from checker failures and unavailable comparisons
πŸ”” Notifications System-wide, personal, channel and per-software controls for SMTP email and Pushover
🧠 Optional AI OpenAI-compatible release comparison and tracker chat
πŸ‘₯ Multi-user Administrator and standard-user roles
πŸ’Ύ Data safety SQLite WAL mode, online backup helper and guarded restore helper
πŸ“¦ Deployment Docker Compose with persistent state

πŸ“‘ Release intelligence

  • Track stable releases, prereleases or latest tags.
  • Set a refresh interval per software package.
  • Compare upstream releases with installed or detected versions.
  • Keep checker failures separate from confirmed updates.
  • Handle version schemes that need deterministic normalisation.

πŸ–₯️ Fleet context

  • Associate software with machines and services.
  • Record host, port, health and Docker container context.
  • Group services by machine.
  • Surface online, offline, update and needs-attention states.
  • Search and filter larger inventories.
  • Edit machine, software and stack or folder display names directly from Fleet.
  • Follow renamed inventory-provider environments and services automatically while preserving deliberate local aliases.

Docker inventory providers

Release Radar can discover Docker environments and containers from Portainer or Dockhand. Select a provider under Settings, save its encrypted API credential, test the connection, then synchronise from Inventory. Existing Portainer installations remain selected after upgrade.

Dockhand synchronisation verifies each environment before accepting an empty container list. Offline environments keep their last-known inventory. See docs/CONFIGURATION.md for token setup and the current Dockhand API limitation.

βœ… Upgrade decisions

Release Radar provides an operational review queue rather than an unattended updater. A release can carry priority, risk, maintenance timing, notes, rollback context and deployment history.

🧠 Optional Release Assistant

An OpenAI-compatible endpoint can be used for release-note analysis and tracker chat. Core release checking, scheduling, probing, version comparison and standard notifications do not require an AI model.

πŸ”” Notification control

The Notifications page separates password-recovery email from release alerts. An administrator can pause release notifications system-wide, each user can choose a personal default and delivery channels, and individual software trackers can inherit that default, always notify, or remain muted. Muted releases are recorded as skipped so turning alerts back on does not send an unexpected backlog.


⏱️ How monitoring works

The standard Docker stack contains three long-running services:

Browser
   β”‚
   β–Ό
Web application ───────────────┐
   β”‚                           β”‚
   β”œβ”€β”€ SQLite state            β”‚
   β”œβ”€β”€ GitHub release API      β”‚ shared application data
   β”œβ”€β”€ optional inventory provider      β”‚
   └── optional AI             β”‚
                               β”‚
Scheduler ──────────────────────
   β”‚                           β”‚
   └── checks due trackers     β”‚
                               β”‚
Inventory worker β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
       └── background inventory jobs

The scheduler wakes every 60 seconds by default. It does not check every tracker every minute. Each tracker keeps its own refresh interval, and only due trackers are checked.

Automatic monitoring therefore works out of the box without an external cron job.


πŸ’Ύ Back up and restore

Create a verified online SQLite backup:

./scripts/backup.sh

Restore a verified backup:

bash scripts/restore.sh ./backups/radar-YYYYMMDD-HHMMSS.db --confirm

The backup helper uses SQLite's online backup API and runs PRAGMA integrity_check.

The restore helper validates the requested backup, creates a fresh pre-restore safety backup, stops database writers, restores through a narrowly scoped maintenance container, returns ownership to the non-root application user, validates the restored database and confirms that the full stack returns healthy.

See docs/DOCKER.md for the full operational procedure.


πŸ” Security model

The v2.8.0 release includes:

  • CSRF protection on state-changing browser routes;
  • HTTP-only, same-site session cookies;
  • optional secure-only session cookies for HTTPS deployments;
  • generated application secrets;
  • Fernet encryption for stored integration secrets;
  • shared login and password-reset throttling;
  • security response headers;
  • TLS verification enabled by default for inventory providers;
  • proxy forwarding headers disabled unless explicitly enabled;
  • OpenAI-compatible endpoints restricted to complete HTTP or HTTPS URLs without embedded credentials;
  • a non-root application container user;
  • strict SSH host-key checking for optional Docker probes;
  • fixed remote Docker inspection rather than arbitrary remote shell execution;
  • blocking dependency vulnerability auditing with pip-audit; and
  • a reviewed Bandit static-analysis gate in CI.

Security vulnerabilities should not be posted in public issues. Follow SECURITY.md.

For production hardening guidance, see docs/SECURITY-HARDENING.md.


πŸ§ͺ Production readiness

The release candidate is tested as a complete lifecycle, not only as a Docker image build.

Gate v2.8.0 status
Python compilation and complete automated test suite βœ… Passed
Dependency vulnerability audit βœ… Passed
Reviewed Bandit security gate βœ… Passed
Real public first-run setup on a clean Linux runner βœ… Passed
Web health and login-page acceptance βœ… Passed
Automatic scheduler remains running βœ… Passed
Inventory worker remains running βœ… Passed
Online SQLite backup and integrity check βœ… Passed
Guarded restore and return to healthy state βœ… Passed
Persistent state after Compose restart βœ… Passed
Clean macOS Docker Desktop acceptance βœ… Passed
Visual review of clean deployment βœ… Passed
Final privacy and secret scan after version freeze βœ… Passed
Clean public Git root βœ… Passed
GitHub safety settings and final launch review βœ… Passed

The public release is published from a sanitised clean Git history, and the same automated lifecycle gates continue to run on repository changes.

See ROADMAP.md for the final launch checklist.


πŸŽ›οΈ Vibe-coded and open about it

Software Release Radar is very much a vibe-coded project.

I am not a software developer. I started building this because I had a practical problem in my own self-hosted setup and wanted a better way to solve it.

I have used OpenAI Codex heavily to help design, write, refactor, test and document the project. I set the direction, decide what the application should do, test it in a real environment, review the results and make the final call on changes.

I am being open about this because contributors should know how the project came together. There may be places where an experienced developer would choose a cleaner pattern or spot something that I missed. If you find one, please open an issue or pull request.

🧭 Human direction

Product decisions, priorities and release decisions stay human-led.

πŸ€– Codex-assisted

Codex has been used extensively for implementation, testing, refactoring and documentation.

πŸ§ͺ Validation matters

AI-generated code is not treated as reviewed simply because a tool produced it. Tests and release gates still apply.


πŸ‘₯ Contributors

Human led OpenAI Codex contributor

Contributor Role
@muhdusama Creator and maintainer. Product direction, feature decisions, real-world testing and release decisions.
OpenAI Codex AI coding contributor. Implementation, refactoring, tests, debugging, documentation and code review assistance.

Codex is an AI coding tool rather than a conventional GitHub contributor account. GitHub's contributor graph is based on commit authorship, so Codex may not appear there as a separate account.

See CONTRIBUTORS.md for more detail.


πŸ—³οΈ Help shape the roadmap

Feature proposal and roadmap voting process

Once the repository is public:

  1. propose a feature using the structured feature request form;
  2. vote with a πŸ‘ reaction on requests that would help you;
  3. strong candidates can move into a roadmap poll for direct comparison; and
  4. results help guide priority alongside security, reliability and maintenance effort.

πŸ“Š Read how feature voting works Β Β β€’Β Β  πŸ—ΊοΈ View the roadmap


πŸ”“ Open-source licence

Software Release Radar is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).

AGPL-3.0 permits use, modification, distribution and commercial use while applying strong copyleft requirements. Covered modifications and derivative works must remain under AGPL-3.0. If a modified version is provided to users over a network, those users must be offered access to the corresponding source code under the licence.


β˜• Support the project

Software Release Radar is a side project I am building and maintaining while I look for my next role. If it saves you time or is useful in your environment, any support is appreciated and helps me keep improving it.

Support on Buy Me a Coffee Donate with PayPal

Financial support is optional. The project remains available under its open-source licence either way.


πŸ“š Documentation

Document What it is for
🐳 Docker deployment Install, back up, restore, upgrade and troubleshoot
βš™οΈ Configuration Environment variables and optional integrations
πŸ”” Notification controls Global, personal, channel and per-software alert policy
πŸ—οΈ Architecture Runtime services, data flow and design boundaries
πŸ” Security hardening Production deployment checklist
πŸ—ΊοΈ Roadmap Launch gates and future direction
πŸ“œ Changelog Release history
πŸ—³οΈ Feature voting How feature requests and roadmap polls work
🀝 Contributing Contribution and validation workflow
πŸ›‘οΈ Security policy How to report vulnerabilities
β˜• Support Project support and funding options

Software Release Radar logo

Track releases. Compare versions. Know what changed.

About

Self-hosted release and deployment intelligence for tracking upstream software, deployed versions and update decisions.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

11 stars

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages