porter.yaml.
Field Reference
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Service identifier (max 31 chars) |
type | string | Yes | Must be job |
run | string | Yes | Command to execute |
cpuCores | number | Yes | CPU allocation |
ramMegabytes | integer | Yes | Memory allocation in MB |
cron | string | No | Cron schedule expression |
suspendCron | boolean | No | Temporarily disable cron schedule |
allowConcurrent | boolean | No | Allow concurrent job runs |
timeoutSeconds | integer | No | Maximum job duration |
connections | array | No | External cloud connections |
terminationGracePeriodSeconds | integer | No | Graceful shutdown timeout |
gpuCoresNvidia | integer | No | NVIDIA GPU cores |
nodeGroup | string | No | Node group UUID |
Basic Example
cron
string
Optional
A cron expression that defines when the job should run. Uses standard 5-field cron syntax.
If no cron expression is provided, the job must be triggered manually using
porter app run --job.suspendCron
boolean
Optional
Temporarily disable the cron schedule without removing it. The job won’t run on schedule but can still be triggered manually.
allowConcurrent
boolean
Optional
Allow multiple instances of the job to run simultaneously. By default, a new job run won’t start if a previous run is still in progress.
timeoutSeconds
integer
Optional
Maximum number of seconds the job is allowed to run before being terminated.
If not specified, jobs may run indefinitely. It’s recommended to set a reasonable timeout for all jobs.
connections
array
Optional
Connect to external cloud services. See Connections Configuration for full documentation.
terminationGracePeriodSeconds
integer
Optional
Seconds to wait for graceful shutdown before forcefully terminating the job.
gpuCoresNvidia
integer
Optional
Allocate NVIDIA GPU cores for ML training, inference, or GPU-accelerated processing.
Requires a node group with GPU-enabled instances.
Triggering Jobs Manually
Jobs can be triggered manually using the Porter CLI:Complete Example
Common Use Cases
Database Cleanup
Data Export
ML Training Job
Health Check / Monitoring
Manual Migration Job
Jobs without a
cron expression must be triggered manually using porter app run --job.
