[{"data":1,"prerenderedAt":1142},["ShallowReactive",2],{"docs-\u002Fdocs\u002Ffeatures\u002Fschedulers":3},{"id":4,"title":5,"body":6,"description":1135,"extension":1136,"meta":1137,"navigation":582,"path":1138,"seo":1139,"stem":1140,"__hash__":1141},"docs\u002Fdocs\u002Ffeatures\u002Fschedulers.md","Schedulers",{"type":7,"value":8,"toc":1118},"minimark",[9,13,22,29,51,58,65,70,76,125,131,163,173,177,180,263,266,286,298,302,309,434,439,451,495,513,517,521,598,601,605,654,658,661,750,763,767,833,837,848,855,870,879,883,891,909,919,929,933,947,954,960,1086,1092,1096,1114],[10,11,5],"h1",{"id":12},"schedulers",[14,15,16,17,21],"p",{},"The scheduler lets you persist a ",[18,19,20],"strong",{},"prompt plus a trigger"," and have Slo run it later, without a human sitting in the TUI. Daily summaries, repo-watch monitoring, release-prep reviews, one-shot audits — anything you'd otherwise remember to run yourself.",[14,23,24,25,28],{},"Slo does ",[18,26,27],{},"not"," ship a long-running daemon that sleeps and polls. Instead it integrates with the scheduler your operating system already runs:",[30,31,32,43],"ul",{},[33,34,35,38,39],"li",{},[18,36,37],{},"macOS"," → ",[40,41,42],"code",{},"launchd",[33,44,45,38,48],{},[18,46,47],{},"Linux",[40,49,50],{},"cron",[14,52,53,54,57],{},"Those wake up on schedule and invoke ",[40,55,56],{},"slo schedule execute --name \u003Cschedule-id>",", which loads the persisted schedule and handles exactly one fire.",[14,59,60],{},[61,62],"img",{"alt":63,"src":64},"slo schedule list and reports — the scheduler's operational view.","\u002Fmedia\u002Fscheduler-list.svg",[66,67,69],"h2",{"id":68},"core-concepts","Core concepts",[14,71,72,75],{},[18,73,74],{},"Session modes"," decide whether fires accumulate state:",[77,78,79,95],"table",{},[80,81,82],"thead",{},[83,84,85,89,92],"tr",{},[86,87,88],"th",{},"Mode",[86,90,91],{},"Each fire…",[86,93,94],{},"Use it for",[96,97,98,112],"tbody",{},[83,99,100,106,109],{},[101,102,103],"td",{},[40,104,105],{},"fresh",[101,107,108],{},"runs as a new, isolated headless run",[101,110,111],{},"daily summaries, batch checks, one-off analyses",[83,113,114,119,122],{},[101,115,116],{},[40,117,118],{},"continuous",[101,120,121],{},"targets one evolving session over time",[101,123,124],{},"repo-watch, release-prep, rolling operational reviews",[14,126,127,130],{},[18,128,129],{},"Delivery paths"," are how a fire actually lands:",[30,132,133,143,153],{},[33,134,135,138,139,142],{},[40,136,137],{},"fresh_headless"," — a brand-new ",[40,140,141],{},"slo run"," process.",[33,144,145,148,149,152],{},[40,146,147],{},"resume_headless"," — an existing session resumed headlessly with ",[40,150,151],{},"slo run --resume",".",[33,154,155,158,159,162],{},[40,156,157],{},"session_inbox"," — work queued into an ",[18,160,161],{},"already-running TUI session"," instead of starting a second writer.",[14,164,165,168,169,172],{},[18,166,167],{},"Run records"," — every fire appends an immutable record under ",[40,170,171],{},"$SLO_HOME\u002Fschedules\u002F\u003Cid>\u002Fruns\u002F\u003Crun_id>.json",", giving you a full reporting trail of what executed, queued, coalesced, or was skipped.",[66,174,176],{"id":175},"quick-start","Quick start",[14,178,179],{},"Create a fresh daily summary:",[181,182,187],"pre",{"className":183,"code":184,"language":185,"meta":186,"style":186},"language-bash shiki shiki-themes github-dark-high-contrast","slo schedule add \\\n  --name \"Daily Summary\" \\\n  --prompt \"Summarize the repo changes and failing tests from today.\" \\\n  --cron \"0 18 * * *\" \\\n  --cwd \u002FUsers\u002Fyou\u002FCode\u002Fmy-project \\\n  --session-mode fresh\n","bash","",[40,188,189,209,221,232,243,254],{"__ignoreMap":186},[190,191,194,198,202,205],"span",{"class":192,"line":193},"line",1,[190,195,197],{"class":196},"s_sBn","slo",[190,199,201],{"class":200},"sTRMh"," schedule",[190,203,204],{"class":200}," add",[190,206,208],{"class":207},"sWyjQ"," \\\n",[190,210,212,216,219],{"class":192,"line":211},2,[190,213,215],{"class":214},"sCcAr","  --name",[190,217,218],{"class":200}," \"Daily Summary\"",[190,220,208],{"class":207},[190,222,224,227,230],{"class":192,"line":223},3,[190,225,226],{"class":214},"  --prompt",[190,228,229],{"class":200}," \"Summarize the repo changes and failing tests from today.\"",[190,231,208],{"class":207},[190,233,235,238,241],{"class":192,"line":234},4,[190,236,237],{"class":214},"  --cron",[190,239,240],{"class":200}," \"0 18 * * *\"",[190,242,208],{"class":207},[190,244,246,249,252],{"class":192,"line":245},5,[190,247,248],{"class":214},"  --cwd",[190,250,251],{"class":200}," \u002FUsers\u002Fyou\u002FCode\u002Fmy-project",[190,253,208],{"class":207},[190,255,257,260],{"class":192,"line":256},6,[190,258,259],{"class":214},"  --session-mode",[190,261,262],{"class":200}," fresh\n",[14,264,265],{},"Register it with the OS scheduler so it actually fires:",[181,267,269],{"className":183,"code":268,"language":185,"meta":186,"style":186},"slo schedule install --name \"Daily Summary\"\n",[40,270,271],{"__ignoreMap":186},[190,272,273,275,277,280,283],{"class":192,"line":193},[190,274,197],{"class":196},[190,276,201],{"class":200},[190,278,279],{"class":200}," install",[190,281,282],{"class":214}," --name",[190,284,285],{"class":200}," \"Daily Summary\"\n",[14,287,288,289,291,292,294,295,297],{},"That's it. At 18:00 every day, ",[40,290,42],{}," (or ",[40,293,50],{},") wakes and runs the prompt as a headless ",[40,296,141],{},", writing one run record per fire.",[66,299,301],{"id":300},"command-reference","Command reference",[14,303,304,305,308],{},"Everything lives under ",[40,306,307],{},"slo schedule",":",[77,310,311,321],{},[80,312,313],{},[83,314,315,318],{},[86,316,317],{},"Command",[86,319,320],{},"What it does",[96,322,323,333,343,353,363,382,396,406,416],{},[83,324,325,330],{},[101,326,327],{},[40,328,329],{},"add",[101,331,332],{},"Create a new persisted schedule definition.",[83,334,335,340],{},[101,336,337],{},[40,338,339],{},"edit",[101,341,342],{},"Rewrite an existing schedule in place (keeps its id).",[83,344,345,350],{},[101,346,347],{},[40,348,349],{},"list",[101,351,352],{},"List schedules with mode, trigger, target, install state, last delivery.",[83,354,355,360],{},[101,356,357],{},[40,358,359],{},"show",[101,361,362],{},"Show one schedule summary.",[83,364,365,375],{},[101,366,367,370,371,374],{},[40,368,369],{},"execute"," (alias ",[40,372,373],{},"run",")",[101,376,377,378,381],{},"Fire one schedule ",[18,379,380],{},"now"," — the canonical OS entrypoint.",[83,383,384,393],{},[101,385,386,389,390],{},[40,387,388],{},"install"," \u002F ",[40,391,392],{},"uninstall",[101,394,395],{},"Register \u002F remove the schedule with the OS scheduler.",[83,397,398,403],{},[101,399,400],{},[40,401,402],{},"reports",[101,404,405],{},"List immutable run records for a schedule.",[83,407,408,413],{},[101,409,410],{},[40,411,412],{},"show-report",[101,414,415],{},"Show one run record in detail.",[83,417,418,423],{},[101,419,420],{},[40,421,422],{},"cleanup",[101,424,425,426,429,430,433],{},"Prune old run records, keeping the newest ",[40,427,428],{},"--keep"," (default ",[40,431,432],{},"100",").",[435,436,438],"h3",{"id":437},"triggers","Triggers",[14,440,441,443,444,446,447,450],{},[40,442,329],{}," and ",[40,445,339],{}," take ",[18,448,449],{},"exactly one"," trigger:",[77,452,453,463],{},[80,454,455],{},[83,456,457,460],{},[86,458,459],{},"Flag",[86,461,462],{},"Meaning",[96,464,465,475,485],{},[83,466,467,472],{},[101,468,469],{},[40,470,471],{},"--cron \"0 18 * * *\"",[101,473,474],{},"Five-field cron expression",[83,476,477,482],{},[101,478,479],{},[40,480,481],{},"--interval-seconds 300",[101,483,484],{},"Fire every N seconds",[83,486,487,492],{},[101,488,489],{},[40,490,491],{},"--run-at \"2026-07-20T09:00:00+07:00\"",[101,493,494],{},"One-shot fire at an ISO-8601 timestamp",[14,496,497,498,501,502,505,506,389,509,512],{},"Add ",[40,499,500],{},"--tz"," to set the timezone for cron-style triggers (default ",[40,503,504],{},"UTC","), and ",[40,507,508],{},"--model",[40,510,511],{},"--cwd"," to override the model and working directory passed to the headless run.",[66,514,516],{"id":515},"examples","Examples",[435,518,520],{"id":519},"a-fresh-daily-report-with-no-state","A fresh daily report with no state",[181,522,524],{"className":183,"code":523,"language":185,"meta":186,"style":186},"slo schedule add \\\n  --name \"Daily Failures\" \\\n  --prompt \"Summarize all failing tests in the repo.\" \\\n  --cron \"0 9 * * *\" \\\n  --cwd \u002FUsers\u002Fyou\u002FCode\u002Fmy-project \\\n  --session-mode fresh\n\nslo schedule install --name \"Daily Failures\"\n",[40,525,526,536,545,554,563,571,577,584],{"__ignoreMap":186},[190,527,528,530,532,534],{"class":192,"line":193},[190,529,197],{"class":196},[190,531,201],{"class":200},[190,533,204],{"class":200},[190,535,208],{"class":207},[190,537,538,540,543],{"class":192,"line":211},[190,539,215],{"class":214},[190,541,542],{"class":200}," \"Daily Failures\"",[190,544,208],{"class":207},[190,546,547,549,552],{"class":192,"line":223},[190,548,226],{"class":214},[190,550,551],{"class":200}," \"Summarize all failing tests in the repo.\"",[190,553,208],{"class":207},[190,555,556,558,561],{"class":192,"line":234},[190,557,237],{"class":214},[190,559,560],{"class":200}," \"0 9 * * *\"",[190,562,208],{"class":207},[190,564,565,567,569],{"class":192,"line":245},[190,566,248],{"class":214},[190,568,251],{"class":200},[190,570,208],{"class":207},[190,572,573,575],{"class":192,"line":256},[190,574,259],{"class":214},[190,576,262],{"class":200},[190,578,580],{"class":192,"line":579},7,[190,581,583],{"emptyLinePlaceholder":582},true,"\n",[190,585,587,589,591,593,595],{"class":192,"line":586},8,[190,588,197],{"class":196},[190,590,201],{"class":200},[190,592,279],{"class":200},[190,594,282],{"class":214},[190,596,597],{"class":200}," \"Daily Failures\"\n",[14,599,600],{},"Each fire is independent: start process → run prompt → write one run record → exit.",[435,602,604],{"id":603},"a-one-shot-future-audit","A one-shot future audit",[181,606,608],{"className":183,"code":607,"language":185,"meta":186,"style":186},"slo schedule add \\\n  --name \"Release Audit\" \\\n  --prompt \"Audit the release branch and summarize deployment blockers.\" \\\n  --run-at \"2026-07-20T09:00:00+07:00\" \\\n  --session-mode fresh\n",[40,609,610,620,629,638,648],{"__ignoreMap":186},[190,611,612,614,616,618],{"class":192,"line":193},[190,613,197],{"class":196},[190,615,201],{"class":200},[190,617,204],{"class":200},[190,619,208],{"class":207},[190,621,622,624,627],{"class":192,"line":211},[190,623,215],{"class":214},[190,625,626],{"class":200}," \"Release Audit\"",[190,628,208],{"class":207},[190,630,631,633,636],{"class":192,"line":223},[190,632,226],{"class":214},[190,634,635],{"class":200}," \"Audit the release branch and summarize deployment blockers.\"",[190,637,208],{"class":207},[190,639,640,643,646],{"class":192,"line":234},[190,641,642],{"class":214},"  --run-at",[190,644,645],{"class":200}," \"2026-07-20T09:00:00+07:00\"",[190,647,208],{"class":207},[190,649,650,652],{"class":192,"line":245},[190,651,259],{"class":214},[190,653,262],{"class":200},[435,655,657],{"id":656},"a-continuous-repo-watch-with-coalescing","A continuous repo-watch with coalescing",[14,659,660],{},"For high-frequency monitoring, target one rolling session and coalesce pending work so the session isn't flooded when you return after being away:",[181,662,664],{"className":183,"code":663,"language":185,"meta":186,"style":186},"slo schedule add \\\n  --name \"Repo Watch\" \\\n  --prompt \"Check the repo and summarize new failures, flaky tests, and regressions.\" \\\n  --interval-seconds 300 \\\n  --cwd \u002FUsers\u002Fyou\u002FCode\u002Fmy-project \\\n  --session-mode continuous \\\n  --session-reference repo-watch \\\n  --coalescing-mode latest_by_key \\\n  --coalescing-key repo-watch\n",[40,665,666,676,685,694,704,712,721,731,741],{"__ignoreMap":186},[190,667,668,670,672,674],{"class":192,"line":193},[190,669,197],{"class":196},[190,671,201],{"class":200},[190,673,204],{"class":200},[190,675,208],{"class":207},[190,677,678,680,683],{"class":192,"line":211},[190,679,215],{"class":214},[190,681,682],{"class":200}," \"Repo Watch\"",[190,684,208],{"class":207},[190,686,687,689,692],{"class":192,"line":223},[190,688,226],{"class":214},[190,690,691],{"class":200}," \"Check the repo and summarize new failures, flaky tests, and regressions.\"",[190,693,208],{"class":207},[190,695,696,699,702],{"class":192,"line":234},[190,697,698],{"class":214},"  --interval-seconds",[190,700,701],{"class":214}," 300",[190,703,208],{"class":207},[190,705,706,708,710],{"class":192,"line":245},[190,707,248],{"class":214},[190,709,251],{"class":200},[190,711,208],{"class":207},[190,713,714,716,719],{"class":192,"line":256},[190,715,259],{"class":214},[190,717,718],{"class":200}," continuous",[190,720,208],{"class":207},[190,722,723,726,729],{"class":192,"line":579},[190,724,725],{"class":214},"  --session-reference",[190,727,728],{"class":200}," repo-watch",[190,730,208],{"class":207},[190,732,733,736,739],{"class":192,"line":586},[190,734,735],{"class":214},"  --coalescing-mode",[190,737,738],{"class":200}," latest_by_key",[190,740,208],{"class":207},[190,742,744,747],{"class":192,"line":743},9,[190,745,746],{"class":214},"  --coalescing-key",[190,748,749],{"class":200}," repo-watch\n",[14,751,752,755,756,759,760,152],{},[40,753,754],{},"latest_by_key"," means a newer fire ",[18,757,758],{},"replaces"," an older pending item with the same key rather than piling up — the run record shows ",[40,761,762],{},"delivery_state=coalesced",[435,764,766],{"id":765},"inspect-and-prune","Inspect and prune",[181,768,770],{"className":183,"code":769,"language":185,"meta":186,"style":186},"slo schedule list\nslo schedule reports --name \"Repo Watch\"\nslo schedule show-report --name \"Repo Watch\" --run-id 6d9a7e5b-...\nslo schedule cleanup --name \"Repo Watch\" --keep 25\n",[40,771,772,781,795,814],{"__ignoreMap":186},[190,773,774,776,778],{"class":192,"line":193},[190,775,197],{"class":196},[190,777,201],{"class":200},[190,779,780],{"class":200}," list\n",[190,782,783,785,787,790,792],{"class":192,"line":211},[190,784,197],{"class":196},[190,786,201],{"class":200},[190,788,789],{"class":200}," reports",[190,791,282],{"class":214},[190,793,794],{"class":200}," \"Repo Watch\"\n",[190,796,797,799,801,804,806,808,811],{"class":192,"line":223},[190,798,197],{"class":196},[190,800,201],{"class":200},[190,802,803],{"class":200}," show-report",[190,805,282],{"class":214},[190,807,682],{"class":200},[190,809,810],{"class":214}," --run-id",[190,812,813],{"class":200}," 6d9a7e5b-...\n",[190,815,816,818,820,823,825,827,830],{"class":192,"line":234},[190,817,197],{"class":196},[190,819,201],{"class":200},[190,821,822],{"class":200}," cleanup",[190,824,282],{"class":214},[190,826,682],{"class":200},[190,828,829],{"class":214}," --keep",[190,831,832],{"class":214}," 25\n",[66,834,836],{"id":835},"firing-into-a-live-tui-session-safely","Firing into a live TUI session safely",[14,838,839,840,843,844,847],{},"This is the most important safety property in the design. An open TUI session is already the ",[18,841,842],{},"writer"," for that conversation — it owns the in-memory state and may be mid-turn. Starting a second headless ",[40,845,846],{},"--resume"," against it would create a split-brain writer.",[14,849,850,851,854],{},"The scheduler avoids that with a ",[18,852,853],{},"lease + inbox"," model. When a continuous schedule targets a session that is currently open in the TUI:",[856,857,858,864,867],"ol",{},[33,859,860,861,863],{},"The runtime does ",[18,862,27],{}," spawn a second process.",[33,865,866],{},"It enqueues the work as an inbox message.",[33,868,869],{},"The TUI polls its inbox only when idle, claims the message, and starts a normal prompt turn inside the existing session.",[14,871,872,873,875,876,878],{},"So recurring scheduled work feeds a live session without ever creating concurrent writers. If the target session is ",[18,874,27],{}," currently open, the fire simply resumes it headlessly (",[40,877,147],{},") instead.",[66,880,882],{"id":881},"how-the-wake-up-works","How the wake-up works",[181,884,889],{"className":885,"code":887,"language":888,"meta":186},[886],"language-text","slo schedule add        →  persist prompt + trigger under $SLO_HOME\u002Fschedules\u002F\u003Cid>\u002F\nslo schedule install    →  register with the OS scheduler\nOS scheduler fires      →  slo schedule execute --name \u003Cid>\nSlo runtime             →  handle one fire, write one run record\n","text",[40,890,887],{"__ignoreMap":186},[14,892,893,898,899,902,903,443,905,908],{},[18,894,895,896,374],{},"macOS (",[40,897,42],{}," writes one plist per schedule under ",[40,900,901],{},"~\u002FLibrary\u002FLaunchAgents\u002Fcom.slo.schedule.\u003Cname>.plist",". Supports ",[18,904,50],{},[18,906,907],{},"interval"," triggers.",[14,910,911,916,917,908],{},[18,912,913,914,374],{},"Linux (",[40,915,50],{}," rewrites the user crontab with a stable marker block per schedule. Supports ",[18,918,50],{},[14,920,921,922,925,926,152],{},"Scheduler invocation logs are provisioned under ",[40,923,924],{},"$SLO_HOME\u002Fschedules\u002Flogs\u002F","; the authoritative result metadata is always the JSON run record under ",[40,927,928],{},"runs\u002F",[66,930,932],{"id":931},"scheduling-dynamic-workflows-and-orchestrator-check-ins","Scheduling dynamic workflows and orchestrator check-ins",[14,934,935,936,941,942,946],{},"A scheduled fire runs the standard headless runner, so pair it with a ",[937,938,940],"a",{"href":939},"#core-concepts","continuous session"," that is driving a ",[937,943,945],{"href":944},"\u002Fdocs\u002Ffeatures\u002Fdynamic-workflows","dynamic workflow"," and the scheduler becomes the heartbeat for supervised, recurring work.",[14,948,949,950,953],{},"The pattern: an orchestrator owns a long-lived session; the scheduler fires on a timer; each fire lands in that session's inbox and asks the orchestrator to ",[18,951,952],{},"check in on its sub-agents"," — poll which phases are still running, retry anything that stalled, and synthesize whatever has completed since the last tick.",[14,955,956],{},[61,957],{"alt":958,"src":959},"A scheduled fire waking an orchestrator to check in on its running sub-agents.","\u002Fmedia\u002Fscheduler-checkin.svg",[181,961,963],{"className":183,"code":962,"language":185,"meta":186,"style":186},"# 1. Open the orchestrator's rolling session in the TUI\nslo --resume nightly-review\n\n# 2. Schedule a recurring check-in into that same session\nslo schedule add \\\n  --name \"Nightly Review Check-in\" \\\n  --prompt \"Check in on the running sub-agents: report which phases are\n            still running, retry anything stalled, and synthesize completed work.\" \\\n  --cron \"0 * * * *\" \\\n  --session-mode continuous \\\n  --session-reference nightly-review \\\n  --coalescing-mode latest_by_key \\\n  --coalescing-key nightly-review\n\nslo schedule install --name \"Nightly Review Check-in\"\n",[40,964,965,971,981,985,990,1000,1009,1016,1023,1032,1041,1051,1060,1067,1072],{"__ignoreMap":186},[190,966,967],{"class":192,"line":193},[190,968,970],{"class":969},"sQrFR","# 1. Open the orchestrator's rolling session in the TUI\n",[190,972,973,975,978],{"class":192,"line":211},[190,974,197],{"class":196},[190,976,977],{"class":214}," --resume",[190,979,980],{"class":200}," nightly-review\n",[190,982,983],{"class":192,"line":223},[190,984,583],{"emptyLinePlaceholder":582},[190,986,987],{"class":192,"line":234},[190,988,989],{"class":969},"# 2. Schedule a recurring check-in into that same session\n",[190,991,992,994,996,998],{"class":192,"line":245},[190,993,197],{"class":196},[190,995,201],{"class":200},[190,997,204],{"class":200},[190,999,208],{"class":207},[190,1001,1002,1004,1007],{"class":192,"line":256},[190,1003,215],{"class":214},[190,1005,1006],{"class":200}," \"Nightly Review Check-in\"",[190,1008,208],{"class":207},[190,1010,1011,1013],{"class":192,"line":579},[190,1012,226],{"class":214},[190,1014,1015],{"class":200}," \"Check in on the running sub-agents: report which phases are\n",[190,1017,1018,1021],{"class":192,"line":586},[190,1019,1020],{"class":200},"            still running, retry anything stalled, and synthesize completed work.\"",[190,1022,208],{"class":207},[190,1024,1025,1027,1030],{"class":192,"line":743},[190,1026,237],{"class":214},[190,1028,1029],{"class":200}," \"0 * * * *\"",[190,1031,208],{"class":207},[190,1033,1035,1037,1039],{"class":192,"line":1034},10,[190,1036,259],{"class":214},[190,1038,718],{"class":200},[190,1040,208],{"class":207},[190,1042,1044,1046,1049],{"class":192,"line":1043},11,[190,1045,725],{"class":214},[190,1047,1048],{"class":200}," nightly-review",[190,1050,208],{"class":207},[190,1052,1054,1056,1058],{"class":192,"line":1053},12,[190,1055,735],{"class":214},[190,1057,738],{"class":200},[190,1059,208],{"class":207},[190,1061,1063,1065],{"class":192,"line":1062},13,[190,1064,746],{"class":214},[190,1066,980],{"class":200},[190,1068,1070],{"class":192,"line":1069},14,[190,1071,583],{"emptyLinePlaceholder":582},[190,1073,1075,1077,1079,1081,1083],{"class":192,"line":1074},15,[190,1076,197],{"class":196},[190,1078,201],{"class":200},[190,1080,279],{"class":200},[190,1082,282],{"class":214},[190,1084,1085],{"class":200}," \"Nightly Review Check-in\"\n",[14,1087,1088,1089,152],{},"Every hour the orchestrator wakes, inspects its children via the inbox turn, retries what failed, and folds finished results into the running session — a supervised loop that needs no human at the keyboard. Watch it any time with ",[40,1090,1091],{},"slo visualize --session nightly-review --follow",[66,1093,1095],{"id":1094},"next-steps","Next steps",[30,1097,1098,1108],{},[33,1099,1100,1104,1105,1107],{},[937,1101,1103],{"href":1102},"\u002Fdocs\u002Ffeatures\u002Fheadless","Headless & server agent"," — the ",[40,1106,141],{}," the scheduler fires under the hood.",[33,1109,1110,1113],{},[937,1111,1112],{"href":944},"Dynamic workflows"," — the orchestrator and sub-agent model referenced above.",[1115,1116,1117],"style",{},"html pre.shiki code .s_sBn, html code.shiki .s_sBn{--shiki-default:#FFB757}html pre.shiki code .sTRMh, html code.shiki .sTRMh{--shiki-default:#ADDCFF}html pre.shiki code .sWyjQ, html code.shiki .sWyjQ{--shiki-default:#FF9492}html pre.shiki code .sCcAr, html code.shiki .sCcAr{--shiki-default:#91CBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sQrFR, html code.shiki .sQrFR{--shiki-default:#BDC4CC}",{"title":186,"searchDepth":211,"depth":211,"links":1119},[1120,1121,1122,1125,1131,1132,1133,1134],{"id":68,"depth":211,"text":69},{"id":175,"depth":211,"text":176},{"id":300,"depth":211,"text":301,"children":1123},[1124],{"id":437,"depth":223,"text":438},{"id":515,"depth":211,"text":516,"children":1126},[1127,1128,1129,1130],{"id":519,"depth":223,"text":520},{"id":603,"depth":223,"text":604},{"id":656,"depth":223,"text":657},{"id":765,"depth":223,"text":766},{"id":835,"depth":211,"text":836},{"id":881,"depth":211,"text":882},{"id":931,"depth":211,"text":932},{"id":1094,"depth":211,"text":1095},"Persist a prompt plus a trigger and let Slo fire it later — using the OS scheduler (launchd on macOS, cron on Linux). No daemon required.","md",{},"\u002Fdocs\u002Ffeatures\u002Fschedulers",{"title":5,"description":1135},"docs\u002Ffeatures\u002Fschedulers","BHzdu2QAnDxcxAe1jhQrc6CAFhMcxfhqXDXOSctvt3I",1785676470388]