Have it ready each morning
Schedule the briefing locally, recover missed mornings, and choose how to read it.
Prerequisites
Finish a manual morning report and inspect its source links and coverage. Confirm the computer’s timezone, the intended delivery time, and that the CLI can read the connectors without an interactive login or permission prompt.
Start the clock
Create .foundry/marbles/morning-schedule.ts beside morning-report.ts:
import { schedule } from "@foundry.sh/marbles";
import { morningReport } from "./morning-report";
for (const weekday of ["mon", "tue", "wed", "thu", "fri"] as const) {
schedule(morningReport).at({ weekday, hour: 8, minute: 30 });
}
Calendar slots use the host machine’s local timezone. Setting
timeZone in the briefing profile only changes displayed timestamps.
Choose the host timezone deliberately, especially if you travel or move
the workflow to another machine.
Run marbles, then start triggers in the dashboard. For a terminal process
without dashboard input:
marbles run </dev/null
Keep the host awake and the process running. If the computer slept through
the slot, run marbles roll morning-report when you return. The saved
departure preserves the reporting window, so this still covers your absence.
If collection failed, inspect the failure and rerun with the same explicit
window when comparing attempts.
Record departure with marbles roll leave-work when you actually leave.
A fixed evening schedule can overwrite the right cutoff during a late workday
or holiday. For several people, use separate profiles and artifact identities;
this example uses one workspace per person.
Read locally, then choose delivery
The sample saves the report files as an artifact and posts the readable briefing to the local Feed. Keeping both local lets you include selected private conversations without publishing them to the whole team.
To deliver it to Google Docs later, add a separate publishing step that takes the exact report version and a pre-created destination document ID. Grant write access to that destination, review its audience, and keep a delivery record keyed by report version and destination. Replace a known section or check that record before appending so a retry does not duplicate the report. Optional Slack delivery needs the same destination and duplicate handling. Neither publishing path is implemented by this sample.
Keep the briefing useful
Adjust the priorities when work changes. Inspect missed events and false urgency before changing the collector’s instructions. Compare the candidate against saved evidence using the evaluation loop. A personal briefing can link to Software Factory reports without starting development or on-call work itself.
Schedules explains local overlap handling. Manual launches and a second machine need their own coordination. Remote execution covers running the same setup on an always-on host; move credentials and state deliberately before switching off the local copy.