Inquir Compute · cron

Cron job platform with logs, retries, and API integration

A cron job platform that runs scheduled tasks as serverless functions: validated expressions, execution history, retries, and the same API gateway, secrets, and observability as your HTTP endpoints. Not a standalone scheduler—a full backend runtime for jobs and APIs together.

Last updated: 2026-06-28

Direct answer

Cron job platform with logs, retries, and API integration. In Inquir, cron jobs and HTTP API endpoints are both pipeline-backed serverless functions. They share workspace secrets, execution history, alert rules, and container isolation. Scheduling is a trigger type on a pipeline—not a separate product.

When it fits

  • Teams that want cron jobs and API endpoints in one platform with shared observability
  • Jobs that need retries, history, and alerting without a separate scheduler service

Tradeoffs

  • Tools like Heroku Scheduler or EasyCron give you a scheduled HTTP call—but you still need the serverless function, the secrets model, and the observability layer separately.
  • When the scheduled job calls an internal API, accesses a database, or writes to object storage, the security model for those credentials lives somewhere else—usually a fragile env file.

What a real cron job platform needs

  • Expression validation before the first missed run
  • Execution history: when did it run, how long, what output
  • Retries: automatic re-run on failure without manual intervention
  • Shared secrets with HTTP API routes (no parallel env file on a server)
  • Alerts: notify when a job fails or takes longer than expected

Most teams start with crontab on a VPS. It works until scale or team size forces the question: "did the job run last night?" and the answer requires SSH access and log trawling.

Why standalone schedulers miss the full picture

Tools like Heroku Scheduler or EasyCron give you a scheduled HTTP call—but you still need the serverless function, the secrets model, and the observability layer separately.

When the scheduled job calls an internal API, accesses a database, or writes to object storage, the security model for those credentials lives somewhere else—usually a fragile env file.

One platform for cron jobs and APIs

In Inquir, cron jobs and HTTP API endpoints are both pipeline-backed serverless functions. They share workspace secrets, execution history, alert rules, and container isolation. Scheduling is a trigger type on a pipeline—not a separate product.

The same function that powers a public REST API endpoint can be triggered by a cron schedule. One deploy, two entry points, shared observability.

Cron platform comparison: what you get and what you operate

A reference checklist for evaluating cron platforms—not a feature marketing table.

Cron platform comparison: what you get and what you operate
Capabilitycrontabsystemd timerHeroku SchedulerInquir
Expression validationAt runtimeAt unit installFixed intervals onlyAt save time
Run historySyslog / mail spooljournalctl (host only)NoneConsole—30-day retention
Retries on failureNoneOnFailure= unit optionNonePer-step policy
Shared secrets with APISeparate .env filesSeparate service filesSeparate config varsSame workspace secrets
Minimum interval1 minute1 second (OnCalendar)10 minutes1 minute
Infrastructure you operateVPS + cron daemonVPS + systemdHeroku dynoNone

Cron job platform capabilities

Validated cron expressions

Expressions validate at save time. Standard 5-field cron (minute, hour, day, month, weekday), 1-minute minimum interval. Errors surface immediately, not on the next missed run.

Execution history

Every cron run creates an execution record: start time, trigger context, step outputs, duration, and exit status—queryable from the console.

Retries with delay

Configure retry count and delay per step. Exponential backoff or fixed delay. Failed runs are retained in execution history for manual inspection and replay.

Parallel job execution

Multiple cron pipelines run concurrently—no single-thread scheduler bottleneck. Add overlap guards per-job when needed.

How to set up a cron job on Inquir

1

Implement the job handler

Write a serverless function. Keep logic idempotent—cron jobs can fire twice on rare scheduler restarts.

2

Create pipeline with schedule trigger

Set trigger type to schedule, enter cron expression. Platform validates and schedules first run.

3

Set alert rule

Add a duration SLO alert: notify when the job takes longer than 10 minutes or exits non-zero.

Certificate expiry checker (cron job)

Runs daily at 08:00 UTC, checks TLS certificate expiry for a list of domains, and sends alert if any expire within 30 days.

jobs/cert-checker.mjs
import tls from 'node:tls';
import net from 'node:net';

async function checkExpiry(hostname) {
  return new Promise((resolve, reject) => {
    const socket = tls.connect({ host: hostname, port: 443 }, () => {
      const cert = socket.getPeerCertificate();
      socket.destroy();
      resolve(new Date(cert.valid_to));
    });
    socket.on('error', reject);
  });
}

export async function handler(event) {
  const domains = process.env.DOMAINS_TO_MONITOR?.split(',') ?? [];
  const results = await Promise.all(
    domains.map(async (d) => ({ domain: d, expiry: await checkExpiry(d) })),
  );
  const expiringSoon = results.filter(
    (r) => r.expiry.getTime() - Date.now() < 30 * 86_400_000,
  );
  if (expiringSoon.length > 0) await sendAlert(expiringSoon);
  return { checked: domains.length, expiringSoon: expiringSoon.length };
}

When Inquir is the right cron job platform

When this works

  • Teams that want cron jobs and API endpoints in one platform with shared observability
  • Jobs that need retries, history, and alerting without a separate scheduler service

When to skip it

  • Simple one-off tasks where a VPS crontab works and has never caused a missed-run incident worth investigating

FAQ

Can I trigger a cron job manually?

Yes—invoke the underlying function directly from the gateway or console to test without waiting for the next scheduled tick.

How do I handle job overlap?

Add a distributed lock or skip-if-running guard in the handler. For idempotent jobs, overlap is safe by design—use a watermark pattern.