Cross-platform Electron desktop app that watches GitHub repositories and runs shell commands or AI CLI tools when matching events occur.
- GitHub repository management with manual entry or GitHub CLI (
gh) import - Automatic local workspace clone and sync for AI CLI rules
- Event rules for pull requests, pushes, issues, comments, releases, and workflow runs
- Cron scheduled jobs for recurring shell or AI CLI automation
- Shell commands and AI CLI rules (Cursor, Codex, Claude)
- Conditional rule filters (branch, actor, label, changed paths)
- Rule presets and edit flows for rules and cron jobs
- Local GitHub webhook server for near real-time triggers
- Command templates with variables like
{{owner}},{{repo}},{{pr_number}},{{pr_title}} - Desktop notifications and optional external webhook notifications
- Config import/export and execution queue with concurrency limits
- SQLite-backed event deduplication and command execution logs
- Encrypted GitHub token storage via Electron
safeStorage - System tray support with pause/resume polling
- English and Turkish UI
- Automatic updates from GitHub Releases
- Linux, macOS, and Windows builds via
electron-builder
Trigd polls the GitHub REST API (GET /repos/{owner}/{repo}/events) on a configurable interval. On the first poll for a repository, existing events are recorded as a baseline so old activity does not trigger commands. New events are mapped to internal event types and matched against enabled rules.
Polling is not real-time. The default interval is 60 seconds.
- Node.js 20+
- npm
npm install --ignore-scripts
node node_modules/electron/install.js
npx electron-builder install-app-depsbetter-sqlite3 is rebuilt for Electron in the last step. A plain npm install may fail on very new system Node versions.
npm run devnpm run build
npm run build:linux
npm run build:win
npm run build:macPre-built installers are published on GitHub Releases.
| Platform | Artifact |
|---|---|
| Linux | .AppImage, .deb |
| macOS | .dmg |
| Windows | -setup.exe (NSIS) |
- Update
CHANGELOG.mdand bump the version inpackage.json. - Commit the changes on
main. - Create and push a version tag:
git tag v1.0.1
git push origin v1.0.1The Release workflow builds on Linux, macOS, and Windows and uploads artifacts to the GitHub release for that tag.
Packaged builds check GitHub Releases for updates on startup and can install them from Settings → Updates.
Create a GitHub Personal Access Token with:
public_repofor public repositoriesrepofor private repositories
Add the token in Settings inside the app.
Event: pull_request.opened
Command:
notify-send "PR #{{pr_number}} in {{owner}}/{{repo}}: {{pr_title}}"{{owner}},{{repo}},{{event_type}},{{actor}}{{pr_number}},{{pr_title}},{{branch}},{{sha}}{{issue_number}},{{issue_title}},{{comment_body}}{{release_tag}},{{workflow_name}},{{workflow_conclusion}}{{check_conclusion}},{{ref_type}},{{ref_name}}{{labels}},{{changed_files}}- Cron:
{{cron_name}},{{cron_schedule}},{{timestamp}}
Create scheduled jobs under Schedule to run shell or AI CLI commands on a cron expression. Link an optional repository for workspace-aware AI CLI runs.
Enable the local webhook server in Settings and configure GitHub repo webhooks to:
http://127.0.0.1:9876/webhook/{owner}/{repo}
Use the generated secret for HMAC signature verification.
Rules execute arbitrary shell commands on your machine. Only add repositories and commands you trust. See SECURITY.md for vulnerability reporting.
src/main— Electron main process, polling, command execution, storagesrc/preload— IPC bridge exposed aswindow.trigdsrc/renderer— Svelte UIsrc/shared— shared TypeScript types
Contributions are welcome. Please read CONTRIBUTING.md before opening a pull request.
This project follows the Contributor Covenant Code of Conduct.
