Skip to main content
--every takes minutes or hours (30m, 6h). Re-running with a new interval replaces the old one. Logs land at ~/.duckbrain/<instance>/logs/sync.log, and the schedule pins the instance that was active when you ran the command (DUCKBRAIN_INSTANCE).

macOS: launchd

Installs a LaunchAgent at ~/Library/LaunchAgents/sh.duckbrain.sync.plist. Uses launchd, not cron: jobs missed while the laptop sleeps fire on wake instead of being skipped.

Linux: systemd user timer

Installs duckbrain-sync.service + duckbrain-sync.timer under ~/.config/systemd/user/ and enables the timer. Persistent=true is the systemd analog of launchd’s fire-on-wake: a run missed while the machine was off fires at next boot.
On a headless VM or server, run loginctl enable-linger $USER once so the user timer runs without an active login session.

Verify

Scheduled runs are safe alongside hook-triggered syncs and manual runs: sync holds a single-flight lock, so overlapping triggers no-op instead of racing.