{
  "spec_version": 2,
  "extractor_version": "0.2.0",
  "url": "https://fly.io/",
  "final_url": "https://fly.io/",
  "slug": "fly.io",
  "captured_at": "2026-11-12T15:20:00.914Z",
  "title": "Fly.io | Deploy apps and agents on hardware-isolated VMs",
  "meta": {
    "description": "Deploy apps, agents, and databases on hardware-isolated VMs. Pay only for the seconds they run. Sign up free.",
    "og_image": "https://fly.io/phx/images/og/home-8f51ecc065542ebfe86badc4143a197d.jpg?vsn=d",
    "og_title": "Fly.io | Deploy apps and agents on hardware-isolated VMs",
    "theme_color": "#ffffff",
    "lang": "en-US"
  },
  "capture": {
    "variants": [
      {
        "name": "desktop-light",
        "width": 1440,
        "height": 900,
        "scheme": "light",
        "page_height": 6119,
        "full": "screens/desktop-light-full.png",
        "fold": "screens/desktop-light-fold.png"
      },
      {
        "name": "desktop-dark",
        "width": 1440,
        "height": 900,
        "scheme": "dark",
        "page_height": 6119,
        "full": "screens/desktop-dark-full.png",
        "fold": "screens/desktop-dark-fold.png"
      },
      {
        "name": "mobile-light",
        "width": 390,
        "height": 844,
        "scheme": "light",
        "page_height": 8777,
        "full": "screens/mobile-light-full.png",
        "fold": "screens/mobile-light-fold.png"
      },
      {
        "name": "mobile-dark",
        "width": 390,
        "height": 844,
        "scheme": "dark",
        "page_height": 8777,
        "full": "screens/mobile-dark-full.png",
        "fold": "screens/mobile-dark-fold.png"
      }
    ],
    "status": 200,
    "cookie_banner": "clicked \"Reject\"; hid div#ph-consent-banner",
    "warnings": [],
    "element_count": 398,
    "render_quality": {
      "status": "ok",
      "reasons": [],
      "screenshot": "ok",
      "screenshot_reasons": []
    },
    "worker_os": "macos"
  },
  "color": {
    "scheme": "light",
    "palette": [
      {
        "hex": "#F1F2F9",
        "oklch": [
          0.962,
          0.009,
          279.7
        ],
        "role": "bg",
        "area": 0.4819,
        "uses": {
          "bg": 0.924,
          "text": 0,
          "border": 0,
          "fill": 0.076
        },
        "variants": [
          "#E3F2F8"
        ]
      },
      {
        "hex": "#FFFFFF",
        "oklch": [
          1,
          0,
          0
        ],
        "role": "surface",
        "area": 0.3221,
        "uses": {
          "bg": 0.769,
          "text": 0.005,
          "border": 0,
          "fill": 0.226
        },
        "css_var": "--tw-ring-offset-color",
        "variants": [
          "#FAF8FF"
        ]
      },
      {
        "hex": "#191034",
        "oklch": [
          0.209,
          0.068,
          290.9
        ],
        "role": "other",
        "area": 0.0423,
        "uses": {
          "bg": 1,
          "text": 0,
          "border": 0,
          "fill": 0
        }
      },
      {
        "hex": "#1E1442",
        "oklch": [
          0.235,
          0.083,
          288.3
        ],
        "role": "other",
        "area": 0.0406,
        "uses": {
          "bg": 1,
          "text": 0,
          "border": 0,
          "fill": 0
        },
        "variants": [
          "#22183C"
        ]
      },
      {
        "hex": "#281950",
        "oklch": [
          0.268,
          0.096,
          291.1
        ],
        "role": "other",
        "area": 0.0297,
        "uses": {
          "bg": 0.356,
          "text": 0.636,
          "border": 0,
          "fill": 0.009
        },
        "variants": [
          "#231850"
        ]
      },
      {
        "hex": "#ECE9FF",
        "oklch": [
          0.943,
          0.03,
          292.1
        ],
        "role": "other",
        "area": 0.013,
        "uses": {
          "bg": 1,
          "text": 0,
          "border": 0,
          "fill": 0
        }
      },
      {
        "hex": "#5B4F78",
        "oklch": [
          0.457,
          0.067,
          297.1
        ],
        "role": "other",
        "area": 0.0087,
        "uses": {
          "bg": 0,
          "text": 1,
          "border": 0,
          "fill": 0
        }
      },
      {
        "hex": "#BAC4FF",
        "oklch": [
          0.833,
          0.084,
          277
        ],
        "role": "other",
        "area": 0.0077,
        "uses": {
          "bg": 0,
          "text": 0,
          "border": 0,
          "fill": 1
        }
      },
      {
        "hex": "#B6CFF6",
        "oklch": [
          0.849,
          0.061,
          259.2
        ],
        "role": "other",
        "area": 0.0077,
        "uses": {
          "bg": 0,
          "text": 0,
          "border": 0,
          "fill": 1
        }
      },
      {
        "hex": "#C5E8F0",
        "oklch": [
          0.908,
          0.038,
          213.1
        ],
        "role": "other",
        "area": 0.0077,
        "uses": {
          "bg": 0,
          "text": 0,
          "border": 0,
          "fill": 1
        }
      },
      {
        "hex": "#4A3F6B",
        "oklch": [
          0.399,
          0.074,
          294.3
        ],
        "role": "text",
        "area": 0.0052,
        "uses": {
          "bg": 0,
          "text": 0.998,
          "border": 0,
          "fill": 0.002
        }
      },
      {
        "hex": "#8B5CF659",
        "oklch": [
          0.606,
          0.219,
          292.7
        ],
        "role": "other",
        "area": 0.005,
        "uses": {
          "bg": 0,
          "text": 0,
          "border": 0,
          "fill": 1
        },
        "on_bg": "#CDBDF8"
      },
      {
        "hex": "#B6D7EF",
        "oklch": [
          0.863,
          0.048,
          239.7
        ],
        "role": "other",
        "area": 0.0039,
        "uses": {
          "bg": 0,
          "text": 0,
          "border": 0,
          "fill": 1
        }
      },
      {
        "hex": "#12122680",
        "oklch": [
          0.194,
          0.04,
          282
        ],
        "role": "other",
        "area": 0.0036,
        "uses": {
          "bg": 0,
          "text": 0,
          "border": 0,
          "fill": 1
        },
        "on_bg": "#828290"
      },
      {
        "hex": "#22183C80",
        "oklch": [
          0.243,
          0.067,
          293.6
        ],
        "role": "other",
        "area": 0.0036,
        "uses": {
          "bg": 0,
          "text": 0,
          "border": 0,
          "fill": 1
        },
        "on_bg": "#8A859B"
      },
      {
        "hex": "#19103480",
        "oklch": [
          0.209,
          0.068,
          290.9
        ],
        "role": "other",
        "area": 0.0036,
        "uses": {
          "bg": 0,
          "text": 0,
          "border": 0,
          "fill": 1
        },
        "on_bg": "#858197"
      }
    ],
    "roles": {
      "bg": "#F1F2F9",
      "text": "#4A3F6B",
      "muted": "#A39AC1",
      "surface": "#FFFFFF",
      "accent": "#F86D60",
      "border": "#E4DEF7"
    },
    "accent_strategy": "dual-accent",
    "contrast": {
      "text_on_bg": 8.49,
      "muted_on_bg": 2.37,
      "accent_on_bg": 2.56
    },
    "gradients": [
      "linear-gradient(rgb(241, 242, 249), rgb(255, 255, 255), rgb(255, 255, 255))",
      "linear-gradient(rgb(186, 196, 255) 45%, rgb(182, 207, 246) 60%, rgb(182, 215, 239) 80%, rgb(197, 232, 240))",
      "linear-gradient(rgb(186, 196, 255), rgb(182, 207, 246) 55%, rgb(197, 232, 240))",
      "linear-gradient(to right bottom, rgba(18, 18, 38, 0.5), rgba(34, 24, 60, 0.5), rgba(25, 16, 52, 0.5))"
    ],
    "theme_color": "#ffffff",
    "dark_mode": {
      "responds_to_prefers_color_scheme": false
    },
    "declared_accents": [],
    "accent_detail": {
      "method": "cta-chromatic",
      "cta": "#F86D60",
      "candidates": [
        {
          "hex": "#281950",
          "controls": 0,
          "links": 4,
          "text": 40,
          "elements": 49,
          "fills": 30,
          "area": 0.02969,
          "score": 137,
          "strong": true
        },
        {
          "hex": "#6D28D9",
          "controls": 0,
          "links": 6,
          "text": 12,
          "elements": 20,
          "fills": 0,
          "area": 0.00341,
          "score": 65.6,
          "strong": true
        },
        {
          "hex": "#4A3F6B",
          "controls": 0,
          "links": 0,
          "text": 8,
          "elements": 8,
          "fills": 3,
          "area": 0.00523,
          "score": 30.4,
          "strong": true
        },
        {
          "hex": "#F86D60",
          "controls": 3,
          "links": 0,
          "text": 0,
          "elements": 3,
          "fills": 0,
          "area": 0.0008,
          "score": 29.3,
          "strong": true
        },
        {
          "hex": "#1E1442",
          "controls": 2,
          "links": 0,
          "text": 0,
          "elements": 3,
          "fills": 0,
          "area": 0.04056,
          "score": 26.7,
          "strong": true
        },
        {
          "hex": "#7C3AED",
          "controls": 1,
          "links": 0,
          "text": 0,
          "elements": 9,
          "fills": 0,
          "area": 0.00039,
          "score": 22.7,
          "strong": false
        }
      ]
    },
    "highlights": [
      {
        "hex": "#7C3AED",
        "elements": 9
      }
    ]
  },
  "type": {
    "families": [
      {
        "family": "Fricolage Grotesque",
        "css_family": "Fricolage Grotesque",
        "role": "body",
        "roles": [
          "body"
        ],
        "weights": [
          325,
          450,
          500,
          575
        ],
        "share": 0.519,
        "kind": "webfont",
        "classification": "sans",
        "foundry": null,
        "stack": "\"Fricolage Grotesque\", ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"",
        "files": [
          "/phx/ui/fonts/fricolage-grotesque.var-c4e68eb9708a077874be07be1d9f2ab9.woff2?vsn=d"
        ],
        "internal_names": [
          "Fricolage Grotesque ExtBd 96pt"
        ]
      },
      {
        "family": "Mackinac",
        "css_family": "Mackinac",
        "role": "display",
        "roles": [
          "display"
        ],
        "weights": [
          500
        ],
        "share": 0.478,
        "kind": "webfont",
        "classification": "serif",
        "foundry": null,
        "stack": "Mackinac, ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif",
        "files": [
          "/phx/ui/fonts/mackinac-medium-72452da8f9470257c609f26a1349f0d2.woff2?vsn=d",
          "/phx/ui/fonts/mackinac-medium-italic-adb66b2b22d7a691a214ab0e7971264f.woff2?vsn=d",
          "/phx/ui/fonts/mackinac-bold-6a92de456437e3636084b0b8203e4af6.woff2?vsn=d",
          "/phx/ui/fonts/mackinac-bold-italic-04208325eb2543e41f5d70c7e281309a.woff2?vsn=d"
        ],
        "internal_names": [
          "P22 Mackinac Pro"
        ]
      },
      {
        "family": "Fragment Mono",
        "css_family": "Fragment Mono",
        "role": "mono",
        "roles": [
          "mono"
        ],
        "weights": [
          325
        ],
        "share": 0.002,
        "kind": "webfont",
        "classification": "mono",
        "foundry": null,
        "stack": "ui-monospace, SFMono-Regular, \"Fragment Mono\", Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace",
        "files": [
          "/phx/ui/fonts/fragment-mono-regular-e6a1881f8b2d71568ae7935d098c7590.woff2?vsn=d",
          "/phx/ui/fonts/fragment-mono-italic-a01dfaeb25824e4279013d8497b0d7f6.woff2?vsn=d"
        ],
        "internal_names": [
          "Fragment Mono"
        ]
      }
    ],
    "declared_unused": [],
    "scale_px": [
      12,
      14.5,
      15,
      15.5,
      17,
      19,
      23,
      26,
      32,
      44,
      48,
      52
    ],
    "ratio": 1.173,
    "body_size": 17,
    "root_size": 16,
    "line_height": 1.5,
    "display_size": 52,
    "tracking_display": "-0.03em",
    "case": "sentence",
    "styles": [
      {
        "name": "display",
        "family": "Mackinac",
        "size_px": 52,
        "weight": 500,
        "line_height": 1.15,
        "letter_spacing_em": -0.03,
        "sample": "Computers for agents,"
      },
      {
        "name": "headline",
        "family": "Mackinac",
        "size_px": 44,
        "weight": 500,
        "line_height": 1.08,
        "letter_spacing_em": -0.025,
        "sample": "Work with the agents and tools you alrea"
      },
      {
        "name": "title",
        "family": "Fricolage Grotesque",
        "size_px": 17,
        "weight": 500,
        "line_height": 1.5,
        "letter_spacing_em": 0,
        "sample": "Hardware isolation, always"
      },
      {
        "name": "body",
        "family": "Fricolage Grotesque",
        "size_px": 17,
        "weight": 325,
        "line_height": 1.5,
        "letter_spacing_em": 0,
        "sample": "Your agent gets a Fly computer and all t"
      },
      {
        "name": "body-sm",
        "family": "Fricolage Grotesque",
        "size_px": 15,
        "weight": 325,
        "line_height": 1.5,
        "letter_spacing_em": 0,
        "sample": "Backups, failover, and connection poolin"
      },
      {
        "name": "label",
        "family": "Fricolage Grotesque",
        "size_px": 14.5,
        "weight": 450,
        "line_height": 1.5,
        "letter_spacing_em": 0,
        "sample": "Products"
      },
      {
        "name": "mono",
        "family": "Fragment Mono",
        "size_px": 17,
        "weight": 325,
        "line_height": 1.5,
        "letter_spacing_em": 0,
        "sample": "fly launch"
      }
    ],
    "mobile": {
      "body_size": 17,
      "display_size": 33.54
    }
  },
  "space": {
    "scale_px": [
      4,
      6,
      8,
      10,
      12,
      14,
      16,
      20,
      24,
      32,
      40,
      64,
      96,
      120
    ],
    "base": 4,
    "base_fit": 0.9,
    "density": 0.088,
    "section_padding_px": null
  },
  "shape": {
    "radii_px": [
      8,
      24,
      9999
    ],
    "dominant_radius": 0,
    "border_usage": "hairline",
    "border_width_px": 1
  },
  "depth": {
    "shadows": [
      "rgba(40, 25, 80, 0.04) 0px 1px 2px 0px, rgba(40, 25, 80, 0.14) 0px 16px 40px -20px",
      "rgba(32, 34, 55, 0.05) 0px 10px 15px -3px, rgba(32, 34, 55, 0.05) 0px 4px 6px -4px",
      "rgba(0, 0, 0, 0.1) 0px 1px 3px 0px, rgba(0, 0, 0, 0.1) 0px 1px 2px -1px",
      "rgba(91, 33, 182, 0.1) 0px 5px 5px -2px, rgba(91, 33, 182, 0.1) 0px 2px 4px -2px",
      "rgb(231, 230, 244) 0px -3px 6px -2px inset"
    ],
    "style": "elevated"
  },
  "layout": {
    "container_px": 1200,
    "columns": 3,
    "hero": "left-over-media",
    "nav": "top-static+transparent",
    "page_height_px": 6119,
    "section_count": 3
  },
  "motion": {
    "transitions": 95,
    "easing": "cubic-bezier(0.4, 0, 0.2, 1)",
    "durations_ms": [
      150,
      200,
      300,
      900
    ],
    "animations": [
      "infinite-scroll"
    ]
  },
  "components": {
    "button-primary": {
      "backgroundColor": "#F86D60",
      "textColor": "#281950",
      "rounded": "9999px",
      "padding": "0px 20px",
      "height": "48px",
      "fontFamily": "Fricolage Grotesque",
      "fontSize": "15.5px",
      "fontWeight": 450,
      "shadow": "rgb(252, 185, 178) 0px 0px 0px 1.5px inset, rgba(0, 0, 0, 0) 0px 0px 0px 0px",
      "sample": "Start free"
    },
    "button-secondary": {
      "textColor": "#202237",
      "rounded": "9999px",
      "padding": "0px 10px",
      "height": "32px",
      "fontFamily": "Fricolage Grotesque",
      "fontSize": "14.5px",
      "fontWeight": 450,
      "border": "1px solid #FFFFFFE6",
      "shadow": "rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0.1) 0px 1px 3px 0px, rgba(0, 0, 0, 0.",
      "sample": "Log In"
    },
    "card": {
      "rounded": "24px",
      "padding": "32px",
      "count": 4,
      "backgroundColor": "#FFFFFF",
      "shadow": "rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(40, 25, 80, 0.04) 0px 1px 2px 0px, rgba(40, 25,"
    },
    "input": {
      "rounded": "8px",
      "height": "39.8px",
      "padding": "8px 12px",
      "backgroundColor": "#22183C",
      "border": "1px solid #42385F"
    }
  },
  "imagery": {
    "media_share": 0.407,
    "dominant_colors": [
      {
        "hex": "#BAC4FF",
        "share": 0.395
      },
      {
        "hex": "#1E1442",
        "share": 0.159
      },
      {
        "hex": "#D5D5F1",
        "share": 0.104
      },
      {
        "hex": "#FAF8FF",
        "share": 0.099
      },
      {
        "hex": "#A8ADDB",
        "share": 0.061
      },
      {
        "hex": "#302659",
        "share": 0.037
      }
    ],
    "has_photography": null,
    "has_illustration": null
  },
  "stack": [
    "tailwind",
    "posthog",
    "google-tag-manager",
    "fly.io"
  ],
  "sections": [
    {
      "index": 0,
      "kind": "hero",
      "kind_source": "dom",
      "confidence": 0.7,
      "bbox": {
        "x": 0,
        "y": -234,
        "w": 1440,
        "h": 5802
      },
      "bg": "#FFFFFF",
      "crop": null
    },
    {
      "index": 1,
      "kind": "nav",
      "kind_source": "dom",
      "confidence": 0.9,
      "bbox": {
        "x": 120,
        "y": 0,
        "w": 1200,
        "h": 96
      },
      "bg": "#FFFFFF",
      "crop": "img/section-01-nav.webp"
    },
    {
      "index": 2,
      "kind": "footer",
      "kind_source": "dom",
      "confidence": 0.95,
      "bbox": {
        "x": 0,
        "y": 5568,
        "w": 1440,
        "h": 551
      },
      "bg": "#191034",
      "crop": "img/section-02-footer.webp"
    }
  ],
  "images": {
    "manifest": "img/manifest.json",
    "count": 6
  },
  "review": {
    "threshold": 0.7,
    "needs_review": [
      "color.accent_strategy",
      "layout.columns",
      "layout.hero",
      "layout.section_count",
      "space.section_padding_px"
    ],
    "vision": "not-run"
  },
  "provenance": {
    "color.roles.bg": {
      "source": "dom",
      "confidence": 0.95
    },
    "color.roles.text": {
      "source": "dom",
      "confidence": 0.92
    },
    "color.roles.muted": {
      "source": "dom",
      "confidence": 0.82
    },
    "color.roles.surface": {
      "source": "dom",
      "confidence": 0.78
    },
    "color.roles.border": {
      "source": "dom",
      "confidence": 0.75
    },
    "color.roles.accent": {
      "source": "dom",
      "confidence": 0.75,
      "note": "fill of the primary button"
    },
    "color.accent_strategy": {
      "source": "dom",
      "confidence": 0.6,
      "note": "hue count over chromatic colors; product mockups rendered in the DOM inflate it",
      "needs_review": true
    },
    "color.palette": {
      "source": "dom",
      "confidence": 0.9
    },
    "color.declared_accents": {
      "source": "dom",
      "confidence": 0.95
    },
    "color.dark_mode": {
      "source": "dom",
      "confidence": 0.9
    },
    "color.contrast": {
      "source": "dom",
      "confidence": 0.9
    },
    "color.gradients": {
      "source": "dom",
      "confidence": 0.85
    },
    "type.families": {
      "source": "dom",
      "confidence": 0.95,
      "note": "named from the @font-face rule that rendered (CDP platform fonts)"
    },
    "type.families[].roles": {
      "source": "dom",
      "confidence": 0.85
    },
    "type.declared_unused": {
      "source": "dom",
      "confidence": 0.95
    },
    "type.scale_px": {
      "source": "dom",
      "confidence": 0.9
    },
    "type.body_size": {
      "source": "dom",
      "confidence": 0.85
    },
    "type.display_size": {
      "source": "dom",
      "confidence": 0.85
    },
    "type.styles": {
      "source": "dom",
      "confidence": 0.8
    },
    "type.ratio": {
      "source": "dom",
      "confidence": 0.7,
      "note": "geometric fit over the scale above body size"
    },
    "type.case": {
      "source": "dom",
      "confidence": 0.75
    },
    "type.line_height": {
      "source": "dom",
      "confidence": 0.85
    },
    "type.tracking_display": {
      "source": "dom",
      "confidence": 0.85
    },
    "space.base": {
      "source": "dom",
      "confidence": 0.91,
      "note": "share of paddings/margins/gaps on the base: 0.9"
    },
    "space.scale_px": {
      "source": "dom",
      "confidence": 0.85
    },
    "space.section_padding_px": {
      "source": "dom",
      "confidence": 0.65,
      "needs_review": true
    },
    "space.density": {
      "source": "dom",
      "confidence": 0.85
    },
    "shape.radii_px": {
      "source": "dom",
      "confidence": 0.88
    },
    "shape.dominant_radius": {
      "source": "dom",
      "confidence": 0.8
    },
    "shape.border_usage": {
      "source": "dom",
      "confidence": 0.8
    },
    "depth.shadows": {
      "source": "dom",
      "confidence": 0.9
    },
    "depth.style": {
      "source": "dom",
      "confidence": 0.75
    },
    "layout.container_px": {
      "source": "dom",
      "confidence": 0.8
    },
    "layout.columns": {
      "source": "dom",
      "confidence": 0.6,
      "note": "most common grid track count; layout grids and card grids are not separated",
      "needs_review": true
    },
    "layout.nav": {
      "source": "dom",
      "confidence": 0.78
    },
    "layout.hero": {
      "source": "dom",
      "confidence": 0.6,
      "note": "geometric heuristic over the h1 and nearby media",
      "needs_review": true
    },
    "layout.section_count": {
      "source": "dom",
      "confidence": 0.6,
      "needs_review": true
    },
    "motion": {
      "source": "dom",
      "confidence": 0.8
    },
    "components": {
      "source": "dom",
      "confidence": 0.78
    },
    "stack": {
      "source": "dom",
      "confidence": 0.85,
      "note": "globals, script URLs and response headers"
    },
    "meta": {
      "source": "dom",
      "confidence": 0.99
    },
    "sections[].bbox": {
      "source": "dom",
      "confidence": 0.8
    },
    "sections[].kind": {
      "source": "dom",
      "confidence": 0.85,
      "note": "class-name and content-count heuristics; per-section confidence in sections[].confidence"
    },
    "imagery.media_share": {
      "source": "dom",
      "confidence": 0.8
    },
    "imagery.dominant_colors": {
      "source": "pixels",
      "confidence": 0.7,
      "note": "clustered screenshot pixels inside media boxes (approximate, OKLab ΔE 0.06 clusters)"
    }
  }
}