{% extends "base.html" %} {% block title %}Automations - Memorizz{% endblock %} {% block body_attrs %} data-sidebar-scope="automations" data-sidebar-default="collapsed"{% endblock %} {% block head %}{% endblock %} {% block content %} {% from '_ui.html' import page_header, empty_state, id_chip %} {% set create_url = '/automations/new' ~ ('?agent_id=' ~ selected_agent_id if selected_agent_id else '') %} {% set dot = {'good': 'healthy', 'warn': 'degraded', 'bad': 'failing', 'idle': 'idle', 'active': 'active'} %} {% set m = monitor %} {% call page_header('Automations', 'Run agent queries on a schedule and review the result of every run.', 'Execution') %}
Create automation {% endcall %} {% if error %} {% endif %} {% if m.jobs %}
Jobs{{ m.total }}
Active{{ m.active }}
Paused{{ m.paused }}
Runs recorded{{ m.runs_recorded }}{% if m.runs_capped %}+{% endif %}
Failed last run{{ m.failed_last }}
{% if m.overdue %}
Overdue{{ m.overdue }}
{% endif %}
Next run{% if m.next %}{{ relative_time(m.next.next_run_at, generated_at) }}{% else %}—{% endif %}
Last run{{ relative_time(m.last_activity, generated_at) if m.last_activity else '—' }}

j k move↵ opene edit

{% for job in m.jobs %} {% endfor %}
Automation jobs. Select a job to see its schedule, latest result and controls.
Schedule Recent
{{ job.name }} {{ job.job_id[:8] }} {{ job.agent_name or job.agent_id[:8] }} {{ job.schedule }} {% if not job.enabled %}Paused{% elif job.next_run_overdue %}Overdue{% elif job.next_run_at %}{{ relative_time(job.next_run_at, generated_at) }}{% else %}—{% endif %} {% if job.last_status %}{{ job.last_label }} {{ relative_time(job.last_at, generated_at) if job.last_at else '' }}{% else %}Never run{% endif %} {% if job.history %} {% for run in job.history %}{% endfor %} {% else %}{% endif %} {% if job.enabled %}Enabled{% else %}Paused{% endif %}
{% if m.latest_results %}

Latest results

Most recent run of each job · refreshes every 30 seconds
    {% for job in m.latest_results %}
  1. {{ job.last_label }} {{ relative_time(job.last_at, generated_at) }} {{ job.name }} {{ job.output_line or (job.error|truncate(200) if job.error else ('Running…' if job.last_status == 'running' else 'No output recorded.')) }}
  2. {% endfor %}
{% endif %}
{% elif not error %} {{ empty_state('No automations for this agent' if selected_agent_id else 'No automations yet', 'Create a job to run an agent query on a cron or interval schedule, or ask an agent to schedule one with its automation tools.', create_url, 'Create automation') }} {% endif %} {% endblock %}