{
 "features_resolved": {
  "snapshot_any": false,
  "snapshot_mem": false,
  "fork": false,
  "pause_resume": false,
  "persistent_disk": false,
  "whole_disk": false,
  "persist_scope": null,
  "volumes": false,
  "auto_stop_idle": true,
  "long_sessions": true,
  "custom_image": true,
  "image_snapshot": false,
  "image_oci": true,
  "vm_isolation": false,
  "docker_inside": false,
  "nested_virt": false,
  "root": false,
  "systemd": null,
  "browser": false,
  "desktop": false,
  "computer_use": false,
  "code_interpreter": null,
  "browser_control": null,
  "desktop_control": null,
  "browser_and_desktop": false,
  "anti_bot": false,
  "captcha_solving": false,
  "residential_ip": false,
  "agent_harnesses": false,
  "ssh": true,
  "public_ipv4": false,
  "inbound_https": true,
  "custom_domain": true,
  "raw_tcp_inbound": false,
  "egress_allowlist": false,
  "open_internet": null,
  "static_egress_ip": true,
  "private_network": true,
  "self_host": false,
  "byoc": false,
  "open_source": false,
  "soc2": true,
  "hipaa": true,
  "sso": true,
  "gpu": false,
  "arm64": true,
  "windows": false,
  "macos": false,
  "lang_python": true,
  "lang_node": true,
  "lang_go": true,
  "lang_rust": null,
  "lang_java": true,
  "gpu_desktop": null,
  "credential_injection": null,
  "egress_http_rules": false,
  "wake_on_request": true,
  "live_resize": false,
  "fork_running": false,
  "memory_snapshot_fork": false,
  "webhooks": true,
  "scheduled_wakeups": null,
  "audit_logs": null,
  "eu_data_residency": true,
  "zero_data_retention": null,
  "scoped_api_keys": null,
  "spend_limits": null,
  "mcp_server": true,
  "usage_api": true,
  "snapshot_auto": false,
  "snapshot_on_demand": false,
  "harness_api": false,
  "own_agent_api": false,
  "fast_boot": null,
  "strong_isolation": false,
  "ingress_rules": true,
  "guest_firewall": false,
  "secret_proxy": false,
  "secret_proxy_any": false,
  "volume_attach": false,
  "volume_shared": false,
  "sidecar": null,
  "fuse": null,
  "kernel_features": null,
  "burst": null
 },
 "company": {
  "id": "heroku",
  "checked": "2026-09-30",
  "company": "Heroku, Inc. (a Salesforce company)",
  "ownership": {
   "value": "subsidiary",
   "parent": "Salesforce (Salesforce.com, Inc.)",
   "source": "https://www.ycombinator.com/companies/heroku",
   "quote": "Heroku, a Salesforce company and industry pioneer in platform as a service (PaaS), enables developers to build and run applications entirely in the cloud."
  },
  "stage": {
   "value": "subsidiary",
   "source": "https://www.ycombinator.com/companies/heroku",
   "quote": "Salesforce.com Buys Heroku For $212 Million In Cash • TechCrunch",
   "confidence": "high",
   "note": "Heroku raised VC funding (Baseline Ventures, Y Combinator, Ignition Partners, Ashton Kutcher and others per press coverage of the era) as an independent startup after its W08 YC batch, then was acquired outright by Salesforce.com on Dec 8, 2010 for ~$212M; since then it has operated as a wholly-owned Salesforce subsidiary/product line, so pre-acquisition funding rounds no longer determine its current backing."
  },
  "accelerators": [
   {
    "name": "Y Combinator",
    "batch": "Winter 2008",
    "source": "https://www.ycombinator.com/companies/heroku",
    "quote": "WINTER 2008",
    "confidence": "high",
    "via": "research"
   }
  ],
  "total_funding_usd": {
   "value": 13300000,
   "status": "estimated",
   "basis": "Crunchbase/press aggregate figure commonly cited for Heroku's pre-acquisition VC raises (seed + Series A/B rounds from Baseline Ventures, Y Combinator, Ignition Partners, Harrison Metal, Ashton Kutcher, New Enterprise Associates) between 2008-2010; no single primary source itemizes the full total, so treated as estimated.",
   "source": "https://www.ycombinator.com/companies/heroku",
   "quote": "Founded: 2007 Batch: Winter 2008 Team Size: 300 Status: Acquired"
  },
  "last_round": {
   "type": "acquisition",
   "amount_usd": 212000000,
   "date": "2010-12",
   "leads": [
    "Salesforce.com"
   ],
   "status": "confirmed",
   "source": "https://www.ycombinator.com/companies/heroku",
   "quote": "Salesforce.com Buys Heroku For $212 Million In Cash • TechCrunch — Dec 08, 2010"
  },
  "investors": [
   "Salesforce (acquirer)",
   "Baseline Ventures",
   "Y Combinator",
   "Ignition Partners",
   "New Enterprise Associates",
   "Redpoint Ventures"
  ],
  "portfolio_listings": [
   {
    "source": "Redpoint Ventures",
    "company": "Heroku",
    "batch": null,
    "how": "domain"
   }
  ],
  "revenue": {
   "value": null,
   "status": "unknown"
  },
  "employees": {
   "value": 300,
   "source": "https://www.ycombinator.com/companies/heroku"
  },
  "note": "Founded 2007, went through Y Combinator Winter 2008, acquired by Salesforce.com in December 2010 for ~$212M cash and has operated as a Salesforce subsidiary/product since. In Feb 2026 Heroku announced it is shifting to a maintenance-focused engineering model (security/reliability/support) rather than new features, and Enterprise Account contracts are no longer offered to new customers; existing customers are said to remain unaffected. Free plans were discontinued in Aug 2022 and it suffered a notable OAuth token security breach in April 2022."
 },
 "id": "heroku",
 "name": "Heroku",
 "url": "https://www.heroku.com/pricing/",
 "category": "paas",
 "isolation": "container",
 "modes": [
  {
   "flags": [
    "alt"
   ],
   "os": [
    "linux"
   ],
   "gpu_only": false,
   "pricing": "sizes",
   "cpu_basis": "alloc",
   "ram_basis": "alloc",
   "min_billed_seconds": 0,
   "granularity_s": 1,
   "start_fee": 0,
   "boot_overhead_s": null,
   "multiplier": 1,
   "windows_vcpu_h": null,
   "gpu": null,
   "requires_always_on": false,
   "always_on_month_per_instance": null,
   "vcpu_h": null,
   "ram_gib_h": null,
   "key": "cedar-common",
   "label": "Cedar Common Runtime dynos (Basic/Standard shared; Performance dedicated)",
   "regions": [
    "us",
    "eu"
   ],
   "plans": null,
   "sizes": [
    {
     "name": "Basic",
     "vcpu": null,
     "ram_gib": 0.5,
     "disk_gib": null,
     "hour": 0.00972,
     "month_cap": 7,
     "note": "shared CPU, compute 1x-4x; max 1 dyno per process type"
    },
    {
     "name": "Standard-1X",
     "vcpu": null,
     "ram_gib": 0.5,
     "disk_gib": null,
     "hour": 0.03472,
     "month_cap": 25,
     "note": "shared CPU, compute 1x-4x"
    },
    {
     "name": "Standard-2X",
     "vcpu": null,
     "ram_gib": 1,
     "disk_gib": null,
     "hour": 0.06944,
     "month_cap": 50,
     "note": "shared CPU, compute 2x-8x"
    },
    {
     "name": "Performance-M",
     "vcpu": null,
     "ram_gib": 2.5,
     "disk_gib": null,
     "hour": 0.34722,
     "month_cap": 250,
     "note": "dedicated, compute 12x; established payment history required"
    },
    {
     "name": "Performance-L",
     "vcpu": null,
     "ram_gib": 14,
     "disk_gib": null,
     "hour": 0.69444,
     "month_cap": 500,
     "note": "dedicated, compute 50x"
    },
    {
     "name": "Performance-L-RAM",
     "vcpu": null,
     "ram_gib": 30,
     "disk_gib": null,
     "hour": 0.69444,
     "month_cap": 500,
     "note": "dedicated, compute 24x"
    },
    {
     "name": "Performance-XL",
     "vcpu": null,
     "ram_gib": 62,
     "disk_gib": null,
     "hour": 1.04167,
     "month_cap": 750,
     "note": "dedicated, compute 50x"
    },
    {
     "name": "Performance-2XL",
     "vcpu": null,
     "ram_gib": 126,
     "disk_gib": null,
     "hour": 2.08333,
     "month_cap": 1500,
     "note": "dedicated, compute 100x"
    }
   ],
   "features": {
    "auto_stop_idle": false,
    "wake_on_request": false,
    "ssh": true,
    "custom_image": true,
    "arm64": false
   },
   "note": "Heroku publishes relative 'compute' (1x-4x, 12x, 50x, 100x) and the Platform API returns compute units (Std-1X=1, Perf-M=11, Perf-L=46, Perf-XL=92, Perf-2XL=138), NOT vCPUs: vcpu left null. hour = monthly price / 720 (Heroku's own '~$/hour' column and Elements '$1.389/hour = $1000/month' use a 720 h basis); billed per second of wall-clock while scaled >0, capped at the monthly price. Container runs as non-root, ephemeral filesystem, restarted at least every 24 h (+0-216 min).",
   "cpu_class": "shared"
  },
  {
   "flags": [
    "alt"
   ],
   "os": [
    "linux"
   ],
   "gpu_only": false,
   "pricing": "pool",
   "cpu_basis": "alloc",
   "ram_basis": "alloc",
   "min_billed_seconds": 0,
   "granularity_s": 1,
   "start_fee": 0,
   "boot_overhead_s": null,
   "multiplier": 1,
   "windows_vcpu_h": null,
   "gpu": null,
   "requires_always_on": false,
   "always_on_month_per_instance": null,
   "vcpu_h": null,
   "ram_gib_h": null,
   "key": "eco-pool",
   "label": "Eco dynos: $5 flat for a 1,000 dyno-hour pool (personal apps only)",
   "regions": [
    "us",
    "eu"
   ],
   "sizes": null,
   "plans": [
    "Eco dynos plan"
   ],
   "pool_tiers": [
    {
     "name": "Eco",
     "month": 5,
     "vcpu": null,
     "ram_gib": 0.5,
     "max_vms": 2
    }
   ],
   "features": {
    "auto_stop_idle": true,
    "wake_on_request": true
   },
   "note": "$5/month flat subscription (charged in full even if subscribed mid-month or unused) buys 1,000 Eco dyno-hours shared by all Eco dynos of the personal account (~1.37 always-on dynos). Max 2 concurrently running Eco dynos per app, 1 per process type, 1 Eco one-off per app. Web dynos sleep after 30 min without traffic (sleep time not counted). Pool exhausted -> all Eco dynos forced to sleep for the rest of the month; extra hours cannot be purchased. Not available to Heroku Teams or Enterprise. 0.5 GB RAM, compute 1x-4x (vCPU not published).",
   "cpu_class": "shared"
  },
  {
   "flags": [
    "alt"
   ],
   "os": [
    "linux"
   ],
   "gpu_only": false,
   "pricing": "sizes",
   "cpu_basis": "alloc",
   "ram_basis": "alloc",
   "min_billed_seconds": 0,
   "granularity_s": 1,
   "start_fee": 0,
   "boot_overhead_s": null,
   "multiplier": 1,
   "windows_vcpu_h": null,
   "gpu": null,
   "requires_always_on": false,
   "always_on_month_per_instance": null,
   "vcpu_h": null,
   "ram_gib_h": null,
   "key": "cedar-private",
   "label": "Cedar Private Space dynos (dedicated; requires a Private Space)",
   "regions": [
    "us",
    "eu",
    "asia",
    "other"
   ],
   "plans": [
    "Private Space"
   ],
   "sizes": [
    {
     "name": "Private-S",
     "vcpu": null,
     "ram_gib": 1,
     "disk_gib": null,
     "hour": 0.17361,
     "month_cap": 125
    },
    {
     "name": "Private-M",
     "vcpu": null,
     "ram_gib": 2.5,
     "disk_gib": null,
     "hour": 0.34722,
     "month_cap": 250
    },
    {
     "name": "Private-L",
     "vcpu": null,
     "ram_gib": 14,
     "disk_gib": null,
     "hour": 0.69444,
     "month_cap": 500
    },
    {
     "name": "Private-L-RAM",
     "vcpu": null,
     "ram_gib": 30,
     "disk_gib": null,
     "hour": 0.69444,
     "month_cap": 500
    },
    {
     "name": "Private-XL",
     "vcpu": null,
     "ram_gib": 62,
     "disk_gib": null,
     "hour": 1.04167,
     "month_cap": 750
    },
    {
     "name": "Private-2XL",
     "vcpu": null,
     "ram_gib": 126,
     "disk_gib": null,
     "hour": 2.08333,
     "month_cap": 1500
    }
   ],
   "features": {
    "static_egress_ip": true,
    "private_network": true
   },
   "note": "Dedicated compute; only inside a Cedar Private Space (space fee ~$1.389/h, max $1000/month, billed separately). Cedar space limits: 25 apps, 100 dynos, 10 dynos per process type, 5 concurrent one-off Private dynos. vCPU not published (compute 12x/50x/24x/100x).",
   "cpu_class": "dedicated"
  },
  {
   "flags": [
    "alt"
   ],
   "os": [
    "linux"
   ],
   "gpu_only": false,
   "pricing": "sizes",
   "cpu_basis": "alloc",
   "ram_basis": "alloc",
   "min_billed_seconds": 0,
   "granularity_s": 1,
   "start_fee": 0,
   "boot_overhead_s": null,
   "multiplier": 1,
   "windows_vcpu_h": null,
   "gpu": null,
   "requires_always_on": false,
   "always_on_month_per_instance": null,
   "vcpu_h": null,
   "ram_gib_h": null,
   "key": "cedar-shield",
   "label": "Cedar Shield Private Space dynos (HIPAA/PCI)",
   "regions": [
    "us",
    "eu",
    "asia",
    "other"
   ],
   "plans": [
    "Shield Private Space"
   ],
   "sizes": [
    {
     "name": "Shield-S",
     "vcpu": null,
     "ram_gib": 1,
     "disk_gib": null,
     "hour": 0.20833,
     "month_cap": 150
    },
    {
     "name": "Shield-M",
     "vcpu": null,
     "ram_gib": 2.5,
     "disk_gib": null,
     "hour": 0.41667,
     "month_cap": 300
    },
    {
     "name": "Shield-L",
     "vcpu": null,
     "ram_gib": 14,
     "disk_gib": null,
     "hour": 0.83333,
     "month_cap": 600
    },
    {
     "name": "Shield-L-RAM",
     "vcpu": null,
     "ram_gib": 30,
     "disk_gib": null,
     "hour": 0.83333,
     "month_cap": 600
    },
    {
     "name": "Shield-XL",
     "vcpu": null,
     "ram_gib": 62,
     "disk_gib": null,
     "hour": 1.25,
     "month_cap": 900
    },
    {
     "name": "Shield-2XL",
     "vcpu": null,
     "ram_gib": 126,
     "disk_gib": null,
     "hour": 2.5,
     "month_cap": 1800
    }
   ],
   "features": {
    "ssh": false,
    "hipaa": true,
    "static_egress_ip": true,
    "private_network": true
   },
   "note": "Only inside a Shield Private Space (~$4.167/h, max $3000/month). Heroku Exec (SSH) not supported in Shield. BAA/HIPAA and PCI.",
   "cpu_class": "dedicated"
  },
  {
   "flags": [
    "alt"
   ],
   "os": [
    "linux"
   ],
   "gpu_only": false,
   "pricing": "sizes",
   "cpu_basis": "alloc",
   "ram_basis": "alloc",
   "min_billed_seconds": 0,
   "granularity_s": 1,
   "start_fee": 0,
   "boot_overhead_s": null,
   "multiplier": 1,
   "windows_vcpu_h": null,
   "gpu": null,
   "requires_always_on": false,
   "always_on_month_per_instance": null,
   "vcpu_h": null,
   "ram_gib_h": null,
   "key": "fir",
   "label": "Fir (next-gen, Kubernetes) dynos; requires a Fir Private Space",
   "regions": [
    "us",
    "eu",
    "asia",
    "other"
   ],
   "plans": [
    "Private Space"
   ],
   "sizes": [
    {
     "name": "dyno-1c-0.5gb (Classic)",
     "vcpu": 1,
     "ram_gib": 0.5,
     "disk_gib": null,
     "hour": 0.03472,
     "month_cap": 25
    },
    {
     "name": "dyno-2c-1gb (Classic)",
     "vcpu": 2,
     "ram_gib": 1,
     "disk_gib": null,
     "hour": 0.06944,
     "month_cap": 50
    },
    {
     "name": "dyno-1c-4gb (General Purpose)",
     "vcpu": 1,
     "ram_gib": 4,
     "disk_gib": null,
     "hour": 0.11111,
     "month_cap": 80
    },
    {
     "name": "dyno-2c-8gb (General Purpose)",
     "vcpu": 2,
     "ram_gib": 8,
     "disk_gib": null,
     "hour": 0.22222,
     "month_cap": 160
    },
    {
     "name": "dyno-4c-16gb (General Purpose)",
     "vcpu": 4,
     "ram_gib": 16,
     "disk_gib": null,
     "hour": 0.44444,
     "month_cap": 320
    },
    {
     "name": "dyno-8c-32gb (General Purpose)",
     "vcpu": 8,
     "ram_gib": 32,
     "disk_gib": null,
     "hour": 0.88889,
     "month_cap": 640
    },
    {
     "name": "dyno-16c-64gb (General Purpose)",
     "vcpu": 16,
     "ram_gib": 64,
     "disk_gib": null,
     "hour": 1.38889,
     "month_cap": 1000,
     "note": "CONFLICT: $1000 per usage-and-billing (Sep 2026; 40 dyno units, also API precise_dyno_units=40); pricing page and dyno-types say $1,200"
    },
    {
     "name": "dyno-2c-4gb (Compute)",
     "vcpu": 2,
     "ram_gib": 4,
     "disk_gib": null,
     "hour": 0.20833,
     "month_cap": 150
    },
    {
     "name": "dyno-4c-8gb (Compute)",
     "vcpu": 4,
     "ram_gib": 8,
     "disk_gib": null,
     "hour": 0.41667,
     "month_cap": 300
    },
    {
     "name": "dyno-8c-16gb (Compute)",
     "vcpu": 8,
     "ram_gib": 16,
     "disk_gib": null,
     "hour": 0.83333,
     "month_cap": 600
    },
    {
     "name": "dyno-16c-32gb (Compute)",
     "vcpu": 16,
     "ram_gib": 32,
     "disk_gib": null,
     "hour": 1.66667,
     "month_cap": 1200,
     "note": "CONFLICT: $1200 per usage-and-billing (48 dyno units, API precise_dyno_units=48); pricing page and dyno-types say $1,000"
    },
    {
     "name": "dyno-32c-64gb (Compute)",
     "vcpu": 32,
     "ram_gib": 64,
     "disk_gib": null,
     "hour": 3.33333,
     "month_cap": 2400
    },
    {
     "name": "dyno-1c-8gb (Memory)",
     "vcpu": 1,
     "ram_gib": 8,
     "disk_gib": null,
     "hour": 0.13889,
     "month_cap": 100
    },
    {
     "name": "dyno-2c-16gb (Memory)",
     "vcpu": 2,
     "ram_gib": 16,
     "disk_gib": null,
     "hour": 0.34722,
     "month_cap": 250
    },
    {
     "name": "dyno-4c-32gb (Memory)",
     "vcpu": 4,
     "ram_gib": 32,
     "disk_gib": null,
     "hour": 0.69444,
     "month_cap": 500
    },
    {
     "name": "dyno-8c-64gb (Memory)",
     "vcpu": 8,
     "ram_gib": 64,
     "disk_gib": null,
     "hour": 1.04167,
     "month_cap": 750
    },
    {
     "name": "dyno-16c-128gb (Memory)",
     "vcpu": 16,
     "ram_gib": 128,
     "disk_gib": null,
     "hour": 2.08333,
     "month_cap": 1500
    }
   ],
   "features": {
    "ssh": false,
    "custom_image": false,
    "arm64": true,
    "static_egress_ip": true,
    "private_network": true
   },
   "note": "All Fir dynos dedicated, only in Fir Private Spaces (space ~$1.389/h, max $1000/month). vCPU counts are published for Fir. Per-second billing capped at monthly. Fir spaces created after 2026-08-21 default to x86_64; ARM (Graviton) on request; same price. Cloud Native Buildpacks only (no Docker/heroku.yml builds), no Heroku Exec (use heroku run:inside). Limits: 255 dynos per app, 500 dynos per space (default), one-off Fir dynos 255 per app but 10 concurrent per space. Daily restart can be bypassed via Labs flag. Fir autoscaling, Shield and Common Runtime 'To Be Added'. GPU dynos listed as 'Coming'.",
   "cpu_class": "dedicated"
  }
 ],
 "storage": {
  "included_disk_gib": null,
  "disk_gib_month": null,
  "disk_billed_when_stopped": false,
  "snapshot_gib_month": null,
  "paused_ram_billed": false
 },
 "network": {
  "egress_free_gib": null,
  "egress_gib": null,
  "ipv4_month": null,
  "ipv4_available": false
 },
 "plans": [
  {
   "name": "Pay-as-you-go (personal account or Heroku Team)",
   "fee": 0,
   "flags": [],
   "fee_is_credit": false,
   "included_usd": 0,
   "per_seat": 0,
   "concurrency": 100,
   "max_session_h": 24,
   "max_vcpu": null,
   "max_ram_gib": 126,
   "sizes_allowed": null,
   "note": "No platform or seat fee (Teams: up to 25 members, 5 teams/account). Per app: 100 dynos total (Cedar), Performance max 10 per process type, Basic/Eco 1 per process type; one-off: 50 Basic/Standard, 5 Performance per app; 100 apps per account/team. Performance dynos and higher scaling limits require 'an established payment history'. concurrency=100 is per app (default, raisable by request)."
  },
  {
   "name": "Eco dynos plan",
   "fee": 5,
   "flags": [],
   "fee_is_credit": false,
   "included_usd": 0,
   "per_seat": 0,
   "concurrency": 2,
   "max_session_h": 24,
   "max_vcpu": null,
   "max_ram_gib": 0.5,
   "sizes_allowed": [
    "Eco"
   ],
   "note": "$5 flat per month for 1,000 shared Eco dyno-hours; charged even if unused; full $5 if subscribed mid-month; personal apps only (not Teams/Enterprise). concurrency = 2 running Eco dynos per app."
  },
  {
   "name": "Private Space",
   "fee": 1000,
   "flags": [],
   "fee_is_credit": false,
   "included_usd": 0,
   "per_seat": 0,
   "concurrency": 500,
   "max_session_h": 24,
   "max_vcpu": 32,
   "max_ram_gib": 128,
   "sizes_allowed": null,
   "note": "Per space: ~$1.389/hour, max $1000/month (prorated to the second while the space exists, on top of dyno charges). Needed for Fir, Private-* dynos, regions outside us/eu, stable outbound IPs. Heroku Teams need 'at least six paid invoices, three successful charges, and a minimum spend of $30' to create one; 5 spaces per team by default. Fir space: 500 dynos, 200 apps, 10 concurrent one-off Fir dynos; Cedar space: 100 dynos, 25 apps, 10 dynos per process type."
  },
  {
   "name": "Shield Private Space",
   "fee": 3000,
   "flags": [],
   "fee_is_credit": false,
   "included_usd": 0,
   "per_seat": 0,
   "concurrency": 100,
   "max_session_h": 24,
   "max_vcpu": null,
   "max_ram_gib": 126,
   "sizes_allowed": null,
   "note": "Per space ~$4.167/hour, max $3000/month; Cedar only (Shield not on Fir yet); HIPAA BAA, PCI; no Heroku Exec."
  },
  {
   "name": "Heroku Enterprise",
   "fee": null,
   "flags": [
    "sales",
    "legacy"
   ],
   "fee_is_credit": false,
   "included_usd": null,
   "per_seat": null,
   "concurrency": null,
   "max_session_h": 24,
   "max_vcpu": null,
   "max_ram_gib": null,
   "sizes_allowed": null,
   "note": "Contract of dyno units + add-on credits ($1 each), prorated to the second; general add-on credits cannot pay for dyno overage. Not offered to new customers since 2026-02-06."
  }
 ],
 "free": {
  "monthly_credit": 0,
  "one_time_credit": 0
 },
 "features": {
  "linux": true,
  "windows": false,
  "macos": false,
  "arm64": true,
  "gpu": false,
  "snapshot": "none",
  "pause_resume": false,
  "fork": false,
  "persistent_disk": false,
  "volumes": false,
  "auto_stop_idle": true,
  "max_session_h": 24,
  "custom_image": true,
  "docker_inside": false,
  "nested_virt": false,
  "root": false,
  "systemd": null,
  "browser": false,
  "desktop": false,
  "computer_use": false,
  "code_interpreter": null,
  "agent_harnesses": false,
  "ssh": true,
  "public_ipv4": false,
  "inbound_https": true,
  "custom_domain": true,
  "raw_tcp_inbound": false,
  "egress_allowlist": false,
  "static_egress_ip": true,
  "private_network": true,
  "self_host": false,
  "byoc": false,
  "open_source": false,
  "soc2": true,
  "hipaa": true,
  "sso": true,
  "gpu_types": [],
  "regions": [
   "eu",
   "other",
   "asia",
   "us"
  ],
  "lang_python": true,
  "lang_node": true,
  "lang_go": true,
  "lang_rust": null,
  "lang_java": true,
  "gpu_desktop": null,
  "credential_injection": null,
  "egress_http_rules": false,
  "wake_on_request": true,
  "live_resize": false,
  "fork_running": false,
  "memory_snapshot_fork": false,
  "webhooks": true,
  "scheduled_wakeups": null,
  "audit_logs": null,
  "eu_data_residency": true,
  "zero_data_retention": null,
  "scoped_api_keys": null,
  "spend_limits": null,
  "mcp_server": true,
  "snapshot_auto": false,
  "snapshot_on_demand": false,
  "ingress_rules": true,
  "guest_firewall": false,
  "secret_proxy": false,
  "volume_attach": false,
  "volume_shared": false,
  "isolation": "container",
  "image_oci": true,
  "anti_bot": false,
  "captcha_solving": false,
  "egress_ip_type": "datacenter",
  "harness_api": false,
  "own_agent_api": false,
  "usage_api": true
 },
 "perf": {
  "cpu_runs_s": null,
  "cold_start_ms": null,
  "burst_tti_ms": null,
  "dax_s": null
 },
 "caveats": [
  "Cedar CPU units are relative 1x/12x/50x, not vCPUs; do not equate them. Fir Compute 4CPU/8GB $300/month needs Private Space; public table alone does not yield all-in total. Eco $5 is 1000-hour shared pool, not per-dyno always-on rate. Disk ephemeral, paid data separate.",
  "Null values mean unknown, not free/unlimited. No model-token cost, tax or unverified ancillary charge included.",
  "Native browser/device/task/credit prices with unknown CPU/RAM are deliberately non-priceable. Check regime before interpreting any partial resource estimate.",
  "Product status: since 2026-02-06 Heroku is in a 'sustaining engineering model ... rather than introducing new features' (Salesforce). No pricing change for card-paying customers; Enterprise contracts closed to new customers. Fir roadmap items (GPU dynos, Fir autoscaling/Shield/Common Runtime) may not ship.",
  "Start rate: Platform API token bucket of 4,500 calls, refilled ~75/minute per account; each dyno scale / one-off run is an API call, so bursty 'one dyno per task' use tops out around 75 starts/min per account (plus 50 concurrent Standard one-offs / 5 Performance one-offs per app)."
 ],
 "sources": [
  "https://www.ycombinator.com/companies/heroku",
  "https://www.heroku.com/",
  "https://www.heroku.com/pricing/",
  "https://devcenter.heroku.com",
  "https://heroku.com/llms.txt"
 ],
 "audit_2026_09_29": {
  "applied": 45,
  "source": "checked against the provider's live pricing and docs pages",
  "reviewed": 7
 },
 "feature_evidence": {
  "snapshot_auto": {
   "value": false,
   "source": "https://devcenter.heroku.com/articles/dynos",
   "quote": "Any files written get discarded the moment the dyno stops or restarts , including automatic restarts.",
   "note": "Dynos restart from the deployed slug/image; no state is saved on stop/restart (Cedar dynos also cycle roughly daily).",
   "checked": "2026-09-29"
  },
  "snapshot_on_demand": {
   "value": false,
   "source": "https://devcenter.heroku.com/articles/dynos",
   "quote": "Each dyno gets its own ephemeral filesystem, with a fresh copy of the most recently deployed code.",
   "note": "No dyno/machine snapshot or checkpoint API in the Platform API reference; only code releases (slugs) with rollback, and Heroku Postgres backups/forks for data add-ons.",
   "checked": "2026-09-29"
  },
  "egress_allowlist": {
   "value": false,
   "source": "https://devcenter.heroku.com/articles/private-spaces",
   "quote": "All outbound traffic from apps in a Private Space originate from a small, stable list of IP addresses dedicated to the space.",
   "note": "Private Spaces offer only stable outbound IPs (for the destination to allowlist). The Platform API reference exposes an inbound-ruleset but no outbound ruleset, and the Heroku CLI has trusted-ips but no outbound-rules command. No egress filtering documented for Common Runtime, Private, Shield or Fir.",
   "checked": "2026-09-29"
  },
  "egress_http_rules": {
   "value": false,
   "source": null,
   "quote": null,
   "note": "No egress control at all (see egress_allowlist).",
   "checked": "2026-09-29"
  },
  "ingress_rules": {
   "value": true,
   "source": "https://devcenter.heroku.com/articles/private-spaces-trusted-ip-ranges",
   "quote": "You can restrict access to Heroku Private Spaces with the Trusted IPs feature. Each space has a set of trusted IP ranges, with each range represented in CIDR block notation.",
   "note": "Private/Shield/Fir Spaces only: trusted IP ranges (CIDR, default 0.0.0.0/0; on Fir also covers heroku run and logs) and Cedar Internal Routing ('cannot receive external web traffic to their web process type'). Common Runtime apps: web dyno is public on herokuapp.com with no provider-side IP controls; only the web process type is routable.",
   "checked": "2026-09-29"
  },
  "guest_firewall": {
   "value": false,
   "source": "https://devcenter.heroku.com/articles/container-registry-and-runtime",
   "quote": "containers are not run with root privileges in Heroku",
   "note": "Dynos are hardened OS containers run as non-root; no iptables/nftables.",
   "checked": "2026-09-29"
  },
  "secret_proxy": {
   "value": false,
   "source": "https://devcenter.heroku.com/articles/config-vars",
   "quote": "Config vars are exposed to your app’s code as environment variables.",
   "note": "Secrets are config vars in the dyno environment; Managed Inference also provisions INFERENCE_KEY as a config var. No credential-injecting proxy.",
   "checked": "2026-09-29"
  },
  "volume_attach": {
   "value": false,
   "source": "https://devcenter.heroku.com/articles/active-storage-on-heroku",
   "quote": "Instead of storing uploaded files to disk, the best practice is to leverage a cloud file storage service such as Amazon’s S3.",
   "note": "No persistent volumes for dynos; ephemeral filesystem only. Persistence via add-ons (Postgres, Key-Value Store, third-party S3 add-ons like Bucketeer).",
   "checked": "2026-09-29"
  },
  "volume_shared": {
   "value": false,
   "source": "https://devcenter.heroku.com/articles/dynos",
   "quote": "no files that are written are visible to processes in any other dyno",
   "note": "No shared filesystem between dynos.",
   "checked": "2026-09-29"
  },
  "isolation": {
   "value": "container",
   "source": "https://devcenter.heroku.com/articles/dynos",
   "quote": "All dynos are strongly isolated from one another for security purposes. Heroku uses OS containerization, with additional custom hardening to restrict access.",
   "note": "Shared-kernel OS containers (dynos), not VMs/microVMs.",
   "checked": "2026-09-30"
  },
  "image_oci": {
   "value": true,
   "source": "https://devcenter.heroku.com/articles/container-registry-and-runtime",
   "quote": "Heroku Container Registry allows you to deploy your Docker images to Heroku. Both Common Runtime and Private Spaces are supported.",
   "note": "Cedar generation only; Fir dynos are Cloud Native Buildpacks only, no Docker/heroku.yml builds (per card note).",
   "checked": "2026-09-30"
  },
  "docker_inside": {
   "value": false,
   "source": "https://devcenter.heroku.com/articles/container-registry-and-runtime",
   "quote": "containers are not run with root privileges in Heroku",
   "note": "Dynos run as non-root, hardened OS containers with no documented privileged/nested-container support; no docker-in-dyno capability is documented.",
   "checked": "2026-09-30"
  },
  "nested_virt": {
   "value": false,
   "source": "https://devcenter.heroku.com/articles/dynos",
   "quote": "Heroku uses OS containerization, with additional custom hardening to restrict access.",
   "note": "Shared-kernel container platform, non-root; no /dev/kvm or nested virtualization documented. Derived.",
   "checked": "2026-09-30"
  },
  "desktop": {
   "value": false,
   "source": "https://www.heroku.com/pricing/",
   "quote": "Heroku is a cloud platform that lets companies build, deliver, monitor and scale apps.",
   "note": "not offered: outside the product's scope",
   "checked": "2026-09-30"
  },
  "browser": {
   "value": false,
   "source": "https://www.heroku.com/pricing/",
   "quote": "Heroku is a cloud platform that lets companies build, deliver, monitor and scale apps.",
   "note": "not offered: outside the product's scope",
   "checked": "2026-09-30"
  },
  "computer_use": {
   "value": false,
   "source": "https://www.heroku.com/pricing/",
   "quote": "Heroku is a cloud platform that lets companies build, deliver, monitor and scale apps.",
   "note": "not offered: outside the product's scope",
   "checked": "2026-09-30"
  },
  "anti_bot": {
   "value": false,
   "source": "https://www.heroku.com/pricing/",
   "quote": "Heroku is a cloud platform that lets companies build, deliver, monitor and scale apps.",
   "note": "not offered: outside the product's scope",
   "checked": "2026-09-30"
  },
  "captcha_solving": {
   "value": false,
   "source": "https://www.heroku.com/pricing/",
   "quote": "Heroku is a cloud platform that lets companies build, deliver, monitor and scale apps.",
   "note": "not offered: outside the product's scope",
   "checked": "2026-09-30"
  },
  "egress_ip_type": {
   "value": "datacenter",
   "source": "https://devcenter.heroku.com/articles/private-spaces",
   "quote": "Outbound requests from apps in a space originate from a set of stable IP addresses. Allowlist them with your on-premise services and other networks to securely communicate with them.",
   "note": "Dynos run on AWS-hosted datacenter infrastructure; Private/Shield/Fir Spaces add stable (static) datacenter IPs, Common Runtime uses a shared pool of datacenter IPs.",
   "checked": "2026-09-30"
  },
  "fork_running": {
   "value": false,
   "source": "https://devcenter.heroku.com/articles/dynos",
   "quote": "Each dyno gets its own ephemeral filesystem, with a fresh copy of the most recently deployed code.",
   "note": "No dyno cloning/fork API exists; only code releases (slugs/images) and Postgres data forking, unrelated to compute fork.",
   "checked": "2026-09-30"
  },
  "memory_snapshot_fork": {
   "value": false,
   "source": "https://devcenter.heroku.com/articles/dynos",
   "quote": "Any files written get discarded the moment the dyno stops or restarts, including automatic restarts.",
   "note": "No fork capability at all (see fork_running), so memory-preserving fork is not available.",
   "checked": "2026-09-30"
  },
  "live_resize": {
   "value": false,
   "source": "https://devcenter.heroku.com/articles/dynos",
   "quote": "You can scale your app vertically by changing its dyno size to match its memory and compute needs.",
   "note": "Resizing a dyno (changing its size/type) restarts the dyno with the new size; it is not a live in-place resize of a running dyno.",
   "checked": "2026-09-30"
  },
  "agent_harnesses": {
   "value": false,
   "source": "https://devcenter.heroku.com/",
   "quote": "Heroku Dev Center",
   "note": "No mention of preinstalled/templated coding-agent harnesses (Claude Code, Codex, OpenCode, etc.) in Heroku docs; Heroku offers Managed Inference/AI add-ons for models, not agent-harness templates.",
   "checked": "2026-09-30"
  },
  "harness_api": {
   "value": false,
   "source": "https://devcenter.heroku.com/",
   "quote": "Heroku Dev Center",
   "note": "not offered: outside the product's scope (no first-party API to drive a coding agent harness inside a dyno).",
   "checked": "2026-09-30"
  },
  "own_agent_api": {
   "value": false,
   "source": "https://www.heroku.com/pricing/",
   "quote": "Heroku is a cloud platform that lets companies build, deliver, monitor and scale apps.",
   "note": "not offered: outside the product's scope",
   "checked": "2026-09-30"
  },
  "self_host": {
   "value": false,
   "source": "https://www.heroku.com/pricing/",
   "quote": "Heroku is a cloud platform that lets companies build, deliver, monitor and scale apps.",
   "note": "Heroku is a managed SaaS platform (owned by Salesforce); no self-hosted/on-prem distribution is offered.",
   "checked": "2026-09-30"
  },
  "byoc": {
   "value": false,
   "source": "https://www.heroku.com/pricing/",
   "quote": "Heroku is a cloud platform that lets companies build, deliver, monitor and scale apps.",
   "note": "Heroku runs on Heroku-operated infrastructure (AWS); there is no bring-your-own-cloud deployment option.",
   "checked": "2026-09-30"
  },
  "open_source": {
   "value": false,
   "source": "https://www.heroku.com/pricing/",
   "quote": "Heroku is a cloud platform that lets companies build, deliver, monitor and scale apps.",
   "note": "The Heroku platform itself is closed-source/proprietary SaaS; only peripheral tooling (buildpacks, CLI) is open source, not the core sandbox/runtime product.",
   "checked": "2026-09-30"
  },
  "persistent_disk": {
   "value": false,
   "source": "https://devcenter.heroku.com/articles/dynos",
   "quote": "Each dyno gets its own ephemeral filesystem, with a fresh copy of the most recently deployed code. ... Any files written get discarded the moment the dyno stops or restarts, including automatic restarts.",
   "note": "Filesystem is ephemeral for every dyno type (Common Runtime, Eco, Private, Shield, Fir); no first-party persistent disk. Persistence only via add-ons (Postgres, S3-style add-ons).",
   "checked": "2026-09-30"
  },
  "snapshot": {
   "value": "none",
   "source": "https://devcenter.heroku.com/articles/dynos",
   "quote": "Any files written get discarded the moment the dyno stops or restarts, including automatic restarts.",
   "note": "No dyno/machine filesystem or memory snapshot capability documented anywhere in the Platform API; only code releases (slugs, with rollback) and separate database (Postgres) backups/forks, which are not machine snapshots.",
   "checked": "2026-09-30"
  },
  "pause_resume": {
   "value": false,
   "source": "https://devcenter.heroku.com/articles/dynos",
   "quote": "Any files written get discarded the moment the dyno stops or restarts, including automatic restarts.",
   "note": "Scaling a dyno to 0 and back up (or Eco dynos sleeping/waking) starts a fresh dyno with a fresh ephemeral filesystem copy of the deployed code -- it is not a pause that preserves in-memory/disk state, so pause_resume as defined (billing paused/reduced while state is kept) does not apply.",
   "checked": "2026-09-30"
  },
  "fork": {
   "value": false,
   "source": "https://devcenter.heroku.com/articles/dynos",
   "quote": "no files that are written are visible to processes in any other dyno",
   "note": "No API/CLI to clone a running dyno/machine into a new one. The only 'fork' concept in Heroku's docs is Heroku Postgres database forking, which forks a database add-on, not the dyno/machine itself.",
   "checked": "2026-09-30"
  },
  "root": {
   "value": false,
   "source": "https://devcenter.heroku.com/articles/container-registry-and-runtime",
   "quote": "containers are not run with root privileges in Heroku",
   "note": "Dynos run as a non-root user; no sudo/root inside the container.",
   "checked": "2026-09-30"
  },
  "wake_on_request": {
   "value": true,
   "corrected_from": false,
   "source": "https://devcenter.heroku.com/articles/eco-dyno-hours",
   "quote": "If an app has an Eco web dyno, and that dyno receives no web traffic in a 30-minute period, it sleeps ... If a sleeping web dyno receives web traffic, and your account has dyno hours available, the dyno becomes active again after a short delay.",
   "note": "Eco dynos (the $5/month pool plan) sleep after 30 minutes idle and wake automatically on the next HTTP request. Card's own eco-pool mode already records wake_on_request:true; the top-level features.wake_on_request:false is inconsistent with that and should be true (Common Runtime/Private/Shield/Fir dynos do not wake-on-request, but Heroku overall offers it via Eco).",
   "checked": "2026-09-30"
  },
  "auto_stop_idle": {
   "value": true,
   "corrected_from": false,
   "source": "https://devcenter.heroku.com/articles/eco-dyno-hours",
   "quote": "Eco dynos sleep automatically after a period of inactivity to conserve your dyno hours.",
   "note": "Same Eco-dyno mechanism as wake_on_request: automatic idle-sleep is offered. Card's eco-pool mode already records auto_stop_idle:true; top-level features.auto_stop_idle:false contradicts it and should be true.",
   "checked": "2026-09-30"
  },
  "volumes": {
   "value": false,
   "source": "https://devcenter.heroku.com/articles/active-storage-on-heroku",
   "quote": "Instead of storing uploaded files to disk, the best practice is to leverage a cloud file storage service such as Amazon's S3.",
   "note": "No first-party attachable persistent volume for dynos; only ephemeral per-dyno filesystem plus data add-ons.",
   "checked": "2026-09-30"
  },
  "public_ipv4": {
   "value": false,
   "source": "https://devcenter.heroku.com/articles/http-routing",
   "quote": "Private Space run on their own network and routing layer ... The router in Private Spaces receives outbound HTTP requests over a set of allowed, stable IP addresses.",
   "note": "Dynos are reached via Heroku's routing layer/DNS hostname (herokuapp.com or custom domain), not a per-dyno public IPv4; even Private Spaces only expose stable *outbound* IPs, and no per-dyno public IPv4 is documented anywhere.",
   "checked": "2026-09-30"
  },
  "gpu": {
   "value": false,
   "source": "https://devcenter.heroku.com/articles/dyno-types",
   "quote": null,
   "note": "No GPU dyno size is listed on the current dyno-types page or pricing page (checked both, no 'gpu' mentions); GPU dynos for the Fir generation are only announced as upcoming, not shipped -- consistent with 'not offered' today.",
   "checked": "2026-09-30"
  },
  "windows": {
   "value": false,
   "source": "https://devcenter.heroku.com/articles/stack",
   "quote": "Base images are typically based on an existing open-source Linux distribution, such as Ubuntu.",
   "note": "All Heroku dyno base images (Cedar stacks and Fir images) are Linux-only; no Windows dyno offering exists.",
   "checked": "2026-09-30"
  },
  "macos": {
   "value": false,
   "source": "https://devcenter.heroku.com/articles/stack",
   "quote": "Base images are typically based on an existing open-source Linux distribution, such as Ubuntu.",
   "note": "Heroku only offers Linux container dynos; no macOS runtime is offered.",
   "checked": "2026-09-30"
  },
  "eu_data_residency": {
   "value": true,
   "corrected_from": false,
   "source": "https://devcenter.heroku.com/articles/regions",
   "quote": "eu Europe Common Runtime ... dublin Dublin, Ireland Private Spaces frankfurt Frankfurt, Germany Private Spaces london London, United Kingdom Private Spaces",
   "note": "Heroku explicitly offers an 'eu' (Europe) region for Common Runtime apps plus Dublin/Frankfurt/London Private Space regions, so apps and their dynos can be kept in the EU/UK. features.eu_data_residency:false is wrong and should be true; card's own mode regions arrays already list 'eu'.",
   "checked": "2026-09-30"
  },
  "mcp_server": {
   "value": true,
   "source": "https://devcenter.heroku.com/articles/heroku-mcp-server",
   "quote": "The Heroku MCP Server STDIO mode is a specialized Model Context Protocol (MCP) implementation designed to facilitate interaction between large language models (LLMs) and the Heroku Platform. ... App lifecycle management: Empower agents to handle deploying, scaling, restarting, viewing logs, and monitoring your applications.",
   "note": "First-party 'Heroku Platform MCP Server' (open-source, @heroku/mcp-server on npm) exposes tools to manage/operate dynos, apps, add-ons and Postgres via the Heroku CLI/Platform API; works on Common Runtime, Cedar Private/Shield Spaces, and Fir Private Spaces.",
   "checked": "2026-09-30"
  },
  "cpu_class": {
   "value": {
    "cedar-common": "shared",
    "eco-pool": "shared",
    "cedar-private": "dedicated",
    "cedar-shield": "dedicated",
    "fir": "dedicated"
   },
   "source": "https://devcenter.heroku.com/articles/dyno-types",
   "quote": "Common Runtime Plan Memory (RAM) CPU Share Compute $/Month Dyno Units Consumed Dedicated Sleeps Eco 0.5 GB 1x 1x-4x $5 flat* N/A No / Basic 0.5 GB 1x 1x-4x $7 0.28 No / Standard-1X 0.5 GB 1x 1x-4x $25 1 No / Standard-2X 1 GB 2x 2x-8x $50 2 No / Performance-M 2.5 GB 100% 12x $250 8 Yes ... All Private dynos have dedicated compute resources. ... All Shield dynos have dedicated compute resources. ... All Fir dynos are dedicated compute resources",
   "note": "cedar-common is mixed within one card mode key: Eco/Basic/Standard-1X/Standard-2X are explicitly marked 'Dedicated: No' with fractional CPU Share (1x/2x) i.e. shared/oversubscribed vCPUs; Performance-M/L/L-RAM/XL/2XL within the same Common Runtime table are marked 'Dedicated: Yes' with CPU Share '100%'. Value given (\"shared\") reflects the entry-level Basic/Standard tiers that dominate the mode's size list; Performance tiers in this same mode are dedicated (no published burstable baseline %, so 'burstable:NN' can't be used). eco-pool (Eco dyno pool) is the same shared/non-dedicated CPU as Common Runtime Eco. cedar-private, cedar-shield and fir modes are homogeneously dedicated per the docs quote.",
   "checked": "2026-09-30"
  },
  "usage_api": {
   "value": true,
   "source": "https://devcenter.heroku.com/articles/platform-api-reference",
   "quote": "GET /teams/{team_id}/usage/daily returns usage for an enterprise team for a range of days with per-app breakdown: each app in the response includes app_name, dynos, addons, data, partner, and space fields. Also available: /teams/{team_id}/usage/monthly for monthly resolution, /enterprise-accounts/{e",
   "note": "granularity: per-app; cost: no; Heroku reports billable usage (dynos=dyno-hours, addons=add-on credits, data=first-party add-on credits, space=private space credits, partner=partner add-on credits) per application within a team or enterprise account. The granularity is per-app (applications are Heroku's unit of deployment and billing). Values are in credits/units, not cost in dollars; includes_cost is false. No per-dyno/per-individual-machine usage API exists; only per-app aggregation.",
   "confidence": "high",
   "checked": "2026-10-01"
  }
 },
 "locations": [
  {
   "country": "IE",
   "state": null,
   "city": "Dublin",
   "provider_region": "dublin",
   "self_serve": true,
   "choosable": true
  },
  {
   "country": "DE",
   "state": null,
   "city": "Frankfurt",
   "provider_region": "frankfurt",
   "self_serve": true,
   "choosable": true
  },
  {
   "country": "GB",
   "state": null,
   "city": "London",
   "provider_region": "london",
   "self_serve": true,
   "choosable": true
  },
  {
   "country": "CA",
   "state": null,
   "city": "Montreal",
   "provider_region": "montreal",
   "self_serve": true,
   "choosable": true
  },
  {
   "country": "IN",
   "state": null,
   "city": "Mumbai",
   "provider_region": "mumbai",
   "self_serve": true,
   "choosable": true
  },
  {
   "country": "US",
   "state": "OR",
   "city": "Oregon",
   "provider_region": "oregon",
   "self_serve": true,
   "choosable": true
  },
  {
   "country": "SG",
   "state": null,
   "city": "Singapore",
   "provider_region": "singapore",
   "self_serve": true,
   "choosable": true
  },
  {
   "country": "AU",
   "state": null,
   "city": "Sydney",
   "provider_region": "sydney",
   "self_serve": true,
   "choosable": true
  },
  {
   "country": "JP",
   "state": null,
   "city": "Tokyo",
   "provider_region": "tokyo",
   "self_serve": true,
   "choosable": true
  },
  {
   "country": "US",
   "state": "VA",
   "city": "Virginia",
   "provider_region": "virginia",
   "self_serve": true,
   "choosable": true
  }
 ],
 "locations_source": "https://devcenter.heroku.com/articles/regions",
 "locations_quote": "heroku regions list: dublin (Dublin, Ireland), frankfurt (Frankfurt, Germany), london (London, United Kingdom), montreal (Montreal, Canada), mumbai (Mumbai, India), oregon (Oregon, United States), singapore (Singapore), sydney (Sydney, Australia), tokyo (Tokyo, Japan), virginia (Virginia, United Sta",
 "locations_checked": "2026-10-01"
}