Scheduled Tasks
Fenno can run AI tasks on a schedule. This is useful for daily summaries, recurring code checks, knowledge base maintenance, and other routine workflows.
You can create scheduled tasks in two ways:
- Portal: create and manage tasks manually in the console
- In-repo config: declare
schedule:tasks in.fennoai.ymlon the default branch
Good Use Cases
- Generate a daily summary of issues or PRs
- Check TODOs, failing tests, or stale dependencies on a schedule
- Maintain docs or internal knowledge bases regularly
- Run recurring analysis without waiting for a manual comment
Option 1: Create Tasks in the Portal
On the Portal Scheduled Tasks page, you can create a task directly. The current form exposes these fields:
Task Name: unique task name within the same repositoryRepository: target repositoryBranch: branch to run againstAgent: AI providerModel: optional, you can keepautoCron Expression: 5-field cron expressionPrompt: instructions for the AI agent
Example:
Task Name: Daily review summary
Repository: acme/platform
Branch: main
Agent: claude
Model: auto
Cron Expression: 0 9 * * *
Prompt: Summarize the last 24 hours of merged PRs and open issues, then draft a short engineering update.
After creation, the Portal lets you:
- view tasks
- trigger a run immediately
- inspect run history
- open the latest log
- edit, pause, or delete manually created tasks
Option 2: Declare Tasks in .fennoai.yml
If you want automation to live with the repository, add a .fennoai.yml file on the default branch:
default_ai_provider: claude
schedule:
- name: Daily issue triage
cron: "0 9 * * *"
prompt: "Review newly opened issues in the last 24 hours, group them by theme, and draft a triage summary."
- name: Weekly dependency check
cron: "0 10 * * 1"
branch: main
agent: codex
prompt: "Check dependency updates merged in the last 7 days and summarize any follow-up work needed."
Each schedule item supports:
name: required, unique within the repositorycron: required 5-field cron expressionprompt: required task promptagent: optional, falls back todefault_ai_providerbranch: optional, falls back to the repository default branch
Supported Config Paths
.fennoai.yml is the recommended filename. Fenno also supports these legacy paths:
.xgopilot.yml.codeagent.yml.github/fennoai.yml.github/xgopilot.yml.github/codeagent.yml.fenno/fennoai.yml.codeagent/xgopilot.yml.codeagent/codeagent.yml
Fenno reads the first file it finds according to path priority.
Cron Rules
- Uses a standard 5-field cron format:
minute hour day month weekday - Minimum interval is 1 hour
- Second-level cron expressions are not supported
Common examples:
0 9 * * * Every day at 09:00
0 */6 * * * Every 6 hours
0 10 * * 1 Every Monday at 10:00
0 9 1 * * The 1st day of each month at 09:00
Sync and Activation Behavior
Tasks created in the Portal take effect as soon as you save them.
In-repo schedule: tasks work differently:
- Fenno reloads the repository config after a push to the default branch
- after adding or updating
schedule, you need to commit that change to the default branch - removing a
scheduleentry removes the corresponding in-repo task
If you only change the config on a feature branch, production scheduled tasks will not update yet.
Portal vs In-Repo Ownership
Tasks created from .fennoai.yml can be viewed and triggered from the Portal, but they cannot be:
- edited
- paused or resumed
- deleted
Their source of truth is always the repository config file.
Limits and Notes
- up to
20scheduletasks per repository - task names can be at most
200characters agentmust be a supported AI provider- keep
.fennoai.ymllimited to model and scheduling config, not API keys or other secrets
FAQ
Why did my .fennoai.yml change not take effect immediately?
Because schedule: tasks are synchronized after a push to the default branch. Make sure the config change has landed on the default branch and that a new push event has happened.
Why can't I edit some tasks in the Portal?
Those tasks come from .fennoai.yml. The Portal only provides visibility and manual triggering for them.
Which approach should I use?
- Use the Portal when you want faster setup and centralized task management
- Use
.fennoai.ymlwhen you want automation rules versioned with the repository