> ## Documentation Index
> Fetch the complete documentation index at: https://docs.janet.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Recurring Actions

> Schedule recurring ticket creation or Janet Agent prompts

<div className="img-showcase">
  <div className="ra-mock">
    <div className="ra-mock-header">
      <div className="ra-mock-tabs">
        <span className="ra-mock-tab ra-mock-tab-active">Automations</span>
        <span className="ra-mock-tab">Logs</span>
      </div>

      <span className="ra-mock-add-btn">
        <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
          <path d="M12 5v14M5 12h14" />
        </svg>

        Add
      </span>
    </div>

    <div className="ra-mock-body">
      <div className="ra-mock-rule">
        <div className="ra-mock-rule-top">
          <div className="ra-mock-rule-info">
            <div className="ra-mock-rule-name-row">
              <span className="ra-mock-rule-name">Weekly DB Audit</span>
              <span className="ra-mock-badge-ticket">Create Ticket</span>
            </div>

            <div className="ra-mock-rule-meta">
              <span>
                <svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
                  <path d="M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20z" />

                  <path d="M12 6v6l4 2" />
                </svg>

                {" "}Fri at 9:00 AM PT
              </span>
            </div>

            <div className="ra-mock-rule-creator">Created by [alice@acme.com](mailto:alice@acme.com)</div>
          </div>

          <div className="ra-mock-actions">
            <span className="ra-mock-action-btn">
              <svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
                <path d="M5 3L19 12L5 21V3z" />
              </svg>
            </span>

            <span className="ra-mock-action-btn">
              <svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
                <path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7" />

                <path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z" />
              </svg>
            </span>

            <span className="ra-mock-action-btn">
              <svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
                <path d="M3 6h18" />

                <path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" />
              </svg>
            </span>

            <div className="ra-mock-toggle">
              <span className="ra-mock-toggle-knob ra-mock-toggle-knob-on" />
            </div>
          </div>
        </div>
      </div>

      <div className="ra-mock-rule">
        <div className="ra-mock-rule-top">
          <div className="ra-mock-rule-info">
            <div className="ra-mock-rule-name-row">
              <span className="ra-mock-rule-name">Blocked Ticket Followup</span>
              <span className="ra-mock-badge-agent">Agent Prompt</span>
            </div>

            <div className="ra-mock-rule-meta">
              <span>
                <svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
                  <path d="M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20z" />

                  <path d="M12 6v6l4 2" />
                </svg>

                {" "}Mon, Wed, Fri at 10:00 AM PT
              </span>
            </div>

            <div className="ra-mock-rule-creator">Created by [bob@acme.com](mailto:bob@acme.com)</div>
          </div>

          <div className="ra-mock-actions">
            <span className="ra-mock-action-btn">
              <svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
                <path d="M5 3L19 12L5 21V3z" />
              </svg>
            </span>

            <span className="ra-mock-action-btn">
              <svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
                <path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7" />

                <path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z" />
              </svg>
            </span>

            <span className="ra-mock-action-btn">
              <svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
                <path d="M3 6h18" />

                <path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" />
              </svg>
            </span>

            <div className="ra-mock-toggle">
              <span className="ra-mock-toggle-knob ra-mock-toggle-knob-on" />
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>

Create tickets or run agent prompts daily, weekly, or on a custom cadence.

## Action types

Each recurring action is one of two types:

<AccordionGroup>
  <Accordion title="Create Ticket">
    Deterministic ticket creation with pre-configured fields. Every time the schedule fires, a new ticket is added to the project with the title, description, status, priority, type, assignees, and tags you specify.

    Useful for repeatable tasks your team does on a cadence: weekly audits, recurring standups, monthly reviews.
  </Accordion>

  <Accordion title="Agent Prompt">
    A freeform prompt that the agent executes at the scheduled time. It has full access to your project context: it can search tickets, create or update them, leave comments, and [more](/agent).

    Useful for tasks that require reasoning: following up on blocked tickets, generating summary reports, or triaging unassigned work.
  </Accordion>
</AccordionGroup>

## Set-up

Click the **Gear** icon in the header of your **Project Board** to access **Project Settings**, select the **Configure** tab, then select **Recurring Actions**.

<div className="img-showcase img-showcase-teal recurring-actions-setup-mock">
  <div className="psm-mock">
    <div className="psm-mock-inner">
      <div className="psm-mock-sidebar">
        <div className="psm-mock-sidebar-title">PROJECT SETTINGS</div>

        <div className="psm-mock-nav">
          <div className="psm-mock-nav-btn">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
              <path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2" />

              <path d="M9 11a4 4 0 1 0 0-8 4 4 0 0 0 0 8z" />

              <path d="M23 21v-2a4 4 0 0 0-3-3.87" />

              <path d="M16 3.13a4 4 0 0 1 0 7.75" />
            </svg>

            Members
          </div>

          <div className="psm-mock-nav-btn psm-mock-nav-active">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
              <path d="M12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6z" />

              <path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.6 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.6a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z" />
            </svg>

            Configure

            <svg className="psm-mock-chevron" width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5">
              <path d="M9 6l6 6-6 6" />
            </svg>
          </div>

          <div className="psm-mock-subtabs">
            <div className="psm-mock-subtab">Kanban Columns</div>
            <div className="psm-mock-subtab">Resolved Filter</div>
            <div className="psm-mock-subtab">Ticket Style</div>
            <div className="psm-mock-subtab">Auto-Tagging</div>
            <div className="psm-mock-subtab">Ticket Rubric</div>
            <div className="psm-mock-subtab psm-mock-subtab-active">Recurring Actions</div>
          </div>

          <div className="psm-mock-nav-btn">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
              <path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z" />

              <path d="M12 9v4" />

              <path d="M12 17h.01" />
            </svg>

            Danger Zone
          </div>
        </div>
      </div>

      <div className="psm-mock-content">
        <div className="psm-mock-hero">
          <div className="psm-mock-hero-icon">A</div>

          <div className="psm-mock-hero-text">
            <span className="psm-mock-hero-name-row">
              <span className="psm-mock-hero-name">Acme <span className="psm-mock-hero-name-extra">Project</span></span>
              <code className="psm-mock-hero-badge">ACME</code>
            </span>

            <div className="psm-mock-hero-meta">
              <svg width="9" height="9" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
                <rect x="3" y="4" width="18" height="18" rx="2" ry="2" />

                <path d="M16 2v4M8 2v4M3 10h18" />
              </svg>

              <span><span className="psm-mock-hero-meta-prefix">Created </span>Jan 15, 2025</span>
            </div>
          </div>
        </div>

        <div className="psm-mock-content-body">
          <div className="psm-mock-content-title">Recurring Actions</div>
          <div className="psm-mock-content-desc">Schedule recurring tickets or agent tasks to run automatically on a cadence.</div>

          <div style={{marginTop:'14px',display:'flex',flexDirection:'column',gap:'6px'}}>
            <div className="ra-settings-item">
              <div className="ra-settings-item-top">
                <div className="ra-settings-item-info">
                  <span className="ra-settings-item-name">Weekly DB Audit</span>
                  <span className="ra-settings-badge ra-settings-badge-ticket">Create Ticket</span>
                </div>

                <div className="ra-settings-item-toggle ra-settings-item-toggle-on" />
              </div>

              <div className="ra-settings-item-meta">
                <svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
                  <path d="M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20z" />

                  <path d="M12 6v6l4 2" />
                </svg>

                <span>Every Friday at 9:00 AM (PT)</span>
              </div>
            </div>

            <div className="ra-settings-item">
              <div className="ra-settings-item-top">
                <div className="ra-settings-item-info">
                  <span className="ra-settings-item-name">Triage unassigned tickets</span>
                  <span className="ra-settings-badge ra-settings-badge-agent">Agent Prompt</span>
                </div>

                <div className="ra-settings-item-toggle ra-settings-item-toggle-on" />
              </div>

              <div className="ra-settings-item-meta">
                <svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
                  <path d="M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20z" />

                  <path d="M12 6v6l4 2" />
                </svg>

                <span>Every Mon, Wed, Fri at 8:00 AM (PT)</span>
              </div>
            </div>

            <div className="ra-settings-item">
              <div className="ra-settings-item-top">
                <div className="ra-settings-item-info">
                  <span className="ra-settings-item-name">Sprint retro ticket</span>
                  <span className="ra-settings-badge ra-settings-badge-ticket">Create Ticket</span>
                </div>

                <div className="ra-settings-item-toggle ra-settings-item-toggle-off" />
              </div>

              <div className="ra-settings-item-meta">
                <svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
                  <path d="M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20z" />

                  <path d="M12 6v6l4 2" />
                </svg>

                <span>Every Friday at 4:00 PM (PT)</span>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>

## Creating a recurring action

<div className="img-showcase img-showcase-teal">
  <div className="ra-mock">
    <div className="ra-mock-form">
      <div className="ra-mock-form-title">New Automation</div>

      <div className="ra-mock-field">
        <span className="ra-mock-label">Name</span>
        <div className="ra-mock-input ra-mock-input-filled">Weekly DB Audit</div>
      </div>

      <div className="ra-mock-field">
        <span className="ra-mock-label">Action</span>

        <div className="ra-mock-action-toggle">
          <span className="ra-mock-action-opt ra-mock-action-opt-active">Create Ticket</span>
          <span className="ra-mock-action-opt ra-mock-action-opt-inactive">Agent Prompt</span>
        </div>
      </div>

      <div className="ra-mock-field">
        <span className="ra-mock-label">Schedule</span>

        <div className="ra-mock-days">
          <span className="ra-mock-day ra-mock-day-inactive">Su</span>
          <span className="ra-mock-day ra-mock-day-active">Mo</span>
          <span className="ra-mock-day ra-mock-day-inactive">Tu</span>
          <span className="ra-mock-day ra-mock-day-active">We</span>
          <span className="ra-mock-day ra-mock-day-inactive">Th</span>
          <span className="ra-mock-day ra-mock-day-active">Fr</span>
          <span className="ra-mock-day ra-mock-day-inactive">Sa</span>
        </div>

        <div className="ra-mock-schedule-row">
          <div>
            <span className="ra-mock-label">Time</span>

            <div className="ra-mock-select-trigger">
              <span>09:00 AM</span>

              <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="#71717A" strokeWidth="2">
                <path d="M6 9l6 6 6-6" />
              </svg>
            </div>
          </div>

          <div>
            <span className="ra-mock-label">Timezone</span>

            <div className="ra-mock-select-trigger">
              <span>Pacific (PT)</span>

              <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="#71717A" strokeWidth="2">
                <path d="M6 9l6 6 6-6" />
              </svg>
            </div>
          </div>
        </div>
      </div>

      <div className="ra-mock-separator" />

      <div className="ra-mock-field">
        <span className="ra-mock-label">Ticket Title <span style={{color: "#8b5cf6"}}>\*</span></span>
        <div className="ra-mock-input ra-mock-input-filled">Audit database logs</div>
      </div>

      <div className="ra-mock-field">
        <span className="ra-mock-label">Description</span>
        <div className="ra-mock-textarea" style={{minHeight: "60px"}}>Review slow queries and check for anomalies in the past week's logs.</div>
      </div>

      <div className="ra-mock-props-row">
        <div>
          <span className="ra-mock-label">Status</span>

          <div className="ra-mock-prop-trigger">
            <span>To Do</span>

            <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="#71717A" strokeWidth="2">
              <path d="M6 9l6 6 6-6" />
            </svg>
          </div>
        </div>

        <div>
          <span className="ra-mock-label">Priority</span>

          <div className="ra-mock-prop-trigger">
            <span>Medium</span>

            <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="#71717A" strokeWidth="2">
              <path d="M6 9l6 6 6-6" />
            </svg>
          </div>
        </div>

        <div>
          <span className="ra-mock-label">Type</span>

          <div className="ra-mock-prop-trigger">
            <span>Task</span>

            <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="#71717A" strokeWidth="2">
              <path d="M6 9l6 6 6-6" />
            </svg>
          </div>
        </div>

        <div>
          <span className="ra-mock-label">Due Date</span>

          <div className="ra-mock-prop-trigger">
            <span style={{color: "#9ca3af"}}>None</span>

            <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="#71717A" strokeWidth="2">
              <path d="M6 9l6 6 6-6" />
            </svg>
          </div>
        </div>
      </div>

      <div className="ra-mock-form-actions">
        <span className="ra-mock-save-btn">Create Automation</span>
        <span className="ra-mock-cancel-btn">Cancel</span>
      </div>
    </div>
  </div>
</div>

Select the action type, pick which days and time it should run, and fill in the details.

## Managing automations

Each rule has a toggle to enable or disable it, a play button to trigger it immediately, and edit/delete controls. The **Logs** tab shows a full history of every run (status, timing, and for agent prompts, the full tool call chain and response).

Only project admins can create or modify automations. All members can view them.

## Examples

<Tabs>
  <Tab title="Create Ticket">
    **Weekly database audit** — every Friday at 9 AM

    **Sprint retro ticket** — every Friday at 4 PM

    **Daily standup prep** — weekdays at 8:30 AM
  </Tab>

  <Tab title="Agent Prompt">
    **Follow up on blocked tickets** — Mon/Wed/Fri at 10 AM

    **Triage unassigned bugs** — daily at 8 AM

    **Generate weekly summary** — every Friday at 5 PM
  </Tab>
</Tabs>
