What happens in this recording
You: Call run_scenario with exactly {"scenario_name":"schedule_create ","inputs":{"name":"tea","kind":"timer ","seconds":"20","message":"Your tea is ready."}} Lilith: Schedule create completed: tea. You: Call run_scenario with exactly {"scenario_name":"schedule_peek", "inputs":{"name":"tea"}}. Tell me how long remains. Lilith: The "tea" schedule has 15.48 seconds remaining. Lilith: tea fired. Your tea is ready. Lilith: tea finished. You: Call run_scenario with exactly {"scenario_name":"schedule_create ","inputs":{"name":"hourly_greeting", "kind":"cron","cron":"0 * * * *","timezone":"Europe/London","sce You: nario":"greeting"}} Lilith: Schedule create completed: hourly_greeting. You: Call run_scenario with exactly {"scenario_name":"schedule_list","i nputs":{}}. Tell me which schedule finished and when the next cron occurrence is due. Lilith: The "tea" schedule has finished. The next cron occurrence for "hourly_greeting" is due on 2026-10-21T05:00:00+00:00. You: Call run_scenario with exactly {"scenario_name":"schedule_cancel ","inputs":{"name":"hourly_greeting" }}. Lilith: Schedule cancel completed: hourly_greeting.
Conversation XML
The complete XML script used for this recording, including its settings, system prompt and every scripted message.
<video title="Lilith V5 - scenario-managed timers and cron jobs" version="5.0.0-alpha.2" backend="Ollama" model="gemma4" mode="chat" showSubagents="false" workspaceMode="yolo" voice="af_heart" progressSeconds="3" pauseSeconds="1.5">
<systemPrompt>You are Lilith. Manage all schedules through run_scenario. Only run_scenario is a management tool; schedule_create, schedule_peek, schedule_list and schedule_cancel are saved scenario names, never direct tool names. Use supplied input strings exactly. Every value inside run_scenario.inputs must be a JSON string, including seconds. The inputs object holds the management fields directly; inputs_json is only for the chosen scheduled action's own scenario inputs. Never approve proposals yourself. For schedule status use schedule_peek or schedule_list. Keep responses under 40 words.</systemPrompt>
<messages>
<message>Call run_scenario with exactly {"scenario_name":"schedule_create","inputs":{"name":"tea","kind":"timer","seconds":"20","message":"Your tea is ready."}}</message>
<message>Call run_scenario with exactly {"scenario_name":"schedule_peek","inputs":{"name":"tea"}}. Tell me how long remains.</message>
<message>/schedule-wait 25</message>
<message>Call run_scenario with exactly {"scenario_name":"schedule_create","inputs":{"name":"hourly_greeting","kind":"cron","cron":"0 * * * *","timezone":"Europe/London","scenario":"greeting"}}</message>
<message>Call run_scenario with exactly {"scenario_name":"schedule_list","inputs":{}}. Tell me which schedule finished and when the next cron occurrence is due.</message>
<message>Call run_scenario with exactly {"scenario_name":"schedule_cancel","inputs":{"name":"hourly_greeting"}}.</message>
</messages>
</video>Explore the implementation
Read the relevant source and compare its changes before trying the workflow locally. Video playback does not execute any tools in your browser.
Open the source archive ↗