Skip to content

Scheduling Agents

Hypertask does not ship a built-in cron UI. It does not need one. Hypertask exposes a CLI and an MCP server, so any scheduler that can run a command on a schedule can trigger an agent run.

This guide shows four common ways to schedule a recurring agent run. Pick the one that matches where your stack already lives.

A scheduled agent run is any workflow that:

  1. Fires on a schedule (daily, weekly, every 15 minutes, etc.)
  2. Invokes the hypertask CLI (or calls the MCP server directly)
  3. Asks the agent to do something against your board — triage inbox, post a daily standup, summarise last week’s shipped tickets, auto-close stale bugs, etc.

The agent runs, writes its result as a comment or a new task, and the scheduler moves on. No Hypertask-side cron engine is needed.

You need:

  • The hypertask CLI installed on the machine (or runner) that will execute the schedule
  • A Hypertask API token — export as HYPERTASK_API_TOKEN
  • A project ID to act on

Install the CLI:

Terminal window
npm install -g hypertask_cli

Verify:

Terminal window
hypertask tasks list --project <your-project-id>

Best for teams already on GitHub. Free for public repos, generous free tier for private.

Create .github/workflows/daily-standup.yml:

name: Daily standup agent
on:
schedule:
- cron: '0 8 * * 1-5' # 08:00 UTC, weekdays
workflow_dispatch: # allow manual runs
jobs:
standup:
runs-on: ubuntu-latest
steps:
- name: Install Hypertask CLI
run: npm install -g hypertask_cli
- name: Run standup agent
env:
HYPERTASK_API_TOKEN: ${{ secrets.HYPERTASK_API_TOKEN }}
run: |
hypertask tasks create \
--project 15 \
--title "Daily standup $(date -u +%Y-%m-%d)" \
--description "<p>Auto-generated by GitHub Actions. HyperAI, please summarise yesterday's shipped tickets.</p>"

Store the API token as a repository secret named HYPERTASK_API_TOKEN.

Best if you already have a VPS or home server running 24/7.

Edit your crontab:

Terminal window
crontab -e

Add:

# Triage inbox every 15 minutes
*/15 * * * * /usr/bin/env HYPERTASK_API_TOKEN=xxxx hypertask tasks create --project 15 --title "Inbox triage" --description "HyperAI please scan the inbox and classify."
# Weekly summary Mondays at 09:00
0 9 * * 1 /usr/bin/env HYPERTASK_API_TOKEN=xxxx hypertask tasks create --project 15 --title "Weekly summary" --description "HyperAI please summarise last week's wins."

Use a wrapper script instead of inline commands when they get longer than one line:

/home/you/hypertask-cron/weekly-summary.sh
#!/bin/bash
export HYPERTASK_API_TOKEN="xxxx"
hypertask tasks create \
--project 15 \
--title "Weekly summary $(date -u +%Y-W%V)" \
--description "HyperAI please summarise last week's shipped tickets and flag any that are overdue."

Then in cron:

0 9 * * 1 /home/you/hypertask-cron/weekly-summary.sh

Best if you want zero-infra, run-anywhere scheduling and already use Cloudflare. Free tier covers 100k invocations per day.

Create wrangler.toml:

name = "hypertask-scheduler"
main = "src/index.ts"
compatibility_date = "2026-04-01"
[triggers]
crons = ["0 8 * * 1-5"] # 08:00 UTC weekdays

Create src/index.ts:

export default {
async scheduled(_event: ScheduledEvent, env: Env) {
const today = new Date().toISOString().slice(0, 10);
await fetch('https://app.hypertask.ai/api/tasks', {
method: 'POST',
headers: {
'Authorization': `Bearer ${env.HYPERTASK_API_TOKEN}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
projectId: 15,
title: `Daily standup ${today}`,
description: '<p>Auto-generated by Cloudflare Workers.</p>',
}),
});
},
};
interface Env {
HYPERTASK_API_TOKEN: string;
}

Deploy:

Terminal window
wrangler secret put HYPERTASK_API_TOKEN
wrangler deploy

Best if your app already runs on Vercel. Free tier covers 2 cron jobs.

Add to vercel.json:

{
"crons": [
{
"path": "/api/hypertask-standup",
"schedule": "0 8 * * 1-5"
}
]
}

Create pages/api/hypertask-standup.ts (or app/api/hypertask-standup/route.ts for App Router):

export default async function handler(req, res) {
if (req.headers.authorization !== `Bearer ${process.env.CRON_SECRET}`) {
return res.status(401).end();
}
const today = new Date().toISOString().slice(0, 10);
await fetch('https://app.hypertask.ai/api/tasks', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.HYPERTASK_API_TOKEN}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
projectId: 15,
title: `Daily standup ${today}`,
description: '<p>Auto-generated by Vercel cron.</p>',
}),
});
res.status(200).json({ ok: true });
}

Set HYPERTASK_API_TOKEN and CRON_SECRET in the Vercel project environment variables.

Fire at 08:00 weekdays. Ask the agent to summarise what shipped yesterday and what is blocked. Posted as a new task in a “Standups” section.

SchedulerUse when
GitHub ActionsYou already use GitHub and want CI-grade reliability.
crontabYou have a VPS or home server running 24/7 and like full control.
Cloudflare WorkersYou want zero-infra scheduling at the edge.
Vercel cronYour app already runs on Vercel and you want crons living next to your routes.

Not planned for now. Every workflow above is a few lines of config away, and the external-scheduler approach gives you logs, retries, alerts, and secret management for free. If you have a use case the external pattern does not cover, open an issue on the GitHub repo so we can see the gap.