Linux cron doesn't run when your Mac sleeps. AWS Lambda costs money for trivial workloads. Airflow requires a cluster. QueryFlow's scheduler runs locally on your Mac via macOS SMAppService, with automatic catch-up on wake.
Quick answer: QueryFlow schedules SQL queries on macOS using SMAppService (Apple's modern login item framework). Schedules support cron expressions, interval triggers, daily/weekly/monthly recurrence, and manual execution. Jobs run while your Mac is on, with missed jobs catching up automatically on wake. Works across Snowflake, Redshift, Postgres, MySQL, and Salesforce SOQL.
Several options exist but none feel right. Mac's launchd is powerful but requires writing plist files by hand. Cron works but has surprising behavior around macOS sleep/wake. AWS Lambda scheduled events work but introduce cloud infrastructure for trivial workloads. Airflow is enterprise-grade but requires a server and significant operational complexity. For a developer who just wants to run a SQL query every morning, all of these are overkill.
Built on SMAppService — Apple's modern API for background services and login items. Available since macOS 13, deeply integrated with macOS power management. Jobs are registered with macOS, run as background processes (no UI overhead), and properly handle sleep/wake cycles. App Store compliant (SMAppService is the Apple-blessed approach for this kind of work).
Cron expression: standard 5-field cron syntax (0 6 * * 1-5 for weekdays at 6 AM). Interval: every N minutes/hours/days. Daily at specific time. Weekly on specific days at specific time. Monthly on specific day. Manual: triggered by clicking Run in the UI. Each schedule can have a name, enabled/disabled toggle, and target (which query or pipeline to execute).
When your Mac sleeps, scheduled jobs don't fire. When your Mac wakes, QueryFlow checks for missed schedules and queues them to run. For a query scheduled at 6 AM that should have fired while you were asleep, the query runs within seconds of wake. The Observatory dashboard shows both 'scheduled time' and 'actual run time' for each execution so you can see the offset.
For jobs that absolutely cannot tolerate the catch-up delay (a 6 AM report that must be in someone's inbox by 6:15), use macOS Power Schedule (System Settings → Battery → Schedule) to wake your Mac before the scheduled time. The Mac wakes, QueryFlow fires the job at the scheduled time, the report goes out on time. Many QueryFlow users do this for their highest-priority morning jobs.
Cron on Mac: free, but doesn't handle sleep gracefully. AWS Lambda: free tier 1M requests/month, but introduces cloud complexity for simple workloads. QueryFlow: $299/year, but handles all common scheduling needs in a desktop app with no cloud infrastructure. For developers who already have a Mac running, QueryFlow eliminates the cloud architecture cost (engineering time + operational responsibility) of Lambda for daily-frequency workloads.
v1.5 schedules are independent — each job has its own trigger. For sequential dependencies (job B runs after job A completes), use a Flow Book that runs both queries in order. For more complex DAGs, the roadmap includes job-to-job dependency support based on user demand. For now, Flow Books handle 90% of dependency needs.
Common QueryFlow scheduling patterns observed across users: daily 6 AM data refresh from production Postgres to Snowflake (incremental sync). Hourly business-hours pipeline running EOD sales calculations and posting to Slack. Weekly Monday morning bulk Salesforce update from warehouse-curated lead lists. Monthly compliance export of audit data to S3 archive. Each of these previously required cloud infrastructure; with QueryFlow they run on a Mac mini in someone's office.
Jobs don't fire when the Mac is fully powered off. They catch up when the Mac next boots and you launch QueryFlow (or QueryFlow auto-launches as a login item). For 24/7 reliability, a dedicated always-on Mac mini ($600 hardware investment) is the typical solution.
QueryFlow runs as a user-level app, not a system daemon. It needs a logged-in user account active. On a dedicated Mac mini, auto-login + 'Reopen apps on login' achieves the same effect as a service.
Background scheduler operations are minimal. The energy impact comes from the queries themselves — a complex Snowflake query consumes the same energy whether triggered by you or by the scheduler. For battery life concerns, schedule jobs during expected plug-in hours.
Yes. The Observatory dashboard shows all scheduled jobs with their next-run times, last-run times, success rates, and recent run history. You can filter by status, sort by next run, search by name.
Yes. Each schedule has configurable retry behavior: max attempts, backoff interval between attempts, and what counts as failure (any error vs specific error types). Default is 3 attempts with exponential backoff.
14-day free trial. Build your first scheduled SQL query and watch it run while your Mac sleeps.