---
title: Scheduled tasks
description: Run things with nobody at the keyboard — every 6 hours, daily at 9, weekdays at 8:30 — and approve anything risky from your phone.
---
# Scheduled tasks

Lampson can run things on a schedule with nobody at the keyboard: a check every morning, a report every 6 hours, a full agent run with your instructions.

## Creating one

Say it: *"every weekday at 9, run the tests and tell me if something broke"*. The agent proposes the task — exactly what will run, when, with which permissions — and asks you to approve it. Or use **Programadas → +** in the web UI, or `/schedule add` in the terminal.

Schedules read like English: `every 6h` · `every 30m` · `daily 09:00` · `mon,wed 08:30` · `weekdays 09:00`. Local time; `LAMPSON_TZ` overrides.

## Three kinds

| kind | what runs | who authorizes it |
|---|---|---|
| `plugin` | a tool of a [plugin](/en/docs/plugins) that is on | turning the plugin on |
| `bash` | one fixed command that finishes on its own | you, once, when creating it |
| `prompt` | a full agent turn with your instructions and a profile | the permission envelope fixed at creation: `strict`, `ask` or `yolo` |

Each run leaves a log; a `prompt` run also leaves a normal session named `⏰ <task>` with its trace. `notify` = a webhook URL that receives each result as JSON — for "search and send me" tasks.

## Where they run

Inside the workspace's process, which the [hub](/en/docs/workspaces) keeps alive while the workspace has enabled tasks. `lampson --install` makes the hub survive reboots. A run missed while the machine was off executes when it comes back, marked as late.

## Approving from your phone

A run in `ask` mode that hits something risky **waits for you**. In the web UI it appears under **Aprobaciones**. To decide from anywhere, set two things in ⚙ → *Aprobaciones a distancia* (or `.env`):

- `LAMPSON_PUBLIC_URL` — how this Lampson is reached from outside (a tunnel, a VPS, a Synsema edge with TLS).
- `LAMPSON_WEBHOOK_URL` — where to POST each pending approval (`id`, message, why, expiry, and two **one-time links**: yes and no). Forward them to Telegram, Slack or mail with n8n, a bot, or six lines of Synsema. `LAMPSON_WEBHOOK_SECRET` signs the body (HMAC-SHA256).

Opening the *yes* link approves; the *no* link denies; the token dies with the deadline (2 hours by default). No answer in time = denied. Nothing is ever auto-approved.
