An inactivity-triggered release system powered by GitHub Actions.
This repository provides a template for automatically releasing predefined content after a prolonged period of GitHub inactivity.
It relies solely on public GitHub activity as a heartbeat signal and executes without external services.
- Write your own message in
payload.md - Run
utils/enc_payload.py, getpayload.keyandpayload.enc - Set content of
payload.keyasPAYLOAD_KEYsecret in GitHub Actions - Upload
payload.encto this repository - NEVER upload
payload.keyorpayload.mdto anywhere - Edit
config.json:
- "username": GitHub username to monitor
- "inactivity_days": int, days of inactivity to trigger, should less than 89
- "payload_path": path of
payload.enc, keep aspayload.encif you follow this guide - "output_path": decrypted
payload.encto this path, keep asREADME.mdif you follow this guide - "one_shot": bool, whether to trigger only once
- "handle_404": bool, whether to handle GitHub API 404 as trigger
- Test the Actions workflow
$env:PAYLOAD_KEY = "STkNThGBxPs12r308bZX1kBgu4nxAvL46FMxFjyYSUQ="gAAAAABpVjXDl0UfGnlnEhlJKpoElhAf-Do2rCY6YTcF_f8K-yO22HTV_7TKXIFpKWv02j1TaYBUdYhTCKDLxByW7KwF6G3DrNtOLPEp-OBkmve9Wplw184nlgf98oWSM-g5VHnwXem7
- Dead man's switch
- Long-term project handoff
- Lost-access contingency
- Inactivity-based disclosure
- A scheduled GitHub Actions workflow runs daily
- Public GitHub activity is checked via the GitHub API
- Inactivity duration is calculated
- If a configurable threshold is exceeded:
- A predefined payload is decrypted
- The payload is published to the repository
Any of the following will prevent or reset the trigger:
- New GitHub activity (for example, star or unstar any repository)
- Manual state reset
No assumptions are made about the user's state. Only inactivity is evaluated.
Fernet is used for convenience, not for long-term archival security.