Summary
Request: allow heartbeat jobs to run through different runner modes instead of always waking the main Boss session.
Today, heartbeat jobs appear to run through the same main orchestration path as normal user turns. That works for context-heavy jobs, but it is inefficient and fragile for maintenance/research jobs that do not need the full main session.
Motivation
In long-running agent homes, not every scheduled job needs the main companion/Boss session.
Examples:
- disk/PM2/service health checks
- backup verification
- log/security inspection
- environment sensor checks
- briefing source collection
- package/update verification
For these, the main session should often only receive a short result summary, or only be involved on anomaly.
Always using the main session causes several practical problems:
- main conversation and heartbeat jobs contend for the same provider/session
- provider-specific checkpoint/compaction behavior can affect scheduled jobs
- long maintenance checks can timeout or block later heartbeats
- lightweight tasks consume the main model/context unnecessarily
- post-tool obligations such as record/state updates become easier to miss after long tool-heavy turns
This is especially noticeable with providers such as agy, where cli-jaw mediates an external CLI/session that has its own transcript/checkpoint lifecycle.
Proposed feature
Add optional runner fields to heartbeat jobs. Default remains current behavior.
Example:
{
"id": "system-check",
"name": "System Check",
"enabled": true,
"schedule": { "kind": "cron", "cron": "*/30 * * * *" },
"runner": "employee",
"employee": "Key",
"reportPolicy": "anomaly_only",
"prompt": "Check disk, PM2, and service state. Report status/changed/record_required/user_visible."
}
Suggested runner modes:
main: current behavior, run through the Boss/main session
employee: dispatch to a configured employee via jaw dispatch --agent <name>
script: run a deterministic local command/script and optionally escalate on anomaly
Suggested report policies:
always: send result to the active channel
anomaly_only: only notify when the result indicates warning/failure/user_visible
silent: store the result but do not notify
Reporting contract
For employee/script runners, a small structured contract would make the main session easier to orchestrate:
status: ok | warning | failed
changed: yes | no
record_required: yes | no
user_visible: yes | no
summary: ...
evidence: ...
next_action: ...
The Boss/main session can then decide whether to notify the user, record durable state, or ask the employee to retry.
Benefits
- avoids waking the main session for simple maintenance
- enables cheaper/lighter models for routine jobs
- reduces provider checkpoint/compaction side effects on the main conversation
- makes long-running homes more robust
- keeps the main companion agent focused on final judgment, personalization, and user-facing communication
Backward compatibility
If no runner is specified, use current behavior (main). This makes the feature opt-in and safe for existing heartbeat configurations.
Summary
Request: allow heartbeat jobs to run through different runner modes instead of always waking the main Boss session.
Today, heartbeat jobs appear to run through the same main orchestration path as normal user turns. That works for context-heavy jobs, but it is inefficient and fragile for maintenance/research jobs that do not need the full main session.
Motivation
In long-running agent homes, not every scheduled job needs the main companion/Boss session.
Examples:
For these, the main session should often only receive a short result summary, or only be involved on anomaly.
Always using the main session causes several practical problems:
This is especially noticeable with providers such as
agy, where cli-jaw mediates an external CLI/session that has its own transcript/checkpoint lifecycle.Proposed feature
Add optional runner fields to heartbeat jobs. Default remains current behavior.
Example:
{ "id": "system-check", "name": "System Check", "enabled": true, "schedule": { "kind": "cron", "cron": "*/30 * * * *" }, "runner": "employee", "employee": "Key", "reportPolicy": "anomaly_only", "prompt": "Check disk, PM2, and service state. Report status/changed/record_required/user_visible." }Suggested runner modes:
main: current behavior, run through the Boss/main sessionemployee: dispatch to a configured employee viajaw dispatch --agent <name>script: run a deterministic local command/script and optionally escalate on anomalySuggested report policies:
always: send result to the active channelanomaly_only: only notify when the result indicates warning/failure/user_visiblesilent: store the result but do not notifyReporting contract
For employee/script runners, a small structured contract would make the main session easier to orchestrate:
The Boss/main session can then decide whether to notify the user, record durable state, or ask the employee to retry.
Benefits
Backward compatibility
If no
runneris specified, use current behavior (main). This makes the feature opt-in and safe for existing heartbeat configurations.