Docs Layers

Cron

Live, armed by handRuns on NEAR

OutLayer has no scheduler, so the contract keeps a chain of yielded promises alive. A hop runs about every 2 minutes for about 2.25 Tgas, and each job run takes 95 Tgas from the chain. One arm of 1 PGas lasts about 15 hours with no jobs and about 6 with one hourly job. Then the chain stops until a transaction arms it again, and nobody does that for you.

Commands

Terminal
quay cron add "every 60m" digest
quay cron arm
quay cron status

How Harbour Board uses it

  1. The Board's digest job runs every 60 minutes. Its first scheduled run failed because the contract gave OutLayer 45 Tgas. Contract 3.0.1 gives it 80.
  2. The next run, at 23:22 UTC on 2026-11-10, wrote a digest, and the Board's home page says it came from the hourly job.

Proof on testnet

The schedule armed; every tick and run is a receipt of itGJSg1cdT…
Contract 3.0.1 with the gas fixG5EUhkto…
The latest digestthe Board's home page

Check it without a key: view cron_status '{}' says whether the chain is armed now, its hops and its last tick. The view helper is in the repository README, and scripts/judge.sh runs these checks.

What you trust

No operator runs the schedule. The contract does, and OutLayer runs each job. When an arm runs out, the page keeps the last digest with its time. Run quay cron arm on a timer you control.

Limits

JobsAt most 8, every 5 minutes or slower
CostEach arm reserves about 1 NEAR while it runs and refunds the unused gas

Every flag is in the command reference, generated from quay cron --help.