Pro & Business Feature

Schedule anything, forget everything

HTTP calls, shell commands, Docker exec -- all on a cron schedule with full output history, timeouts, retries, and alerts. No more silent failures.

What can you schedule?

HTTP endpoints, shell commands, and container exec -- with timezone support and per-app scoping.

HTTP endpoints
Call any URL on a schedule -- webhooks, APIs, health checks
Shell commands
Run any shell command inside your app container
Docker exec
Execute commands in any running container on your server
Per-app jobs
Attach cron jobs to specific apps for scoped execution
Standalone jobs
Global jobs that run independently of any app
Timezone support
Schedule in any timezone -- UTC, America/New_York, Europe/Paris, etc.

How it works

01

Define your job

Choose what to run: an HTTP call to any endpoint, a shell command, or a docker exec into a specific container.

02

Set the cron expression

Use standard cron syntax (e.g., */5 * * * * for every 5 minutes) or pick from presets like hourly, daily, weekly.

03

Configure timeout & retries

Set a maximum execution time and how many times sh0 should retry on failure before giving up and alerting you.

04

sh0 runs it on schedule

The built-in scheduler fires your job, captures all output, logs the result, and alerts you if anything goes wrong.

The execution pipeline

Cron Scheduler
Job Queue
Execute (HTTP/Shell/Docker)
Capture Output
Log Result
Alert on Failure

Built-in scheduler -- no system crontab, no external dependencies

Everything you need

Full cron expressions

Standard 5-field cron syntax with presets for common schedules. Every minute to once a year -- whatever you need.

Execution history with stdout/stderr

Every run is logged with full output, exit code, duration, and timestamp. Debug failures without SSH.

Configurable timeouts

Set a maximum execution time per job. If it exceeds the limit, sh0 kills the process and marks it as timed out.

Retry on failure

Configure automatic retries with customizable delay between attempts. Stop transient failures from becoming incidents.

Per-app or standalone

Attach jobs to a specific app (runs inside its container) or create global jobs that run independently on the host.

Failure alerts

Get notified via Slack, Discord, Telegram, email, or webhook when a job fails. No more silent cron failures at 3 AM.

The old way

  • x Edit crontab via SSH
  • x No execution logs
  • x Silent failures
  • x No timeout handling
  • x One server = one crontab
  • x Check logs manually

The sh0 way

  • Visual cron editor in dashboard
  • Full stdout/stderr history
  • Instant failure alerts
  • Configurable timeouts
  • Per-app or global jobs
  • Dashboard shows all runs

Questions & answers

What cron expressions are supported? +
Standard 5-field cron expressions (minute, hour, day of month, month, day of week). You can use wildcards, ranges, steps, and lists. Common presets like @hourly, @daily, and @weekly are also supported.
Can I see the output of my cron jobs? +
Yes. Every execution captures full stdout and stderr. You can view the output directly in the dashboard, filter by status (success, failed, timed out), and search through execution history.
What happens when a job times out? +
sh0 sends a SIGTERM to the process, waits briefly, then sends SIGKILL if needed. The run is marked as "timed out" in the history. If retries are configured, the next attempt starts after the configured delay.
Can I run jobs inside specific containers? +
Yes. Per-app jobs execute inside the app's running container via docker exec. This means your job has access to the same environment, dependencies, and file system as your application.
Is there a retry mechanism? +
Yes. You can configure 1 to 10 retries per job with a customizable delay between attempts (e.g., 30 seconds, 5 minutes). If all retries fail, sh0 sends a failure alert.
Can I trigger a cron job manually? +
Yes. Every job has a "Run Now" button in the dashboard. This is useful for testing a new job or re-running a failed execution without waiting for the next scheduled time.

Never miss a scheduled task

Cron jobs with history, timeouts, retries, and alerts. No more silent failures.