5 Things You Can Automate with Mosaic Terminal's Scheduler
I keep figuring out workflows that work. Research scans, session analysis, release automation. Then I forget to do them again. The pattern is always the same: I build a useful process, run it twice manually, then it falls off my radar for weeks.
The scheduler exists because I wanted to delegate every recurring task the moment I got it working. If I figured out the steps once, I shouldn't have to remember to run them again. Results show up in Discord by the time I have coffee.
So I built a scheduler into Mosaic Terminal. It runs any command or agent on a schedule: Claude Code, Codex, Gemini CLI, a plain shell script. Any working directory, configurable permission modes, notifications wherever you want (Discord, ntfy, Telegram, system alerts, or any webhook), run history with full output capture, and the choice between headless or interactive.
1. Daily Session Insights
Every morning at 9 AM, a scheduled Claude agent analyzes my previous day's coding sessions. It reads session metadata, diffs against yesterday's report, and writes a timestamped insights file.
The prompt tells Claude to analyze ~/.claude/usage-data/, compare with the prior report, and focus on automation recommendations. No human approval gates. Just data.
What I get back: commit velocity, fix-to-feat ratios, top friction categories, and a list of recommendations that carry forward until I actually implement them. The agent tracks its own recommendations across runs. If I ignore something three reports in a row, it escalates the priority.
This one caught a broken session tracking hook that went unnoticed for 4 days. Without the daily check, I'd still be flying blind on my own workflow metrics.
2. Daily Research Digest
Every morning at 10 AM, a research agent scans the web for what's happening in my space. AI dev tooling, agent orchestration patterns, new open-source projects, interesting blog posts. It writes a structured digest and sends it to Discord as a private newsletter to myself.
I use a self-evolving config file. The prompt tells Claude to read research-config.md at the start of each run, use it to guide the search, then update the config with new keywords and sources discovered during the run. After a few cycles, the research gets sharper without me touching anything.
The Discord notification shows up as a formatted embed: task name, status, duration, and the full research output chunked into multiple embeds if it exceeds Discord's 4096-char limit. I check it on my phone over breakfast.
Some mornings it surfaces a project I'd never heard of. Some mornings it's all noise. But I never miss something important because I forgot to look.
3. Nightly Learning Loop
At 3 AM, a three-phase agent runs:
- Session digest. Reads
session-log.jsonl, updates a rolling 8-week summary, deduplicates recurring takeaways. - Daily insights. Analyzes session data, saves a timestamped report.
- Discord report. Posts a combined summary to my private channel.
This took some debugging. Claude Code's --print mode runs headless, so MCP tools and slash commands aren't available. You need --dangerously-skip-permissions for file operations, and you need to structure prompts around built-in tools (Bash, Read, Write) rather than custom MCP tools.
I learned this the hard way: my first version referenced /digest-sessions and /daily-insights slash commands. The agent exited with "What would you like to do?" because those skills only load in interactive mode. The fix was inlining the logic directly in the prompt.
4. Release Notes on Tag Push
A file-watch trigger monitors .git/refs/tags/. When I push a new version tag, a Claude agent reads all commits since the last tag, groups them by type (feat/fix/chore), writes formatted release notes, and drafts a GitHub Release.
Before this, I wrote release notes by hand. Scrolled through git log, copied commit messages, reformatted them, posted to GitHub. Maybe 10 minutes each time. I release 3-4 times a week. That's 40 minutes a week of copy-paste busywork that a scheduled agent does in 30 seconds.
The agent also posts to Discord with download links and a changelog summary. My future users will see what shipped without me writing a single word.
5. Weekly Code Health Report
Every Monday at 8 AM, an agent runs a full health check across the codebase. Typecheck, lint, outdated dependencies, files over the size limit, CLAUDE.md drift against actual code patterns, and test coverage gaps.
It posts a scorecard to Discord:
Weekly Health: Mosaic Terminal (2026-03-20)
Typecheck: PASS (0 errors)
Lint: 3 warnings (up from 1)
Outdated deps: 4 (2 major)
Files >400 lines: 7 (target: 0)
CLAUDE.md: 2 stale sections flaggedI used to run these checks ad-hoc, usually right before a release when it was already too late to fix anything. The weekly report means problems surface early. A dependency going stale for one week is fine. Three weeks is a problem. The trend data makes that visible.
Building Your Own
The scheduler UI has four trigger types (cron, interval, file watch, manual). Pick between shell command and Claude CLI. Write your prompt. Set a permission mode.
Two permission modes:
- Default: Read, Write, Edit, Bash, Glob, Grep. Good enough for git analysis, file processing, and report generation.
- Full access: Passes
--dangerously-skip-permissions. Required for MCP tools, file system operations outside the working directory, or anything that normally prompts for approval.
Notifications go to Discord webhooks, system notifications, or both. Max runs to auto-disable after N executions. Post-run actions can auto-commit if the agent modified files.
The scheduler persists across app restarts. Tasks survive reboots. Run history stores the last 50 runs per task with full output, timing, and exit codes.
Agents can manage their own schedules
Mosaic exposes the entire scheduler through MCP tools. That means any agent running inside Mosaic can create, update, toggle, or run scheduled tasks without you touching the UI.
I set up most of my tasks this way. I describe what I want automated, and the agent calls mosaic_create_scheduler_task with the right cron expression, prompt, and notification settings. It can check existing tasks with mosaic_list_scheduler_tasks, update a prompt with mosaic_update_scheduler_task, or disable a task that's no longer useful with mosaic_toggle_scheduler_task.
I say "set up a nightly code health check that posts to Discord" and the agent does it. Figures out the cron expression, writes the prompt, wires up the webhook. Running by the time I finish the sentence.
Agents can also schedule follow-up work for themselves. A research agent that finds something interesting creates a deeper dive task for tomorrow. A code review agent schedules a recheck after the fix lands.
I'm building Mosaic Terminal, an orchestration workstation for AI coding agents. Join the Discord to follow along.