GitHub/Forgejo notification monitoring - custom fork with Telegram delivery
Find a file
al-munazzim b516cb2a1e
fix: re-open dismissed notifications on new GitHub activity (#3)
* feat: add tag/untag/check-prior commands for triage dedup

- Add 'tags' column to notifications table (comma-separated)
- argus notif tag <id> <tag> — add tags like triaged, hostile, follow-up
- argus notif untag <id> <tag> — remove tags
- argus notif check-prior <url> — check if URL was previously triaged
  (exit 0 = prior found, exit 1 = first touch)
- Show tags in notif list output with 🏷 prefix
- Add processing + tags columns to migration function
- Bump version to 0.5.0

Motivation: postmortem/2026-03-26-duplicate-triage-2504.md
Prevents duplicate triage comments by providing a fast local
dedup check before hitting the GitHub API.

* fix: re-open dismissed notifications on new GitHub activity

Previously, notif pull skipped any notification ID already in the DB,
even if GitHub re-triggered it (new @mention, comment, etc).
This caused mentions to be silently swallowed - 5 notifications
were stuck dismissed for up to 4 days.

Now: if a dismissed notification appears in the GitHub API again
(meaning it has new unread activity), undismiss it and update the
reason field. Reports re-opened count in pull output.

* fix: avoid sqlite3.Row.get in notif audit escalation

---------

Co-authored-by: Nazim <nazim@openclaw.ai>
2026-04-29 21:08:16 +02:00
bin fix: re-open dismissed notifications on new GitHub activity (#3) 2026-04-29 21:08:16 +02:00
dashboard dashboard: show all notifications with action taken, filter dismissals from activity 2026-03-26 17:21:39 +00:00
docs docs: add agent behavioral guidelines and AGENTS.md 2026-03-27 05:21:47 +00:00
lib fix: re-open dismissed notifications on new GitHub activity (#3) 2026-04-29 21:08:16 +02:00
scripts feat: add cron job setup for automated notification auditing 2026-02-22 13:33:31 +00:00
systemd feat: single port config (dashboard on port, datasette on port+1) 2026-02-22 10:34:57 +00:00
AGENTS.md docs: add agent behavioral guidelines and AGENTS.md 2026-03-27 05:21:47 +00:00
CHANGELOG.md feat: add repo watching commands 2026-02-22 11:56:01 +00:00
LICENSE feat: initial Argus implementation 2026-02-22 10:25:46 +00:00
README.md docs: remove Port Convention and Author sections from README 2026-03-19 14:41:23 +00:00
VERSION feat: add repo watching commands 2026-02-22 11:56:01 +00:00

Argus 👁️

CLI tool for GitHub/Forgejo community awareness — tracking notifications, logging activity, managing escalations.

Named after Argus Panoptes, the all-seeing giant of Greek mythology.

Features

  • Notification triage — Pull, act, or dismiss GitHub notifications
  • Activity logging — Track community actions
  • Escalation management — Flag and track issues needing attention
  • Dashboard — Visual overview via Datasette + static HTML
  • Systemd service — Run in background

Quick Start

# Install
./scripts/install.sh

# Initialize database
argus init

# Set up authentication (choose one)
gh auth login                    # GitHub
export ARGUS_BACKEND=tea         # Forgejo (needs tea token with read:notification)

# Pull notifications
argus notif pull

# Check status
argus status

# Start dashboard
systemctl enable --now argus

Agent Integration

For AI agents using OpenClaw, add this to your HEARTBEAT.md for periodic community awareness:

### Argus Community Awareness (Daily)
1. **Check status**: `argus status`
2. **Pull notifications**: `argus notif pull`
3. **Review pending**: `argus notif list --pending --limit 5`
4. **Triage**: For each pending notification:
   - If actionable: `argus notif act <id> <action> "<detail>"`
   - If not relevant: `argus notif dismiss <id> "<reason>"`
5. **Audit stale**: `argus notif audit --stale-hours 48`
6. **Log activity**: Record significant actions with `argus activity log`
7. **Check escalations**: `argus escalate list --status open`

The install script outputs this block — just copy it to your HEARTBEAT.md.

Commands

Core

Command Description
argus init Create database
argus version Show version
argus status Summary overview

Repositories

Command Description
argus repo list List watched repositories
argus repo watch <owner/repo> Subscribe to a repository
argus repo unwatch <owner/repo> Unsubscribe from a repository

Notifications

Command Description
argus notif pull [--backend gh|tea] Fetch from GitHub/Forgejo
argus notif list [--pending] List notifications
argus notif act <id> <action> Mark as acted
argus notif dismiss <id> [reason] Dismiss
argus notif audit Auto-escalate stale

Activity

Command Description
argus activity log <action> <detail> Log action
argus activity list Show recent

Escalations

Command Description
argus escalate create --category --title Create
argus escalate list [--status] List
argus escalate ack <id> Acknowledge
argus escalate resolve <id> --by --resolution Resolve

Service

Command Description
argus serve Start Datasette + dashboard

Configuration

Environment variables:

Variable Default Description
ARGUS_DB ~/.argus/argus.db Database path
ARGUS_PORT 8100 Dashboard port (datasette runs on port+1)
ARGUS_BACKEND gh Backend: gh (GitHub) or tea (Forgejo)
GH_TOKEN GitHub API token (for gh backend)

Architecture

┌─────────────────────────────────────────────────┐
│                    argus CLI                     │
│  notif pull | activity log | escalate | serve   │
└─────────────────┬───────────────────────────────┘
                  │
                  ▼
┌─────────────────────────────────────────────────┐
│              ~/.argus/argus.db                  │
│   repos | issues | notifications | activity    │
└─────────────────┬───────────────────────────────┘
                  │
        ┌─────────┴─────────┐
        ▼                   ▼
┌───────────────┐   ┌───────────────┐
│   Dashboard   │   │   Datasette   │
│  :PORT (HTML) │   │ :PORT+1 (API) │
└───────────────┘   └───────────────┘

Default: Dashboard on 8100, Datasette on 8101. Set ARGUS_PORT to change base port.

Installation

Prerequisites

  • Python 3.9+
  • pip
  • gh CLI (for GitHub integration)

Install

git clone https://forgejo.tail593e12.ts.net/Zeus/argus.git /opt/argus
cd /opt/argus && ./scripts/install.sh

Uninstall

/opt/argus/scripts/uninstall.sh

Systemd Service

systemctl enable argus   # Start on boot
systemctl start argus    # Start now
systemctl status argus   # Check status
journalctl -u argus -f   # View logs

License

MIT