crewship digest
The workspace-digest routine (issue #1422 item 4) is a token-zero ops digest — run counts, total cost, and top failures over a trailing 24h window — posted to the workspace inbox and fanned out to Slack/email/etc via your existing notification channel preferences. It ships seeded into every fresh workspace;crewship digest enable
creates it on demand for a workspace that predates the template (or that
nuked its seed data) and wires a cron schedule.
How it’s built
Three deterministic step types, zero LLM spend, zero network egress:query(source: pipeline_runs) — a read-only aggregate over the run’s own workspace, strictly scoped toworkspace_id(see thequerystep docs).transform— extracts the pre-renderedsummary_mdfield from the query step’s JSON output.notify(to: workspace) — posts the digest to the workspace inbox. This is the existing #1412 notification system, used unmodified: recipients configure Slack/email/etc delivery viacrewship notifychannel+crewship notify prefs, exactly like any other routine’snotifystep.
agentless: true — genuinely, not “agentless-ish”:
every step in the chain is deterministic.
crewship digest enable
Ensures the routine exists and is scheduled. Both steps are idempotent —
running it again with the routine and a schedule already in place is a
no-op (other than confirming the current state).
What it does, step by step:
GET /pipelines/workspace-digest— if the routine already exists, skip creation.- If missing: resolves
--crewto a crew id, then savesseeddata.WorkspaceDigestDefinition— the same definition the seeder uses — through the normaltest_run→save_token→saveflow (identical toroutine save; no privileged skip-gate path). - Lists existing schedules; if one already targets
workspace-digest, leaves it alone and reports its id. Otherwise creates one with the resolved cron expression.
--format json returns {routine_created, schedule_created, schedule_id, cron_expr} for scripting.
Changing the cadence or turning it off
digest enable never touches an existing schedule’s cadence — use the
ordinary schedule commands once it exists:
See also
- Routines guide —
querystep - Routines guide — Cron schedules
- Outbound notifications guide — configure Slack/email delivery for the digest (and every other
notifystep / terminal-run notification) crewship notify—notify prefs/notifychannelmanage delivery