You need a report generated every Monday. A cache warmed every hour. Stale data cleaned up nightly. So you set up node-cron, or a Lambda with EventBridge, or a GitHub Action on a schedule. Then it silently fails and nobody notices for a week.
A function. A schedule. That's it.
You write this
const generateReport = pikkuFunc({
input: z.object({}),
output: ReportSchema,
func: async ({ db, email }) => {
const data = await db.analytics.aggregate('weekly')
const report = buildReport(data)
await email.send({ to: 'team@acme.dev', report })
return report
},
})
// Run every Monday at 9am
wireScheduler({ schedule: '0 9 * * 1', func: generateReport })
Same function you'd call from your API. Same auth, same types.
What Fabric gives you
Managed scheduling
Runs on our infra. No cron daemon, no Lambda triggers to configure.
Automatic retries
If a scheduled run fails, Fabric retries with backoff.
Execution history
See every run — when it started, how long it took, whether it succeeded.
Same permissions
Cron jobs run with the same auth model as your API. No backdoor execution.
Every run is traced.
No more "did the cron job run last night?"
Stop babysitting cron jobs.
Write the function. Set the schedule. Fabric runs it.