Repository navigation
Description
Suggestion: Generic, Provider-Agnostic Scheduler for Squad
Hey @bradygaster — wanted to float an idea that came out of real-world Squad usage.
The Problem
Right now, Squad's scheduled work is scattered across multiple mechanisms:
- GitHub Actions cron (e.g., daily digest, heartbeat workflows)
- Local polling scripts (e.g., ralph-watch.ps1 with hardcoded 5-min intervals)
- Manual triggers (workflow_dispatch for ad-hoc runs)
There's no unified view of what Squad is supposed to do regularly. Schedules are tightly coupled to their infrastructure, making it easy to forget tasks or lose them when switching environments.
The Proposal
A Squad Scheduler with a single .squad/schedule.json manifest that declares all recurring work, paired with provider adapters that handle execution:
Schedule manifest — declarative JSON defining:
- Trigger types:
cron,interval,event,startup,webhook - Task types:
workflow(GitHub dispatch),script(local shell),copilot(agent session),webhook(HTTP),function(TypeScript) - Per-task config: retry policy, timeout, notification channels, tags
Provider adapters (plugin architecture):
github-actions— dispatch workflows via GitHub's schedulerlocal-polling— ralph-watch.ps1 evaluates schedule.json each cyclewindows-scheduler— OS-level persistence viaNew-ScheduledTaskhttp-webhook— external trigger supportcopilot-agent— dispatch Copilot sessions for complex work
Key features:
- Single source of truth for all scheduled tasks
- Provider fallback chains (e.g., GitHub Actions primary, local polling fallback)
- Execution history and failure alerting
- Lock file for de-duplication across concurrent instances
- Clean migration path from existing ad-hoc schedules
Example (Minimal MVP)
json { "version": 1, "schedules": [ { "id": "ralph-heartbeat", "name": "Ralph Heartbeat", "enabled": true, "trigger": { "type": "interval", "intervalSeconds": 300 }, "task": { "type": "workflow", "ref": ".github/workflows/squad-heartbeat.yml" }, "providers": ["local-polling", "github-actions"] }, { "id": "daily-digest", "name": "Daily Digest", "enabled": true, "trigger": { "type": "cron", "expression": "0 8 * * *" }, "task": { "type": "workflow", "ref": ".github/workflows/squad-daily-digest.yml" }, "providers": ["github-actions"] } ] }
This came from issue tamirdresher_microsoft/tamresearch1#199. We have a full design doc ready and want to try it locally first, but figured it's worth tracking upstream. Would love your thoughts on whether this fits Squad's direction.
cc @bradygaster
Activity
github-actions commentedon Mar 9, 2026
📋 Assigned to Flight (Lead)
Issue: #296 — Suggestion: Generic, provider-agnostic scheduler for Squad
Flight will pick this up in the next Copilot session.
github-actions commentedon Mar 13, 2026
📋 Assigned to Flight (Lead)
Issue: #296 — Suggestion: Generic, provider-agnostic scheduler for Squad
Flight will pick this up in the next Copilot session.
feat: generic provider-agnostic scheduler (github#296)
docs: add documentation for generic scheduler (github#296)
Generic provider-agnostic scheduler (#445)
bradygaster commentedon Mar 24, 2026
Closing — no demand signal beyond the original suggestion. If scheduling becomes a real need, it'll come back as a concrete feature request with a use case.
chore(squad): Ralph round 1 — #198 ADR monitoring, #199 scheduler sug…