Better Schedules
This guide installs Better Schedules A1.0.0. It replaces the native Schedules page with a drag-and-drop workflow builder — command, power, backup, and nested condition steps — while keeping Pterodactyl's native cron timing and schedule state. No modified Wings daemon is required.
Back up the Panel database and files before installing. Choose either Ainx or Blueprint and use only that method for install, upgrade, and removal — never both on the same Panel.
Requirements
- A standard Pterodactyl Panel; A1.0.0 was built and inspected on Pterodactyl 1.14.0.
- Ainx 1.8.3 or newer, or Blueprint compatible with target
beta-2026-06. - Laravel
schedule:runinvoked once per minute. - An active queue worker consuming the
standardqueue.
Copy betterschedules.ainx into the Panel root, then install it and allow Ainx to rebuild the frontend:
cd /var/www/pterodactyl
ainx install betterschedules.ainxScheduler and queue
Better Schedules registers betterschedules:process on the normal Laravel scheduler — no extra cron entry is needed. The queue worker must consume standard; the default Pterodactyl worker already does:
php artisan queue:work --queue=high,standard,low --sleep=3 --tries=3A working cron without a working queue creates runs that never execute. A queue worker without the every-minute cron never discovers newly due schedules.
Verify
php artisan migrate:status
php artisan schedule:list
sudo systemctl is-active cron pteroqThe migration reports Ran, schedule:list contains betterschedules:process, the server navigation opens the new Schedules page, and admin settings appear under Admin → Extensions → Better Schedules.
Native schedule conversion
Saving an existing native schedule as an enhanced workflow adopts its tasks and removes the native linear task rows, so the same actions cannot run twice. Removal does not reconstruct them — export important workflow JSON first.
Upgrade
Back up first, then use the installer you installed with:
ainx upgrade betterschedules.ainxblueprint -install betterschedulesAfter updating Pterodactyl itself, reinstall Better Schedules so its route and controller integration is validated against the new Panel source.
Remove
ainx remove betterschedulesblueprint -remove betterschedulesWorkflow definitions and run history are kept in the database for a future reinstall.
Troubleshooting
- A schedule never runs: check that the schedule and workflow are enabled, the online-only policy, and that cron and the
standardqueue are active. - A run stays queued:
php artisan queue:restart,sudo systemctl restart pteroq, then checkphp artisan queue:failed. - The old UI remains:
php artisan optimize:clear,yarn build:production, and hard-refresh the browser.