Tasks
Create, check, deploy and run a task from your own folder.
task:create
Register a task name and write the starter files for it.
- needs API key · offline with --local
- --json: full
$ ignitify task:create <task-id> [--lang node|python|go|rust] [--local] [--no-init] [--no-scaffold] [--dir <base-dir>]$ ignitify task:create image-resize✓ Task Registeredtask_id 019f3c1e-7a42-7d10-9b3e-5c8e2a41f0d7resource_id tsk_QmR7xzL2Vgkelocal_dir /work/tasks/image-resizeCommand template for next step: Next Step: ignitify task:deploy <task_id>Full command: ignitify task:deploy image-resizepayload max 10 KiB, result max 10 KiB; over the limit the run fails
More examples (1)
$ ignitify task:create image-resize --local✓ Created node task image-resize at /work/tasks/image-resize (local only — not registered)payload max 10 KiB, result max 10 KiB; over the limit the run fails
$ ignitify task:create image-resize --json{
"task_id": "019f3c1e-7a42-7d10-9b3e-5c8e2a41f0d7",
"resource_id": "tsk_QmR7xzL2Vgke",
"slug": "image-resize",
"local_dir": "/work/tasks/image-resize"
}$ ignitify task:create image-resize --lang rubyError: --lang must be one of node, python, go, rust (got "ruby")
More examples (1)
$ ignitify task:create image-resize --localError: Task files already exist at /work/tasks/image-resize: task.yaml, README.md, index.ts, package.json, package-lock.json
| Flag | Value | Default | Description |
|---|---|---|---|
<task-id>required | — | — | The task name. It is also the folder name and the slug in task.yaml. |
--dir | <base-dir> | $IGNITIFY_TASKS_DIR, else tasks | Folder that holds your task folders. |
--lang | node|python|go|rust | node | Language of the starter files. |
--local | — | — | Write the files only. Calls no server and needs no key. |
--no-init | — | — | Write the short starter that has only run(), without init code. |
--no-scaffold | — | — | Register the task name but write no files. |
What happens
- Checks the task name and the language.
- Registers the name with the server.
- Saves the task ids in
.ignitify/state.json. - Writes task.yaml, the entry file, the lockfile and README.md.
task:list
List your tasks, one page at a time.
- needs API key
- --json: full
$ ignitify task:list [--limit N] [--after-id <id>] [--after <iso>]$ ignitify task:listid 019f3c1e-7a42-7d10-9b3e-5c8e2a41f0d7resource_id tsk_QmR7xzL2Vgketenant_id 019f2b10-3c55-7a01-b2e4-9d0c61f7a8b3slug image-resizecreated_at 2026-10-14T09:12:03.540Zupdated_at 2026-10-14T09:12:03.540Zdeleted_at -
More examples (1)
$ ignitify task:listNo tasks yet.Create one with: ignitify task:create <task-id>
$ ignitify task:list --json[
{
"id": "019f3c1e-7a42-7d10-9b3e-5c8e2a41f0d7",
"resource_id": "tsk_QmR7xzL2Vgke",
"tenant_id": "019f2b10-3c55-7a01-b2e4-9d0c61f7a8b3",
"slug": "image-resize",
"created_at": "2026-10-14T09:12:03.540Z",
"updated_at": "2026-10-14T09:12:03.540Z",
"deleted_at": null
}
]| Flag | Value | Default | Description |
|---|---|---|---|
--limit | N | — | Rows on the page. The server sets the default and the largest value. |
--after | <iso> | — | Only rows after this ISO 8601 time. |
--after-id | <id> | — | Page cursor. Pass the id of the last row of the page before. |
task:get
Report a task's deploys, runs, and what the next deploy and run will do.
- API key optional
- --json: full
$ ignitify task:get <task-id> [--dir <base-dir>]$ ignitify task:get image-resizeTask report: image-resizeDeployed: YES — 1 live deployment(s)Resources: task images on disk: 8.0 MiB tenant-wide (whoami): tasks 3, active runs 0, deployments 5, images 70.0 MiB, egress this month 0 B more: ignitify quotaDeployments: 2026-10-14T09:12:03.540Z 019f3c24-1b05-7c9a-8e21-4d6f0b93a7e2 [READY] hash 9891a4918eae… 8.0 MiB detail: ignitify deployment:get 019f3c24-1b05-7c9a-8e21-4d6f0b93a7e2Runs: total 3 (COMPLETED 3) 2026-10-14T09:12:06.902Z 019f3c58-4e02-7b19-9d36-8a1f5c7e2b40 [COMPLETED] detail: ignitify run:get 019f3c58-4e02-7b19-9d36-8a1f5c7e2b40 2026-10-14T09:12:06.324Z 019f3c59-1c77-7d40-a8e2-5b3f9d0c6a17 [COMPLETED] detail: ignitify run:get 019f3c59-1c77-7d40-a8e2-5b3f9d0c6a17 2026-10-14T09:12:04.118Z 019f3c27-9d63-7e48-a5b0-2f17c8d4e936 [COMPLETED] detail: ignitify run:get 019f3c27-9d63-7e48-a5b0-2f17c8d4e936 list: ignitify run:list --task-name image-resizeNew deployment needed: NO - local code is identical to deployment 019f3c24-1b05-7c9a-8e21-4d6f0b93a7e2 (content_hash dedup — deploy would return reused: true)New VM on next run: YES - cardinality 'one' → one-shot lifecycle: every run boots a fresh VM and tears it down
More examples (1)
$ ignitify task:get image-resizeNote: Not signed in. Run 'ignitify login', or set the IGNITIFY_API_KEY environment variable. The server sections show UNKNOWN.Task report: image-resizeDeployed: UNKNOWN — server unreachable; no local deployment pointer eitherResources: task images on disk: unknown (server unreachable)Deployments: unknown (server unreachable)Runs: unknown (server unreachable)New deployment needed: UNKNOWN - server unreachable — cannot compare against live deploymentsNew VM on next run: YES - cardinality 'one' → one-shot lifecycle: every run boots a fresh VM and tears it down
$ ignitify task:get nopeError: Task directory not found at /work/tasks/nope
| Flag | Value | Default | Description |
|---|---|---|---|
<task-id>required | — | — | The task folder name. |
--dir | <base-dir> | $IGNITIFY_TASKS_DIR, else tasks | Folder that holds your task folders. |
task:validate
Check task.yaml on your machine, without sending or building anything.
- offline · key needed with --review-packages
- --json: full
$ ignitify task:validate <task-id> [--dir <base-dir>] [--review-packages]$ ignitify task:validate image-resize✓ task config valid
More examples (2)
$ ignitify task:validate image-resize --review-packages✓ task config valid⚠ ffmpeg: heavy — large install; needed only for video · suggest: libavcodec-extra (AI suggestion, not checked against Debian)adds about 1–2 min to the first build of this list (model estimate; a later code-only redeploy reuses the drive)
$ ignitify task:validate image-resize --review-packages✓ task config validAI check skipped: this task lists no build.system_packages
$ ignitify task:validate image-resize --json{
"task_id": "image-resize",
"valid": true
}$ ignitify task:validate image-resizeError: task.yaml: unknown run.preset "std.mikro" (valid: std.micro, std.small, std.medium, std.large, std.xlarge, mem.large, mem.xlarge, cpu.large). An unrecognised preset would silently fall back to the platform default, giving you a different instance class than you declared.
| Flag | Value | Default | Description |
|---|---|---|---|
<task-id>required | — | — | The task folder name. |
--dir | <base-dir> | $IGNITIFY_TASKS_DIR, else tasks | Folder that holds your task folders. |
--review-packages | — | — | Then ask the server for an AI review of build.system_packages. |
task:pack
List the files that task:deploy would upload, without building or sending.
- offline
- --json: full
$ ignitify task:pack <task-id> [--dir <base-dir>]$ ignitify task:pack image-resizeSource Upload (nothing built, nothing sent)Path Size───────────────── ───────README.md 1.1 KiBindex.ts 1.3 KiBpackage-lock.json 187 Bpackage.json 90 Btask.yaml 3.3 KiB5 files · 6.0 KiB · sha256:9891a4918eaea18984ccb0d30a724cf2e5cd1705a54cf168954e0741c981f1e4Command template for next step: Next Step: ignitify task:deploy <task_id>Full command: ignitify task:deploy image-resize
More examples (1)
$ ignitify task:pack image-resizeSource Upload (nothing built, nothing sent)ignored by .ignitifyignore: tmp/Path Size───────────────── ───────README.md 1.1 KiBindex.ts 1.3 KiBpackage-lock.json 187 Bpackage.json 90 Btask.yaml 3.3 KiB5 files · 6.0 KiB · sha256:9891a4918eaea18984ccb0d30a724cf2e5cd1705a54cf168954e0741c981f1e4Command template for next step: Next Step: ignitify task:deploy <task_id>Full command: ignitify task:deploy image-resize
$ ignitify task:pack image-resize --json{
"task_id": "image-resize",
"files": [
{
"path": "README.md",
"size": 1130
},
{
"path": "index.ts",
"size": 1327
},
{
"path": "package-lock.json",
"size": 187
},
{
"path": "package.json",
"size": 90
},
{
"path": "task.yaml",
"size": 3397
}
],
"total_bytes": 6131,
"ignored": [],
"content_hash": "sha256:9891a4918eaea18984ccb0d30a724cf2e5cd1705a54cf168954e0741c981f1e4"
}$ ignitify task:pack image-resize✗ package-lock.json is missing. A node task must upload its lockfile: without one the build is not reproducible and two deployments of the same source can resolve different versions.
| Flag | Value | Default | Description |
|---|---|---|---|
<task-id>required | — | — | The task folder name. |
--dir | <base-dir> | $IGNITIFY_TASKS_DIR, else tasks | Folder that holds your task folders. |
task:deploy
Upload your task source and wait until the platform has built it.
- needs API key · offline with --check
- waits
- --json: full
$ ignitify task:deploy <task-id> [--dir <base-dir>] [--check]$ ignitify task:deploy image-resizeUploading image-resize (11.5 KiB)…Building image 019f3c24-1b05-7c9a-8e21-4d6f0b93a7e2…✓ Image built · 14s✓ Deployment Createddeployment_id 019f3c24-1b05-7c9a-8e21-4d6f0b93a7e2resource_id dep_Hn4TqXw8Zc2Pstatus READYreused falsetask_id 019f3c1e-7a42-7d10-9b3e-5c8e2a41f0d7tenant_id 019f2b10-3c55-7a01-b2e4-9d0c61f7a8b3content_hash sha256:9891a4918eaea18984ccb0d30a724cf2e5cd1705a54cf168954e0741c981f1e4System Resources: • Image: built and stored by the platform; there is nothing for you to download.Monthly egress: 0 B of 100.0 GB used (0%), 100.0 GB leftMonthly compute: 42 s used, no monthly limitResets 2026-11-01T00:00:00.000Z · details: ignitify usageCommand template for next step: Next Step: ignitify task:run <task_id>Full command: ignitify task:run image-resize
More examples (2)
$ ignitify task:deploy image-resizeUploading image-resize (11.5 KiB)…✓ Image already built — reused · 1s✓ Deployment Createddeployment_id 019f3c24-1b05-7c9a-8e21-4d6f0b93a7e2resource_id dep_Hn4TqXw8Zc2Pstatus READYreused truetask_id 019f3c1e-7a42-7d10-9b3e-5c8e2a41f0d7tenant_id 019f2b10-3c55-7a01-b2e4-9d0c61f7a8b3content_hash sha256:9891a4918eaea18984ccb0d30a724cf2e5cd1705a54cf168954e0741c981f1e4System Resources: • Image: built and stored by the platform; there is nothing for you to download.Monthly egress: 0 B of 100.0 GB used (0%), 100.0 GB leftMonthly compute: 42 s used, no monthly limitResets 2026-11-01T00:00:00.000Z · details: ignitify usageCommand template for next step: Next Step: ignitify task:run <task_id>Full command: ignitify task:run image-resize
$ ignitify task:deploy image-resize --check✓ task config valid
$ ignitify task:deploy image-resize --json{
"deployment_id": "019f3c24-1b05-7c9a-8e21-4d6f0b93a7e2",
"resource_id": "dep_Hn4TqXw8Zc2P",
"status": "READY",
"reused": true,
"capacity": {
"period": "2026-10",
"resets_at": "2026-11-01T00:00:00.000Z",
"limits": [
{
"axis": "egress",
"unit": "bytes",
"used": 0,
"limit": 107374182400,
"remaining": 107374182400,
"percent": 0,
"text": "egress: 0 B of 100.0 GB used (0%), 100.0 GB left"
},
{
"axis": "compute",
"unit": "seconds",
"used": 42,
"limit": null,
"remaining": null,
"percent": null,
"text": "compute: 42 s used, no monthly limit"
}
],
"usage_command": "ignitify usage"
},
"task_id": "019f3c1e-7a42-7d10-9b3e-5c8e2a41f0d7",
"slug": "image-resize",
"tenant_id": "019f2b10-3c55-7a01-b2e4-9d0c61f7a8b3",
"content_hash": "sha256:9891a4918eaea18984ccb0d30a724cf2e5cd1705a54cf168954e0741c981f1e4"
}$ ignitify task:deploy image-resizeError: task_id not found in .ignitify/state.json — run `ignitify task:create <task-id>` first
More examples (1)
$ ignitify task:deploy image-resizeStopped waiting. The build keeps running on the server — nothing was cancelled.Check it with: ignitify deployment:get 019f3c52-8b17-7e0d-a3c4-6d19f2b7e085
| Flag | Value | Default | Description |
|---|---|---|---|
<task-id>required | — | — | The task folder name. |
--dir | <base-dir> | $IGNITIFY_TASKS_DIR, else tasks | Folder that holds your task folders. |
--check | — | — | Run every local check, then stop. Nothing is uploaded. |
What happens
- Checks the folder on your machine.
- Uploads the task source.
- Waits for the platform to build the image, up to 15 min.
- Prints the deployment.
task:run
Start one run of a task from its latest deployment.
- needs API key
- waits
- --json: full
$ ignitify task:run <task-id> [--dir <base-dir>] [--deployment <id>] [--payload <json>] [--timeout-sec <n>] [--on-busy queue|reject] [--at <iso>] [--wait]$ ignitify task:run image-resize --payload '{"url":"https://example.com/cat.png","width":320}'✓ Run Submittedrun_id 019f3c27-9d63-7e48-a5b0-2f17c8d4e936resource_id run_H8kQ2mNxT4pLstatus PENDINGMonthly egress: 0 B of 100.0 GB used (0%), 100.0 GB leftMonthly compute: 42 s used, no monthly limitResets 2026-11-01T00:00:00.000Z · details: ignitify usageCommand template for next step: Next Step: ignitify run:get <run_id>Full command: ignitify run:get run_H8kQ2mNxT4pL
More examples (2)
$ ignitify task:run image-resize --waitMonthly egress: 0 B of 100.0 GB used (0%), 100.0 GB leftMonthly compute: 42 s used, no monthly limitResets 2026-11-01T00:00:00.000Z · details: ignitify usageRun 019f3c27-9d63-7e48-a5b0-2f17c8d4e936 submitted…Run 019f3c27-9d63-7e48-a5b0-2f17c8d4e936 PENDING…Run 019f3c27-9d63-7e48-a5b0-2f17c8d4e936 RUNNING…Run 019f3c27-9d63-7e48-a5b0-2f17c8d4e936 COMPLETED…✓ Run COMPLETED · 3sRun Detailsid 019f3c27-9d63-7e48-a5b0-2f17c8d4e936resource_id run_H8kQ2mNxT4pLcorrelation_id 019f3c26-b3a1-7f52-8e07-4d2c9a6b1e35deployment_id 019f3c24-1b05-7c9a-8e21-4d6f0b93a7e2tenant_id 019f2b10-3c55-7a01-b2e4-9d0c61f7a8b3vm_id vm_019f3c2a-7d41-7b3e-9a10-4c5e8f21d0a6status COMPLETEDtask_name image-resizepreset std.microtimeout_sec 120boot_fingerprint 3f9c1a2be7d41056started_at 2026-10-14T09:12:04.118Zattempt_count 0failure_attempt_count 0updated_at 2026-10-14T09:12:06.324Zcreated_at 2026-10-14T09:12:03.540ZResult: { "task": "image-resize", "success": true }
$ ignitify task:run image-resize --at 2027-01-15T03:00:00Z✓ Scheduled: sch_Rt6WnB3yKd8Q fires at 2027-01-15T03:00:00.000ZNo run exists until it fires. List with 'ignitify schedule:list'; cancel with 'ignitify schedule:cancel sch_Rt6WnB3yKd8Q'.Monthly egress: 0 B of 100.0 GB used (0%), 100.0 GB leftMonthly compute: 42 s used, no monthly limitResets 2026-11-01T00:00:00.000Z · details: ignitify usage
$ ignitify task:run image-resize --json{
"run_id": "019f3c27-9d63-7e48-a5b0-2f17c8d4e936",
"resource_id": "run_H8kQ2mNxT4pL",
"status": "PENDING",
"capacity": {
"period": "2026-10",
"resets_at": "2026-11-01T00:00:00.000Z",
"limits": [
{
"axis": "egress",
"unit": "bytes",
"used": 0,
"limit": 107374182400,
"remaining": 107374182400,
"percent": 0,
"text": "egress: 0 B of 100.0 GB used (0%), 100.0 GB left"
},
{
"axis": "compute",
"unit": "seconds",
"used": 42,
"limit": null,
"remaining": null,
"percent": null,
"text": "compute: 42 s used, no monthly limit"
}
],
"usage_command": "ignitify usage"
}
}$ ignitify task:run image-resize --payload "$(cat big.json)"Error: payload is 12044 bytes; the limit is 10240 bytes
More examples (2)
$ ignitify task:run image-resizeError: the latest deploy of image-resize is still building (019f3c52-8b17-7e0d-a3c4-6d19f2b7e085). Wait for it ('ignitify deployment:get 019f3c52-8b17-7e0d-a3c4-6d19f2b7e085'), or pass --deployment <id> to run an older one.
$ ignitify task:run image-resize --at 2027-01-15T03:00:00Z --waitError: --wait cannot be used with --at: a scheduled run has no run id until it fires. Drop --wait; follow it later with 'ignitify schedule:list' and 'ignitify run:list'.
| Flag | Value | Default | Description |
|---|---|---|---|
<task-id>required | — | — | The task folder name. |
--deployment | <id> | the task's latest deploy | Run this deployment instead of the task's latest deploy. |
--payload | <json> | run.payload from task.yaml | JSON input for this run only. The limit is 10 KiB. |
--timeout-sec | <n> | run.timeout_sec from task.yaml | Time limit in seconds for this run only. |
--on-busy | queue|reject | queue | What a run does when it cannot start at once. queue waits for room, reject fails at once. |
--at | <iso> | — | Schedule the run for this ISO 8601 time instead of starting it now. |
--wait | — | — | Follow the run to its end, then print the run and its result. |
--dir | <base-dir> | $IGNITIFY_TASKS_DIR, else tasks | Folder that holds your task folders. |
What happens
- Checks the flags and the payload size on your machine.
- Picks the latest deployment, or the one you name.
- Submits the run.
- With
--wait, follows the run to its end.
task:delete
Delete a task with all its deployments and runs.
- needs API key
- asks to confirm
- deletes data
- --json: full
$ ignitify task:delete <task-id> [--dir <base-dir>] [--yes] [--json]$ ignitify task:delete image-resizeThe following will be deleted: task (server, soft-delete) image-resize deployments 1 runs 1 local link (.ignitify/) /work/tasks/image-resize (files kept)⚠ WARNING: 1 run(s) are still live and will be terminated: • run_H8kQ2mNxT4pL RUNNING vm vm_019f3c2a-7d41-7b3e-9a10-4c5e8f21d0a6 its VM is destroyed and the run is recorded as CANCELLEDProceed? [y/N] y✓ task deleted: 019f3c1e-7a42-7d10-9b3e-5c8e2a41f0d7 (deployments: 1, runs: 1, vms: 1, forfeited pins: 0)Removed local link: /work/tasks/image-resize/.ignitify
$ ignitify task:delete image-resize --yes --json{
"plan": {
"task_slug": "image-resize",
"deployment_count": 1,
"run_count": 1,
"affected": [
{
"run_id": "run_H8kQ2mNxT4pL",
"status": "RUNNING",
"vm_id": "vm_019f3c2a-7d41-7b3e-9a10-4c5e8f21d0a6",
"fate": "cancelled-via-vm-teardown"
}
],
"unlink_dirs": [
"/work/tasks/image-resize"
],
"has_in_flight": true
},
"deleted": {
"task_id": "019f3c1e-7a42-7d10-9b3e-5c8e2a41f0d7",
"deployments": 1,
"runs": 1,
"vms": 1,
"forfeited_pins": 0
}
}$ ignitify task:delete image-resizeThe following will be deleted: task (server, soft-delete) image-resize deployments 1 runs 7 local link (.ignitify/) /work/tasks/image-resize (files kept)Error: Refusing to proceed: not a TTY. Re-run with --yes to confirm non-interactively.Aborted.
| Flag | Value | Default | Description |
|---|---|---|---|
<task-id>required | — | — | The task folder name, or the task id. |
--dir | <base-dir> | $IGNITIFY_TASKS_DIR, else tasks | Folder that holds your task folders. The command looks there for linked folders. |
--yes, -y | — | — | Skip the question. The list of what will be deleted still prints. |
--json | — | — | Print the plan and the result as one JSON document. |
What happens
- Counts what the task owns, and lists the runs that are still live.
- Asks you to confirm, unless you pass
--yes. - Deletes the task, its deployments and its runs on the server.
- Removes the
.ignitify/link in each local folder that points to the task.