Skip to main content
The app calls these Scheduled tasks. The CLI command screenpipe pipe, local API paths under /pipes, and configuration file pipe.md retain their technical names. Use those exact identifiers in commands and configuration.
When a scheduled task fails, debug it like a small production job: confirm the engine is alive, confirm the scheduled task has data, confirm the AI provider works, then inspect logs and permissions.

Fast triage

Lifecycle

Common failures

Windows scheduled task exits immediately

If a black command window appears and disappears, the scheduled task process is probably crashing before you can read the error.
  1. Open Scheduled tasks → My tasks, select your scheduled task, and open its logs.
  2. Run the scheduled task manually.
  3. If the scheduled task calls a script, run that script directly in PowerShell.
  4. Confirm pipe.md exists in the scheduled task folder and has valid frontmatter.
  5. Confirm the local API is alive:
Then search broadly:
Do not debug the schedule until manual run works.

Write prompts with debuggable outputs

Weak:
Strong:
For monitoring scheduled tasks, add a “no match” behavior:

Frontmatter checklist

Keep the schedule simple until the scheduled task works manually. Add permissions only for the APIs the scheduled task needs.

Secrets and provider auth

Do:
  • Keep API keys in .env next to pipe.md
  • Use connected app proxies when possible
  • Use local models through Ollama for fully local execution
  • Use SCREENPIPE_API_KEY when API auth is enabled
Do not:
  • Paste API keys into the prompt body
  • Ask the AI to print secrets
  • Grant broad write access before the scheduled task is proven

Connection proxies

Connected apps can be called without exposing secrets to the scheduled task prompt:
Exact proxy paths depend on the integration. See connection reference.

Search filters that usually break custom scheduled tasks

Start with broad search, then add filters one at a time.
Use content_type=all or content_type=accessibility for most app text. OCR is fallback pixel text, not the main source of screen text on platforms where accessibility data is available. When filtering by window, first inspect real stored window names from broad results. The visible title bar and stored window_name can differ. Avoid this while debugging:
Prefer:
Then add window_name, app_name, start_time, or end_time only after you know the data exists.

Notifications and external actions

If a scheduled task should play a sound, show a notification, send Telegram, update Notion, or call a webhook, split the debugging: Make the scheduled task log every skipped action. Silent “no-op” runs are hard to debug.

When to use chat, MCP, or scheduled tasks

Collect a useful bug report

Include:
  • Scheduled task name and pipe.md
  • Schedule and whether manual run works
  • Output of curl http://localhost:3030/health
  • Output of curl http://localhost:3030/pipes/<name>/logs
  • AI provider and model
  • Whether API auth is enabled
  • OS and Screenpipe version