Ignitify.dev
Account and usage
CLI reference

Account and usage

Sign in and out, see your identity, limits and usage, the version and help.

login

Sign this machine in and save its API key.

  • offline
  • --json: none
synopsis
$ ignitify login [--name <label>] [--no-browser]
terminal
$ ignitify loginSign in to IgnitifyOpen this page:  https://account.ignitify.dev/web/device?code=BCDFGHJKCheck this code  ┌─────────────┐  │  BCDF-GHJK  │  └─────────────┘  The page must show the same code.Waiting for approval. The code expires in 10 minutes.✓ Signed in  Account      acme  Account id   tnt_Xk29QmWr5LdA  Key label    ada-laptop  Key expires  90 days after last use; each use renews it  Saved to     ~/.config/ignitify/credentials.json
The code was not approved in time
$ ignitify loginSign in to IgnitifyOpen this page:  https://account.ignitify.dev/web/device?code=BCDFGHJKCheck this code  ┌─────────────┐  │  BCDF-GHJK  │  └─────────────┘  The page must show the same code.Waiting for approval. The code expires in 10 minutes.Error: The code BCDF-GHJK expired before it was approved. Run 'ignitify login' again.
FlagValueDefaultDescription
--no-browser——Print the sign-in page, but do not open it.
--name<label>—A label for this machine's key. The default is the hostname.

What happens

  1. Asks the platform for a sign-in code and prints it.
  2. Waits while the code is approved.
  3. Saves the new key in a file that only you can read.
  4. Prints the account it signed in to.

logout

Revoke this machine's key and delete the saved file.

  • offline
  • deletes data
  • --json: none
synopsis
$ ignitify logout
terminal
$ ignitify logout✓ Signed out  Key label  ada-laptop  Revoked    yes  Deleted    ~/.config/ignitify/credentials.json
More examples (1)
Nothing saved
$ ignitify logoutNot signed in. There are no saved credentials.

What happens

  1. Asks the platform to revoke the saved key.
  2. Deletes the saved file.
  3. Prints the result.

whoami

Show who your API key belongs to, your limits and what you use.

  • needs API key
  • --json: full
synopsis
$ ignitify whoami
terminal
$ ignitify whoamiTenant Profiletenant_id    019f2b10-3c55-7a01-b2e4-9d0c61f7a8b3resource_id  tnt_Xk29QmWr5LdAname         acmestatus       ACTIVEtier         starter v1bound_by     tier-entitlementUsage & Limitstasks                    3 / 15active_runs              1 / 3pinned_vms               0 / 0deployments              5disk_used                70.0 MiB / 1.0 GiBscratch_ceiling          512 MiBegress_out_this_month    1.0 MiBdeployments_this_month   6api_requests_this_month  ~1280 (approx)Entitlements (tier policy)max_tasks                   15max_deployments             10max_running_vms             3max_pinned_vms              0max_warm_vms                3max_secrets                 25max_webhooks                3max_api_keys                3deployments_per_minute      5deployments_per_hour        40deployments_per_day         200runs_per_minute             60runs_per_hour               1000runs_per_day                10000api_requests_per_sec        25  (per server)api_requests_burst          50  (per server)failure_max_attempts        2max_storage_mib             512max_image_bytes             268435456max_total_image_bytes       1073741824max_timeout_sec             1800max_vm_lifetime_sec         3600egress_mbit                 50monthly_egress_bytes        107374182400max_compute_seconds_month   unlimited  (run seconds, not the VM time `usage` shows as compute)max_conns_per_vm            32dns_max_qps                 25ingress_rps                 unlimitedingress_burst               unlimitedingress_max_concurrent      unlimitedbuild_weight                2may_pin                     nomay_use_egress              yesmay_use_ingress             nomay_use_secrets             yesmay_use_webhooks            yesmay_use_retry               yesmay_duration_long           yesmay_duration_unbounded      nomay_cardinality_continuous  nomay_state_across_runs       yesmay_state_across_crashes    noallowed_presets             std.micro, std.small  (per server) — each server applies this limit on its own, so the limit across all servers is at least this.Enforced Limits (what this server applies)max_timeout_sec         1800max_storage_mib         512max_image_bytes         268435456max_vm_lifetime_sec     3600egress_mbit             50ingress_rps             5000  (platform default)ingress_burst           5000  (platform default)ingress_max_concurrent  64  (platform default)
terminal
$ ignitify whoami --json
--json
{
  "tenant_id": "019f2b10-3c55-7a01-b2e4-9d0c61f7a8b3",
  "resource_id": "tnt_Xk29QmWr5LdA",
  "name": "acme",
  "status": "active",
  "status_reason": null,
  "tier": {
    "name": "starter",
    "version": 1
  },
  "bound_by": "tier-entitlement",
  "limits": {
    "max_tasks": 15,
    "max_running_vms": 3,
    "max_pinned_vms": 0,
    "max_total_image_bytes": 1073741824,
    "max_storage_mib": 512,
    "max_payload_bytes": 10240,
    "max_result_bytes": 10240
  },
  "policy": {
    "tier_id": "019f3c10-2d4b-7a85-8f61-3c9e0b7d5a24",
    "tier_name": "starter",
    "tier_version": 1,
    "max_tasks": 15,
    "max_deployments": 10,
    "max_running_vms": 3,
    "max_pinned_vms": 0,
    "max_warm_vms": 3,
    "max_secrets": 25,
    "max_webhooks": 3,
    "max_api_keys": 3,
    "deployments_per_minute": 5,
    "deployments_per_hour": 40,
    "deployments_per_day": 200,
    "runs_per_minute": 60,
    "runs_per_hour": 1000,
    "runs_per_day": 10000,
    "api_requests_per_sec": 25,
    "api_requests_burst": 50,
    "failure_max_attempts": 2,
    "max_storage_mib": 512,
    "max_image_bytes": 268435456,
    "max_total_image_bytes": 1073741824,
    "max_timeout_sec": 1800,
    "max_vm_lifetime_sec": 3600,
    "egress_mbit": 50,
    "monthly_egress_bytes": 107374182400,
    "max_compute_seconds_month": null,
    "max_conns_per_vm": 32,
    "dns_max_qps": 25,
    "ingress_rps": null,
    "ingress_burst": null,
    "ingress_max_concurrent": null,
    "build_weight": 2,
    "may_pin": false,
    "may_use_egress": true,
    "may_use_ingress": false,
    "may_use_secrets": true,
    "may_use_webhooks": true,
    "may_use_retry": true,
    "may_duration_long": true,
    "may_duration_unbounded": false,
    "may_cardinality_continuous": false,
    "may_state_across_runs": true,
    "may_state_across_crashes": false,
    "allowed_presets": [
      "std.micro",
      "std.small"
    ]
  },
  "enforced": [
    {
      "column": "max_timeout_sec",
      "tier": 1800,
      "host_default": 3600,
      "enforced": 1800,
      "winner": "tier",
      "host_key": "limits.max_timeout_sec",
      "clamped": false
    },
    {
      "column": "max_storage_mib",
      "tier": 512,
      "host_default": 1024,
      "enforced": 512,
      "winner": "tier",
      "host_key": "limits.max_storage_mib",
      "clamped": false
    },
    {
      "column": "max_image_bytes",
      "tier": 268435456,
      "host_default": 10737418240,
      "enforced": 268435456,
      "winner": "tier",
      "host_key": "deploy.max_image_bytes",
      "clamped": false
    },
    {
      "column": "max_vm_lifetime_sec",
      "tier": 3600,
      "host_default": 3600,
      "enforced": 3600,
      "winner": "tier",
      "host_key": "warm.vm_lifetime_sec",
      "clamped": false
    },
    {
      "column": "egress_mbit",
      "tier": 50,
      "host_default": 100,
      "enforced": 50,
      "winner": "tier",
      "host_key": "egress.default_mbit",
      "clamped": false
    },
    {
      "column": "ingress_rps",
      "tier": "unlimited",
      "host_default": 5000,
      "enforced": 5000,
      "winner": "host-default",
      "host_key": "ingress.max_rps",
      "clamped": false
    },
    {
      "column": "ingress_burst",
      "tier": "unlimited",
      "host_default": 5000,
      "enforced": 5000,
      "winner": "host-default",
      "host_key": "ingress.max_rps",
      "clamped": false
    },
    {
      "column": "ingress_max_concurrent",
      "tier": "unlimited",
      "host_default": 64,
      "enforced": 64,
      "winner": "host-default",
      "host_key": "ingress.max_concurrent_per_vcpu",
      "clamped": false
    }
  ],
  "policy_scope": {
    "per_brain": [
      "api_requests_burst",
      "api_requests_per_sec"
    ],
    "per_brain_semantics": "floor-per-orchestrator"
  },
  "usage": {
    "task_count": 3,
    "active_runs": 1,
    "deployment_count": 5,
    "total_image_bytes": 73400320,
    "pinned_vms": 0,
    "net_egress_bytes": 1048576,
    "deployments_created": 6,
    "api_requests_approx": 1280
  }
}
Not signed in
$ ignitify whoamiError: Not signed in. Run 'ignitify login', or set the IGNITIFY_API_KEY environment variable.

quota

Show what you hold now against your limits.

  • needs API key
  • --json: full
synopsis
$ ignitify quota
terminal
$ ignitify quotaUsage & Limitstasks                    3 / 15active_runs              1 / 3pinned_vms               0 / 0deployments              5disk_used                70.0 MiB / 1.0 GiBscratch_ceiling          512 MiBegress_out_this_month    1.0 MiBdeployments_this_month   6api_requests_this_month  ~1280 (approx)

usage

Show what you used in one month, by axis.

  • needs API key
  • --json: full
synopsis
$ ignitify usage [--period YYYY-MM] [--axis compute|network|network_in|disk|scratch|runs|pin|build] [--vm <vm-id>] [--run <run-id>] [--runs|--vms] [--json]
terminal
$ ignitify usage --period 2026-10 --runsusage for 2026-10  AXIS        QUANTITY            LINES   RECONCILIATION  compute     3 s                     1   —  runs        1                       1   agrees with the meter  note: `compute` = VM time (boot to teardown). Your monthly compute limit counts run seconds instead.  runs started 1   deployments created 1   API requests 42 (approx)  AXIS        QUANTITY            VM / RUN                                DETAIL  runs        1                   019f3c27-9d63-7e48-a5b0-2f17c8d4e936    COMPLETED
terminal
$ ignitify usage --period 2026-10 --json
--json
{
  "tenant_id": "019f2b10-3c55-7a01-b2e4-9d0c61f7a8b3",
  "period": "2026-10",
  "filtered": false,
  "lines": [
    {
      "axis": "compute",
      "vm_id": "vm_019f3c2a-7d41-7b3e-9a10-4c5e8f21d0a6",
      "run_id": null,
      "deployment_id": "019f3c24-1b05-7c9a-8e21-4d6f0b93a7e2",
      "window_start": "2026-10-14T09:12:03.900Z",
      "window_end": "2026-10-14T09:12:06.900Z",
      "quantity": 3000,
      "unit": "ms",
      "detail": "running"
    },
    {
      "axis": "runs",
      "vm_id": "vm_019f3c2a-7d41-7b3e-9a10-4c5e8f21d0a6",
      "run_id": "019f3c27-9d63-7e48-a5b0-2f17c8d4e936",
      "deployment_id": "019f3c24-1b05-7c9a-8e21-4d6f0b93a7e2",
      "window_start": "2026-10-14T09:12:03.900Z",
      "window_end": "2026-10-14T09:12:06.900Z",
      "quantity": 1,
      "unit": "runs",
      "detail": "COMPLETED"
    }
  ],
  "totals": [
    {
      "axis": "compute",
      "unit": "ms",
      "quantity": 3000,
      "lines": 1,
      "reconciliation": "none",
      "counter": null,
      "drift": null,
      "reconcilable": true
    },
    {
      "axis": "runs",
      "unit": "runs",
      "quantity": 1,
      "lines": 1,
      "reconciliation": "inequality",
      "counter": 1,
      "drift": 0,
      "reconcilable": true
    }
  ],
  "counters": {
    "runs_started": 1,
    "deployments_created": 1,
    "api_requests_approx": 42,
    "net_egress_bytes": 0
  }
}
FlagValueDefaultDescription
--periodYYYY-MM—The month to show, as YYYY-MM.
--axiscompute|network|network_in|disk|scratch|runs|pin|build—Show one axis only, for example compute.
--vm<vm-id>—Only the usage of this VM.
--run<run-id>—Only the usage of this run.
--runs——Add the lines behind the totals, one per run.
--vms——Add the lines behind the totals, one per VM.
--json——Print the report as JSON.

usage:export

Export the usage lines of a month as JSON or CSV.

  • needs API key
  • --json: full
synopsis
$ ignitify usage:export [--period YYYY-MM] [--axis compute|network|network_in|disk|scratch|runs|pin|build] [--vm <vm-id>] [--run <run-id>] (--json|--csv)
terminal
$ ignitify usage:export --period 2026-10 --csvaxis,vm_id,run_id,deployment_id,window_start,window_end,quantity,unit,detail"compute","vm_019f3c2a-7d41-7b3e-9a10-4c5e8f21d0a6","","019f3c24-1b05-7c9a-8e21-4d6f0b93a7e2","2026-10-14T09:12:03.900Z","2026-10-14T09:12:06.900Z","3000","ms","running"
terminal
$ ignitify usage:export --period 2026-10 --json
--json
[
  {
    "axis": "compute",
    "vm_id": "vm_019f3c2a-7d41-7b3e-9a10-4c5e8f21d0a6",
    "run_id": null,
    "deployment_id": "019f3c24-1b05-7c9a-8e21-4d6f0b93a7e2",
    "window_start": "2026-10-14T09:12:03.900Z",
    "window_end": "2026-10-14T09:12:06.900Z",
    "quantity": 3000,
    "unit": "ms",
    "detail": "running"
  }
]
No format named
$ ignitify usage:export --period 2026-10usage: ignitify usage:export [--period YYYY-MM] (--json|--csv)   (name exactly one format)
FlagValueDefaultDescription
--periodYYYY-MM—The month to export, as YYYY-MM.
--axiscompute|network|network_in|disk|scratch|runs|pin|build—Export one axis only, for example compute.
--vm<vm-id>—Only the lines of this VM.
--run<run-id>—Only the lines of this run.
--csv——Print the lines as CSV.
--json——Print the lines as a JSON array.

--version

Print the client version, and the API version if the server answers.

  • offline
  • --json: none
synopsis
$ ignitify --version
terminal
$ ignitify --versionignitify 1.0.0 (built for API 1)API: 1 at https://api.ignitify.dev (minimum client 1.0.0)
More examples (1)
Server not reachable
$ ignitify --versionignitify 1.0.0 (built for API 1)API: unreachable at https://api.ignitify.dev

help

Print the usage of every command, or of one command.

  • offline
  • --json: none
synopsis
$ ignitify help [<command>]
terminal
$ ignitify help task:runignitify task:run — Start one run of a task from its latest deployment.Usage  ignitify task:run <task-id> [--dir <base-dir>] [--deployment <id>]      [--payload <json>] [--timeout-sec <n>] [--on-busy queue|reject]      [--at <iso>] [--wait]Description  • With --wait the exit code is 0 only when the run is COMPLETED. Ctrl+C stops    waiting, not the run.  • --payload and --timeout-sec apply to this run only; task.yaml is never    written.  • A bidirectional task runs one VM at a time; --on-busy covers that case too.Arguments  <task-id>  The task folder name.Flags  FLAG           VALUE         DESCRIPTION  ─────────────  ────────────  ─────────────────────────────────────────────────  --dir          <base-dir>    Folder that holds your task folders. Default:                               $IGNITIFY_TASKS_DIR, else tasks.  --deployment   <id>          Run this deployment instead of the task's latest                               deploy. Default: the task's latest deploy.  --payload      <json>        JSON input for this run only. Default:                               run.payload from task.yaml.  --timeout-sec  <n>           Time limit in seconds for this run only. Default:                               run.timeout_sec from task.yaml.  --on-busy      queue|reject  When the run cannot start at once: queue waits                               for room (a limited time), reject fails at once.                               Default: queue.  --at           <iso>         Schedule the run for this ISO 8601 time. No run                               exists until it fires.  --wait         switch        Follow the run to its end, then print it with its                               result.Examples  $ ignitify task:run image-resize --wait  $ ignitify task:run image-resize --payload '{"width":320}'  $ ignitify task:run image-resize --at 2027-01-15T03:00:00Z
FlagValueDefaultDescription
<command>——A command name. Leave it out to print every command.