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
$ ignitify login [--name <label>] [--no-browser]$ 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
$ 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.
| Flag | Value | Default | Description |
|---|---|---|---|
--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
- Asks the platform for a sign-in code and prints it.
- Waits while the code is approved.
- Saves the new key in a file that only you can read.
- Prints the account it signed in to.
logout
Revoke this machine's key and delete the saved file.
- offline
- deletes data
- --json: none
$ ignitify logout$ ignitify logout✓ Signed out Key label ada-laptop Revoked yes Deleted ~/.config/ignitify/credentials.json
More examples (1)
$ ignitify logoutNot signed in. There are no saved credentials.
What happens
- Asks the platform to revoke the saved key.
- Deletes the saved file.
- Prints the result.
whoami
Show who your API key belongs to, your limits and what you use.
- needs API key
- --json: full
$ ignitify whoami$ 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)
$ ignitify whoami --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
}
}$ 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
$ ignitify quota$ 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
$ ignitify usage [--period YYYY-MM] [--axis compute|network|network_in|disk|scratch|runs|pin|build] [--vm <vm-id>] [--run <run-id>] [--runs|--vms] [--json]$ 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
$ ignitify usage --period 2026-10 --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
}
}| Flag | Value | Default | Description |
|---|---|---|---|
--period | YYYY-MM | — | The month to show, as YYYY-MM. |
--axis | compute|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
$ ignitify usage:export [--period YYYY-MM] [--axis compute|network|network_in|disk|scratch|runs|pin|build] [--vm <vm-id>] [--run <run-id>] (--json|--csv)$ 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"
$ ignitify usage:export --period 2026-10 --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"
}
]$ ignitify usage:export --period 2026-10usage: ignitify usage:export [--period YYYY-MM] (--json|--csv) (name exactly one format)
| Flag | Value | Default | Description |
|---|---|---|---|
--period | YYYY-MM | — | The month to export, as YYYY-MM. |
--axis | compute|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
$ ignitify --version$ ignitify --versionignitify 1.0.0 (built for API 1)API: 1 at https://api.ignitify.dev (minimum client 1.0.0)
More examples (1)
$ 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
$ ignitify help [<command>]$ 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
| Flag | Value | Default | Description |
|---|---|---|---|
<command> | — | — | A command name. Leave it out to print every command. |