[{"data":1,"prerenderedAt":623},["ShallowReactive",2],{"navigation":3,"/features/heartbeat":94,"/features/heartbeat-surround":618},[4,22,39,68,81],{"title":5,"path":6,"stem":7,"children":8,"page":21},"Getting Started","/getting-started","1.getting-started",[9,13,17],{"title":10,"path":11,"stem":12},"Introduction","/getting-started/introduction","1.getting-started/1.introduction",{"title":14,"path":15,"stem":16},"Installation","/getting-started/installation","1.getting-started/2.installation",{"title":18,"path":19,"stem":20},"Workspace","/getting-started/workspace","1.getting-started/3.workspace",false,{"title":23,"path":24,"stem":25,"children":26,"page":21},"Configuration","/configuration","2.configuration",[27,31,35],{"title":28,"path":29,"stem":30},"Overview","/configuration/overview","2.configuration/1.overview",{"title":32,"path":33,"stem":34},"AI Providers","/configuration/ai-providers","2.configuration/2.ai-providers",{"title":36,"path":37,"stem":38},"Configuration Reference","/configuration/reference","2.configuration/3.reference",{"title":40,"path":41,"stem":42,"children":43,"page":21},"Features","/features","3.features",[44,48,52,56,60,64],{"title":45,"path":46,"stem":47},"Telegram","/features/telegram","3.features/1.telegram",{"title":49,"path":50,"stem":51},"Tools","/features/tools","3.features/2.tools",{"title":53,"path":54,"stem":55},"Scheduling","/features/scheduling","3.features/3.scheduling",{"title":57,"path":58,"stem":59},"Heartbeat","/features/heartbeat","3.features/4.heartbeat",{"title":61,"path":62,"stem":63},"Memory","/features/memory","3.features/5.memory",{"title":65,"path":66,"stem":67},"Skills","/features/skills","3.features/6.skills",{"title":69,"path":70,"stem":71,"children":72,"page":21},"Cli","/cli","4.cli",[73,77],{"title":74,"path":75,"stem":76},"CLI Commands","/cli/commands","4.cli/1.commands",{"title":78,"path":79,"stem":80},"Running as a Service","/cli/service-management","4.cli/2.service-management",{"title":82,"path":83,"stem":84,"children":85,"page":21},"Reference","/reference","5.reference",[86,90],{"title":87,"path":88,"stem":89},"Sessions","/reference/sessions","5.reference/1.sessions",{"title":91,"path":92,"stem":93},"Troubleshooting","/reference/troubleshooting","5.reference/3.troubleshooting",{"id":95,"title":57,"body":96,"description":612,"extension":613,"links":614,"meta":615,"navigation":267,"path":58,"seo":616,"stem":59,"__hash__":617},"docs/3.features/4.heartbeat.md",{"type":97,"value":98,"toc":603},"minimark",[99,103,107,115,120,202,205,209,212,232,238,242,248,251,284,287,290,294,297,418,425,429,432,479,482,488,492,500,585,588,592,599],[100,101,57],"h1",{"id":102},"heartbeat",[104,105,106],"p",{},"The heartbeat system lets BabyClaw run periodic agent check-ins on a schedule. Instead of only responding when you message it, the agent can proactively check things and alert you if something needs attention.",[104,108,109,110,114],{},"Heartbeat is ",[111,112,113],"strong",{},"disabled by default",". Enable it when you want the agent to do background work.",[116,117,119],"h2",{"id":118},"enabling-heartbeat","Enabling heartbeat",[121,122,127],"pre",{"className":123,"code":124,"language":125,"meta":126,"style":126},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"heartbeat\": {\n    \"enabled\": true,\n    \"intervalMinutes\": 30\n  }\n}\n","json","",[128,129,130,139,157,174,190,196],"code",{"__ignoreMap":126},[131,132,135],"span",{"class":133,"line":134},"line",1,[131,136,138],{"class":137},"sMK4o","{\n",[131,140,142,145,148,151,154],{"class":133,"line":141},2,[131,143,144],{"class":137},"  \"",[131,146,102],{"class":147},"spNyl",[131,149,150],{"class":137},"\"",[131,152,153],{"class":137},":",[131,155,156],{"class":137}," {\n",[131,158,160,163,167,169,171],{"class":133,"line":159},3,[131,161,162],{"class":137},"    \"",[131,164,166],{"class":165},"sBMFI","enabled",[131,168,150],{"class":137},[131,170,153],{"class":137},[131,172,173],{"class":137}," true,\n",[131,175,177,179,182,184,186],{"class":133,"line":176},4,[131,178,162],{"class":137},[131,180,181],{"class":165},"intervalMinutes",[131,183,150],{"class":137},[131,185,153],{"class":137},[131,187,189],{"class":188},"sbssI"," 30\n",[131,191,193],{"class":133,"line":192},5,[131,194,195],{"class":137},"  }\n",[131,197,199],{"class":133,"line":198},6,[131,200,201],{"class":137},"}\n",[104,203,204],{},"This runs a heartbeat every 30 minutes. The minimum interval is 5 minutes.",[116,206,208],{"id":207},"how-it-works","How it works",[104,210,211],{},"On each heartbeat:",[213,214,215,223,226,229],"ol",{},[216,217,218,219,222],"li",{},"The agent reads ",[128,220,221],{},"HEARTBEAT.md"," from the workspace (if it exists)",[216,224,225],{},"It follows the instructions in that file",[216,227,228],{},"It decides whether anything needs attention",[216,230,231],{},"If something does, it sends you a message. If not, it stays quiet.",[104,233,234,235],{},"The key idea: ",[111,236,237],{},"silent when nothing's happening, vocal when something matters.",[116,239,241],{"id":240},"writing-a-heartbeatmd","Writing a HEARTBEAT.md",[104,243,244,245,247],{},"The ",[128,246,221],{}," file in your workspace tells the agent what to check during heartbeats. Keep it short -- each heartbeat costs tokens.",[104,249,250],{},"Example:",[121,252,256],{"className":253,"code":254,"language":255,"meta":126,"style":126},"language-markdown shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Heartbeat Checklist\n\n- Check if there are any unread emails from $BOSS\n- Look at my calendar for the next 4 hours -- anything coming up?\n- If the weather is going to be bad today, let me know\n","markdown",[128,257,258,263,269,274,279],{"__ignoreMap":126},[131,259,260],{"class":133,"line":134},[131,261,262],{},"# Heartbeat Checklist\n",[131,264,265],{"class":133,"line":141},[131,266,268],{"emptyLinePlaceholder":267},true,"\n",[131,270,271],{"class":133,"line":159},[131,272,273],{},"- Check if there are any unread emails from $BOSS\n",[131,275,276],{"class":133,"line":176},[131,277,278],{},"- Look at my calendar for the next 4 hours -- anything coming up?\n",[131,280,281],{"class":133,"line":192},[131,282,283],{},"- If the weather is going to be bad today, let me know\n",[104,285,286],{},"The agent will work through these items and only message you if something stands out. If everything looks fine, it stays quiet.",[104,288,289],{},"You can also let the agent edit this file over time -- it might add items based on your conversations.",[116,291,293],{"id":292},"active-hours","Active hours",[104,295,296],{},"If you don't want heartbeats at 3am, set an active window:",[121,298,300],{"className":123,"code":299,"language":125,"meta":126,"style":126},"{\n  \"heartbeat\": {\n    \"enabled\": true,\n    \"intervalMinutes\": 30,\n    \"activeHours\": {\n      \"start\": \"08:00\",\n      \"end\": \"22:00\"\n    }\n  }\n}\n",[128,301,302,306,318,330,346,359,382,402,408,413],{"__ignoreMap":126},[131,303,304],{"class":133,"line":134},[131,305,138],{"class":137},[131,307,308,310,312,314,316],{"class":133,"line":141},[131,309,144],{"class":137},[131,311,102],{"class":147},[131,313,150],{"class":137},[131,315,153],{"class":137},[131,317,156],{"class":137},[131,319,320,322,324,326,328],{"class":133,"line":159},[131,321,162],{"class":137},[131,323,166],{"class":165},[131,325,150],{"class":137},[131,327,153],{"class":137},[131,329,173],{"class":137},[131,331,332,334,336,338,340,343],{"class":133,"line":176},[131,333,162],{"class":137},[131,335,181],{"class":165},[131,337,150],{"class":137},[131,339,153],{"class":137},[131,341,342],{"class":188}," 30",[131,344,345],{"class":137},",\n",[131,347,348,350,353,355,357],{"class":133,"line":192},[131,349,162],{"class":137},[131,351,352],{"class":165},"activeHours",[131,354,150],{"class":137},[131,356,153],{"class":137},[131,358,156],{"class":137},[131,360,361,364,367,369,371,374,378,380],{"class":133,"line":198},[131,362,363],{"class":137},"      \"",[131,365,366],{"class":188},"start",[131,368,150],{"class":137},[131,370,153],{"class":137},[131,372,373],{"class":137}," \"",[131,375,377],{"class":376},"sfazB","08:00",[131,379,150],{"class":137},[131,381,345],{"class":137},[131,383,385,387,390,392,394,396,399],{"class":133,"line":384},7,[131,386,363],{"class":137},[131,388,389],{"class":188},"end",[131,391,150],{"class":137},[131,393,153],{"class":137},[131,395,373],{"class":137},[131,397,398],{"class":376},"22:00",[131,400,401],{"class":137},"\"\n",[131,403,405],{"class":133,"line":404},8,[131,406,407],{"class":137},"    }\n",[131,409,411],{"class":133,"line":410},9,[131,412,195],{"class":137},[131,414,416],{"class":133,"line":415},10,[131,417,201],{"class":137},[104,419,420,421,424],{},"Times are in 24-hour format and use the ",[128,422,423],{},"scheduler.timezone"," from your config. Outside this window, heartbeats are skipped.",[116,426,428],{"id":427},"custom-prompt","Custom prompt",[104,430,431],{},"You can change the prompt sent to the agent on each heartbeat:",[121,433,435],{"className":123,"code":434,"language":125,"meta":126,"style":126},"{\n  \"heartbeat\": {\n    \"prompt\": \"Check HEARTBEAT.md. If nothing needs attention, stay quiet.\"\n  }\n}\n",[128,436,437,441,453,471,475],{"__ignoreMap":126},[131,438,439],{"class":133,"line":134},[131,440,138],{"class":137},[131,442,443,445,447,449,451],{"class":133,"line":141},[131,444,144],{"class":137},[131,446,102],{"class":147},[131,448,150],{"class":137},[131,450,153],{"class":137},[131,452,156],{"class":137},[131,454,455,457,460,462,464,466,469],{"class":133,"line":159},[131,456,162],{"class":137},[131,458,459],{"class":165},"prompt",[131,461,150],{"class":137},[131,463,153],{"class":137},[131,465,373],{"class":137},[131,467,468],{"class":376},"Check HEARTBEAT.md. If nothing needs attention, stay quiet.",[131,470,401],{"class":137},[131,472,473],{"class":133,"line":176},[131,474,195],{"class":137},[131,476,477],{"class":133,"line":192},[131,478,201],{"class":137},[104,480,481],{},"The default prompt is:",[483,484,485],"blockquote",{},[104,486,487],{},"\"Read HEARTBEAT.md if it exists. Follow its instructions. Do not infer or repeat old tasks from prior chats. If nothing needs attention, say so.\"",[116,489,491],{"id":490},"heartbeat-vs-scheduling","Heartbeat vs scheduling",[104,493,494,495,499],{},"Both heartbeat and ",[496,497,498],"a",{"href":54},"scheduling"," can trigger the agent periodically, but they work differently:",[501,502,503,516],"table",{},[504,505,506],"thead",{},[507,508,509,512,514],"tr",{},[510,511],"th",{},[510,513,57],{},[510,515,53],{},[517,518,519,533,546,559,572],"tbody",{},[507,520,521,527,530],{},[522,523,524],"td",{},[111,525,526],{},"Configured in",[522,528,529],{},"Config file",[522,531,532],{},"Created by the agent during conversation",[507,534,535,540,543],{},[522,536,537],{},[111,538,539],{},"Good for",[522,541,542],{},"Batching multiple periodic checks",[522,544,545],{},"Precise timing, one-off reminders",[507,547,548,553,556],{},[522,549,550],{},[111,551,552],{},"Context",[522,554,555],{},"Runs in the main session",[522,557,558],{},"Runs in its own context",[507,560,561,566,569],{},[522,562,563],{},[111,564,565],{},"Timing",[522,567,568],{},"Approximate (every N minutes)",[522,570,571],{},"Exact (cron expressions)",[507,573,574,579,582],{},[522,575,576],{},[111,577,578],{},"Output",[522,580,581],{},"Messages you only when needed",[522,583,584],{},"Always delivers output",[104,586,587],{},"A common pattern: use heartbeat for background monitoring (email, calendar, weather) and scheduling for specific tasks (\"remind me in 20 minutes\", \"every Monday at 9am\").",[116,589,591],{"id":590},"checking-heartbeat-status","Checking heartbeat status",[104,593,594,595,598],{},"In Telegram, use the ",[128,596,597],{},"/heartbeat"," command to see if heartbeat is enabled and when the next run is scheduled.",[600,601,602],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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 .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}",{"title":126,"searchDepth":134,"depth":141,"links":604},[605,606,607,608,609,610,611],{"id":118,"depth":141,"text":119},{"id":207,"depth":141,"text":208},{"id":240,"depth":141,"text":241},{"id":292,"depth":141,"text":293},{"id":427,"depth":141,"text":428},{"id":490,"depth":141,"text":491},{"id":590,"depth":141,"text":591},"Periodic agent check-ins for proactive tasks.","md",null,{},{"title":57,"description":612},"XIakXJtMyTWc2Val1cMuMb7tYeTpuDc7Too3s_dfgIc",[619,621],{"title":53,"path":54,"stem":55,"description":620,"children":-1},"One-off and recurring tasks with cron expressions and timezone support.",{"title":61,"path":62,"stem":63,"description":622,"children":-1},"How BabyClaw remembers things between sessions -- working memory and long-term extraction.",1771846894211]