Documentation
Dynfult
A scheduler for recurring and one-off jobs.
Dynfult triggers jobs on a schedule and tracks every run. Jobs can recur on a cron expression or fire once at a future time, and each trigger calls a URL or enqueues work for your services.
Failed runs retry with backoff and, if they keep failing, move to a dead-letter list. A full run history — status, duration, output — is kept so you can audit what happened.
#Installation
Dynfult ships as one static binary. Place it on your host and start it:
# download and start $ curl -sSL get.webtest.stas.me/install | sh $ dynfult serve --data /var/lib/dynfult → listening on :5600 · api ready
By default Dynfult binds to 127.0.0.1:5600. Put it behind your own reverse proxy to expose it over TLS.
#Quickstart
# schedule a nightly job $ curl -X POST :5600/v1/jobs \ -d '{"cron":"0 3 * * *","url":"..."}' → scheduled · id job_2 # see recent runs $ curl :5600/v1/jobs/job_2/runs
#Configuration
Configure with flags, environment variables, or a small YAML file. Flags take precedence.
# dynfult.yaml
data: /var/lib/dynfult
listen: 127.0.0.1:5600
log: info
retries:
max: 3data— directory for the job store and run history.listen— address the HTTP interface binds to.retries.max— retry attempts before a run is dead-lettered.
#API reference
Every route lives under /v1. Requests without a valid token return 401.
| Method & path | Description |
|---|---|
POST /v1/jobs | Register a scheduled or one-off job. |
GET /v1/jobs/{id}/runs | List a job's run history. |
POST /v1/jobs/{id}/trigger | Run a job now. |
DELETE /v1/jobs/{id} | Remove a job. |
GET /health | Liveness probe. Returns 200 when ready. |
#CLI
The dynfult binary is both the server and the client.
| Command | Description |
|---|---|
dynfult serve | Start the scheduler. |
dynfult jobs ls | List jobs. |
dynfult trigger <id> | Run a job now. |
dynfult status | Show upcoming runs. |