Ignitify.dev
Tasks
CLI reference

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
synopsis
$ ignitify task:create <task-id> [--lang node|python|go|rust] [--local] [--no-init] [--no-scaffold] [--dir <base-dir>]
terminal
$ 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)
Local only
$ 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
terminal
$ ignitify task:create image-resize --json
--json
{
  "task_id": "019f3c1e-7a42-7d10-9b3e-5c8e2a41f0d7",
  "resource_id": "tsk_QmR7xzL2Vgke",
  "slug": "image-resize",
  "local_dir": "/work/tasks/image-resize"
}
Unknown language
$ ignitify task:create image-resize --lang rubyError: --lang must be one of node, python, go, rust (got "ruby")
More examples (1)
Files already exist
$ 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
FlagValueDefaultDescription
<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 tasksFolder that holds your task folders.
--langnode|python|go|rustnodeLanguage 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

  1. Checks the task name and the language.
  2. Registers the name with the server.
  3. Saves the task ids in .ignitify/state.json.
  4. 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
synopsis
$ ignitify task:list [--limit N] [--after-id <id>] [--after <iso>]
terminal
$ 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)
No tasks
$ ignitify task:listNo tasks yet.Create one with: ignitify task:create <task-id>
terminal
$ ignitify task:list --json
--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
  }
]
FlagValueDefaultDescription
--limitN—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
synopsis
$ ignitify task:get <task-id> [--dir <base-dir>]
terminal
$ 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)
No API key
$ 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
No such folder
$ ignitify task:get nopeError: Task directory not found at /work/tasks/nope
FlagValueDefaultDescription
<task-id>required——The task folder name.
--dir<base-dir>$IGNITIFY_TASKS_DIR, else tasksFolder 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
synopsis
$ ignitify task:validate <task-id> [--dir <base-dir>] [--review-packages]
terminal
$ ignitify task:validate image-resize✓ task config valid
More examples (2)
With a package review
$ 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)
No packages to review
$ ignitify task:validate image-resize --review-packages✓ task config validAI check skipped: this task lists no build.system_packages
terminal
$ ignitify task:validate image-resize --json
--json
{
  "task_id": "image-resize",
  "valid": true
}
Unknown preset
$ 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.
FlagValueDefaultDescription
<task-id>required——The task folder name.
--dir<base-dir>$IGNITIFY_TASKS_DIR, else tasksFolder 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
synopsis
$ ignitify task:pack <task-id> [--dir <base-dir>]
terminal
$ 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)
With an ignore file
$ 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
terminal
$ ignitify task:pack image-resize --json
--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"
}
Missing lockfile
$ 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.
FlagValueDefaultDescription
<task-id>required——The task folder name.
--dir<base-dir>$IGNITIFY_TASKS_DIR, else tasksFolder 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
synopsis
$ ignitify task:deploy <task-id> [--dir <base-dir>] [--check]
terminal
$ 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)
Unchanged code
$ 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
Check only
$ ignitify task:deploy image-resize --check✓ task config valid
terminal
$ ignitify task:deploy image-resize --json
--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"
}
Folder not registered
$ ignitify task:deploy image-resizeError: task_id not found in .ignitify/state.json — run `ignitify task:create <task-id>` first
More examples (1)
Ctrl+C
$ 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
FlagValueDefaultDescription
<task-id>required——The task folder name.
--dir<base-dir>$IGNITIFY_TASKS_DIR, else tasksFolder that holds your task folders.
--check——Run every local check, then stop. Nothing is uploaded.

What happens

  1. Checks the folder on your machine.
  2. Uploads the task source.
  3. Waits for the platform to build the image, up to 15 min.
  4. Prints the deployment.

task:run

Start one run of a task from its latest deployment.

  • needs API key
  • waits
  • --json: full
synopsis
$ ignitify task:run <task-id> [--dir <base-dir>] [--deployment <id>] [--payload <json>] [--timeout-sec <n>] [--on-busy queue|reject] [--at <iso>] [--wait]
terminal
$ 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)
With --wait
$ 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  }
Scheduled with --at
$ 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
terminal
$ ignitify task:run image-resize --json
--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"
  }
}
Payload too large
$ ignitify task:run image-resize --payload "$(cat big.json)"Error: payload is 12044 bytes; the limit is 10240 bytes
More examples (2)
Build not finished
$ 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.
--at with --wait
$ 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'.
FlagValueDefaultDescription
<task-id>required——The task folder name.
--deployment<id>the task's latest deployRun this deployment instead of the task's latest deploy.
--payload<json>run.payload from task.yamlJSON input for this run only. The limit is 10 KiB.
--timeout-sec<n>run.timeout_sec from task.yamlTime limit in seconds for this run only.
--on-busyqueue|rejectqueueWhat 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 tasksFolder that holds your task folders.

What happens

  1. Checks the flags and the payload size on your machine.
  2. Picks the latest deployment, or the one you name.
  3. Submits the run.
  4. 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
synopsis
$ ignitify task:delete <task-id> [--dir <base-dir>] [--yes] [--json]
terminal
$ 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
terminal
$ ignitify task:delete image-resize --yes --json
--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
  }
}
No terminal and no --yes
$ 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.
FlagValueDefaultDescription
<task-id>required——The task folder name, or the task id.
--dir<base-dir>$IGNITIFY_TASKS_DIR, else tasksFolder 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

  1. Counts what the task owns, and lists the runs that are still live.
  2. Asks you to confirm, unless you pass --yes.
  3. Deletes the task, its deployments and its runs on the server.
  4. Removes the .ignitify/ link in each local folder that points to the task.