Skip to content
use-cases / edit-crontab-from-phone / hero
CRON · PATCH · GATE 47B

Edit your crontab from a phone, in the airport

Boarding announcement. The daily report job is set for 7am UTC, but the recipient is in Tokyo and the time is wrong. You open the crontab URL on your phone, tap the row, change two fields, hit Save. PATCH goes through. The job fires tonight on the new schedule. No SSH session, no jump box, no laptop.

Read the cron docs
use-cases / edit-crontab-from-phone / mechanism

One PATCH from a phone, one entry on the schedule

The cron service speaks JSON over HTTPS. The phone's browser sends a PATCH on the entry's UUID with the new schedule field. The system crontab gets re-injected by the service. The next fire is in the response body.

patch.from-phone.sh
PATCH · sender
# Two-line edit on a 6-inch screencurl -X PATCH \\"https://cron.containers.hoody.com/users/me/entries/0a3c8" \\-H "Content-Type: application/json" \\-d ["schedule":"30 4 * * 1-5"]# weekday at 04:30 — local Tokyo time on the recipient
200 OK · cron.containers.hoody.com
GET · echo
HTTP/1.1 200 OK// the entry comes back with the new schedule and the next fire{"id": "0a3c8","schedule": "30 4 * * 1-5","next_run": "2026-05-05T04:30:00+09:00","enabled": true}

The PATCH only carries the field that changed. The service merges it into the existing entry, recomputes next_run, and re-injects the line into the system crontab. There is no SSH session, no jump host, no laptop.

use-cases / edit-crontab-from-phone / moves

Three taps from announcement to gate

The whole edit fits between the boarding call and the priority queue. Open the URL. Change the field. Walk to the plane.

OPEN

Open the crontab URL

The cron service has its own URL — cron.containers.hoody.com/users/me/crontab. The same page opens in any browser, including the one on your phone. Auth is the URL. No bastion, no AnyConnect prompt, no key-on-laptop ritual.

EDIT

Tap a row, change one field

Each managed entry is a JSON object with schedule, command, comment, enabled. You tap the row, the schedule field becomes editable, you replace 0 7 * * * with 30 4 * * 1-5. The other fields are not touched.

SAVE

PATCH lands, walk to gate

Save fires a PATCH on /users/me/entries/[id]. The response says 200 OK and gives back the new next_run. The system crontab is updated within the second. You close the tab and walk.

use-cases / edit-crontab-from-phone / facts

The four routes a phone can hit

Hoody Cron exposes a small CRUD over the crontab. Each managed entry has a UUID; each entry can be patched in isolation. Below are the four endpoints the phone uses to edit, mute, list, or delete a job.

MANAGED ENTRIES · /users/me/entries
PER-USER ISOLATION
  • GET/users/me/entriesList managed entries for the current user. Each row carries id, schedule, command, comment, enabled, next_run.
  • PATCH/users/me/entries/[id]Partial update. Send only the fields you change. The schedule, command, comment, enabled, and expires_at can each be patched in isolation.
  • POST/users/me/entriesCreate a new managed entry from JSON. Standard 5-field schedule plus macros (@hourly, @daily, @weekly, @monthly, @yearly) are accepted.
  • DELETE/users/me/entries/[id]Remove an entry. The service re-injects the system crontab without it. Useful when the airport edit was the wrong fix and you want the job gone for now.

Endpoints per the Hoody Cron service. Paths are relative to https://PROJECT-CONTAINER-cron-1.SERVER.containers.hoody.com.

use-cases / edit-crontab-from-phone / capacity

What the phone-edit gives you

The numbers that matter to a person standing at a gate with a 6-inch screen.

  1. FIELDS PATCHABLE5

    schedule, command, comment, enabled, expires_at. Each can be sent on its own. The other fields stay untouched, so the comment you wrote at 9am yesterday survives the airport edit.

  2. ROUND-TRIP

    One PATCH from the phone. One 200 response with the new next_run. The system crontab is re-injected by the service in the same call — no second request, no polling.

  3. SHELL SESSIONS0

    No SSH, no bastion, no AnyConnect. The crontab is a URL and the auth is the URL. The hardware key on your laptop stays in your bag.

use-cases / edit-crontab-from-phone / punchline

Your crontab is a URL, so editing it is a URL.

When the schedule is reachable from a browser, the place you happen to be standing stops mattering. The boarding gate is a fine office. The phone is a fine terminal. The PATCH is the change.

BEFORE · LAPTOP-ONLY EDITssh prod-bastion → sudo crontab -eopen laptop · VPN · jump host · vi
AFTER · ONE URLPATCH /users/me/entries/0a3c8tap row · change field · walk to gate
  • no SSH
  • no laptop
  • next fire is now
Read the cron API
use-cases / edit-crontab-from-phone / replaces

What this replaces

Most of these only exist because the crontab wasn't reachable from a phone. When the schedule is a URL, the rituals around getting to the schedule go away with it.

  • SSH from a laptopTwenty minutes of friction before the first keystroke counts
  • ssh-bastion accessAn extra hop with its own credentials and timeout
  • "I'll do it when I'm home"Six-hour delay because the laptop is in another time zone
  • PagerDuty manual cron editsPage the on-call to babysit a two-line schedule change
  • Hardware key + bastion + crontab jugglingThree secrets and a vi session for one field
  • Slack-the-senior-engineerWake another human to share the URL you already have
use-cases / edit-crontab-from-phone / cta

You stood at the gate and changed when the job fires tonight.

Read the cron docs
use-cases / edit-crontab-from-phone / related

Read the others