1var module_221957206910=function(){const PRODUCTS=[{id:"artifact-firewall",name:"Artifact Firewall",tagline:"Secure your software supply chain by controlling infrastructure dependencies.",source:"https://www.varnish-software.com/products/software-supply-chain/varnish-artifact-firewall/",tiers:[{name:"30-Day Trial",badge:"trial",price:"$0",period:"30 days, report mode",desc:"See what your policy would catch, on your own traffic, before anything is blocked.",bullets:["Report mode on every registry you enable","OSV ruleset applied automatically","50 active developers, evaluation scope","No payment details required"],cta:{label:"Request your license",style:"ghost",href:"https://www.varnish-software.com/products/software-supply-chain/varnish-virtual-registry/getting-started/"}},{name:"Pro",badge:"paid",price:"Private offer",period:"per 50 covered developers",featured:!0,desc:"Full request-time enforcement for production teams. Grows in blocks of 50 covered developers with no scale ceiling, and the per-developer price declines as you grow.",bullets:["Enforce mode: allow, deny, hide, and quarantine","OSV rules plus your own policy, as code in your Git","Namespace isolation","Audit log, Prometheus, and OpenTelemetry metrics","Standard support: email, business hours"],cta:{label:"Get a quote",style:"primary",href:"https://www.varnish-software.com/talk-to-an-expert/?what_are_you_contacting_varnish_about=I%20have%20a%20question%20about%20Varnish%20products%20%26%20services&which_varnish_solution_do_you_need_=Varnish%20Artifact%20Firewall"},marketplaces:[{name:"AWS Marketplace",href:"https://aws.amazon.com/marketplace/pp/prodview-jjjc4vjfmz6ce?sr=0-1&ref_=ucaf&applicationId=AWSMPContessa"}]},{name:"Enterprise",badge:"Custom pricing",price:"Contact us",period:"org-wide license",desc:"Org-wide coverage on one order form, with the schedule locked for multi-year terms. Purchasable from day one, before rollout.",bullets:["Everything in Pro","Org-wide covered-developer scope","Virtual Registry integration included","Multi-environment and custom integration","Premium support: 24Ã7, Slack channel, and contractual SLA"],cta:{label:"Contact sales",style:"ghost",href:"https://www.varnish-software.com/talk-to-an-expert/?what_are_you_contacting_varnish_about=I%20have%20a%20question%20about%20Varnish%20products%20%26%20services&which_varnish_solution_do_you_need_=Varnish%20Artifact%20Firewall"}}],partnerBanner:{eyebrow:"Better together",title:"Enforcement and caching on one layer",exampleTag:"Artifact Firewall + Virtual Registry",desc:"Artifact Firewall runs on the same in-path layer as Varnish Virtual Registry, so one deployment verifies every package and accelerates every pull. Available as an add-on at Pro, included at Enterprise.",tracks:[{title:"Verify",body:"Every package checked against your policy before the fetch, with quarantine for the unknown."},{title:"Accelerate",body:"Cached artifacts served at memory speed, and uptime when upstream fails."}],features:"One deployment, one layer in the path, two products.",cta:{label:"See Virtual Registry pricing",href:"#virtual-registry"}},featureGroups:[{title:"Coverage",rows:[["Covered developers",["50 active","Blocks of 50","Org-wide"],"An identity that pulled packages through Artifact Firewall in the last 90 days, not every name on the org chart. Shared CI and service accounts are not counted."],["Ecosystems enforced",["4","4","4"],"npm, PyPI, Maven, and NuGet."],["Registries fronted",["Any","Any","Any"],"Vendor-neutral: deploys in front of Artifactory, Nexus, Cloudsmith, CodeArtifact, and more."]]},{title:"Policy and enforcement",rows:[["Report mode",["yes","yes","yes"],"See what policy would catch, without blocking anything."],["Enforce mode",["no","yes","yes"],"Allow, deny, hide, and quarantine, applied at request time."],["OSV vulnerability ruleset",["yes","yes","yes"],"Applied automatically and updated continuously."],["Custom policy rules",["yes","yes","yes"],"Policy as code, versioned in your own Git."],["Quarantine",["no","yes","yes"],"Holds unverified packages without breaking builds."],["Namespace isolation",["no","yes","yes"],"Stops dependency confusion between public and private namespaces."],["Audit log and metrics",["yes","yes","yes"],"Full request audit trail, Prometheus, and OpenTelemetry."]]},{title:"Integration",rows:[["Virtual Registry integration",["â","addon","Included"],"Enforcement and caching on the same in-path layer."],["Multi-environment and custom integration",["no","no","yes"]],["Air-gapped deployment",["no","yes","yes"]]]},{title:"Support",rows:[["Community support",["yes","yes","yes"]],["Standard support",["no","yes","yes"]],["Premium support",["no","no","yes"],"24Ã7 with Slack channel and contractual SLA, included at Enterprise."]]}],footnote:"Pro is sold by private offer, on AWS Marketplace and direct; pricing is per 50 covered developers and the per-developer rate declines with volume. A covered developer is an identity that pulled packages through Artifact Firewall in the last 90 days: dormant accounts, managers, read-only users, and shared CI or service accounts are not counted. Seats are declared at signature from your own 90-day contributor count, re-declared annually, and resize in both directions at renewal."},{id:"virtual-registry",name:"Virtual Registry",tagline:"Virtual registry manager to consolidate and accelerate artifact registries.",source:"https://www.varnish-software.com/products/software-supply-chain/varnish-virtual-registry/",tiers:[{name:"30-Day Trial",badge:"trial",price:"$0",period:"30 days, full Pro feature set",desc:"Deploy the complete Pro feature set on your own infrastru
1cture, no payment details required.",bullets:["Private and public registry caching, unlocked for the trial","Cache clustering and failover across locations","OpenTelemetry metrics and tracing","No payment details required"],cta:{label:"Request your license",style:"ghost",href:"https://www.varnish-software.com/products/software-supply-chain/varnish-virtual-registry/getting-started/"}},{name:"Core",badge:"paid",price:"$30,000",period:"per year, one location",featured:!0,desc:"Start with one location, any number of nodes, and a 450 TB annual traffic envelope.",bullets:["Private and public registry caching","Persistent and in-memory cache","Fronts Artifactory, Nexus, Harbor, Cloudsmith, GitHub, GitLab, and more","OpenTelemetry metrics and tracing","Email support"],cta:{label:"Contact sales",style:"primary",href:"https://www.varnish-software.com/talk-to-an-expert/?what_are_you_contacting_varnish_about=I%20have%20a%20question%20about%20Varnish%20products%20%26%20services&which_varnish_solution_do_you_need_=Varnish%20Virtual%20Registry"},marketplaces:[{name:"AWS Marketplace",href:"https://aws.amazon.com/marketplace/pp/prodview-4jk4gcx5ijcuy?sr=0-3&ref_=ucaf&applicationId=AWSMPContessa"}]},{name:"Pro",badge:"paid",price:"Private offer",period:"three locations included",desc:"For production estates: cache clustering and failover across locations, then add locations one at a time as the rollout grows.",bullets:["Everything in Core","Cache clustering across nodes","Failover between locations","Traffic envelope pooled across locations","Standard support, Premium available as an add-on"],cta:{label:"Contact sales",style:"primary",href:"https://www.varnish-software.com/talk-to-an-expert/?what_are_you_contacting_varnish_about=I%20have%20a%20question%20about%20Varnish%20products%20%26%20services&which_varnish_solution_do_you_need_=Varnish%20Virtual%20Registry"}},{name:"Enterprise",badge:"Custom pricing",price:"Contact us",period:"custom scope",desc:"Unlimited locations and traffic inside a named CI/CD and SDLC scope.",bullets:["Everything in Pro","Unlimited locations and traffic","Telemetry off by contract for air-gapped estates","Custom configuration","Premium support with TAM included"],cta:{label:"Contact sales",style:"ghost",href:"https://www.varnish-software.com/talk-to-an-expert/?what_are_you_contacting_varnish_about=I%20have%20a%20question%20about%20Varnish%20products%20%26%20services&which_varnish_solution_do_you_need_=Varnish%20Virtual%20Registry"}}],partnerBanner:{eyebrow:"Evaluation",title:"Prove it on your own traffic before you buy",exampleTag:"30-day trial, full Pro feature set",desc:"The free 30-day trial runs the complete Pro feature set, from private registries to clustering and failover, on your own infrastructure, so the latency and uptime case is proven on your data before the first order.",tracks:[{title:"Full feature set",body:"Private registries, persistence, clustering, and failover, all unlocked for the trial."},{title:"Your workloads",body:"Deploy where your builds run and measure against your current registry path."},{title:"No commitment",body:"No payment details required to start, and nothing keeps running after day 30 unless you convert."}],featuresLabel:"How it works:",features:"Request your trial license, deploy, and compare the numbers.",cta:{label:"Start your free trial",href:"https://www.varnish-software.com/products/software-supply-chain/varnish-virtual-registry/getting-started/"}},featureGroups:[{title:"Scale",rows:[["Locations",["1, trial only","1, exactly","3, then +1 at a time","Unlimited"],"A location is one Virtual Registry deployment serving one site: a data centre, a cloud region, or an office. Nodes, pods, and clusters inside it are never counted."],["Annual traffic envelope",["â","450 TB","1,350 TB, +450 per location","No cap"],"Bytes delivered to your clients over a trailing 12 months, all locations combined. Uploads, transfers between your own locations, and cache-warming prefetch are not counted."],["Cache clustering",["yes","no","yes","yes"],"Nodes share one logical cache, so an artifact is fetched from upstream once and served to the rest."],["Failover between locations",["yes","no","yes","yes"],"Service continues from another location if one goes down."]]},{title:"Registry features",rows:[["Public registry cache",["yes","yes","yes","yes"]],["Private registry caching",["yes","yes","yes","yes"]],["Platforms fronted",["Unlimited","Unlimited","Unlimited","Unlimited"],"Artifactory, Nexus, Harbor, Cloudsmith, GitHub, GitLab, and more, with no limit on how many."],["End-to-end TLS",["yes","yes","yes","yes"]],["In-memory cache",["yes","yes","yes","yes"]],["Persistent caching",["yes","yes","yes","yes"]],["Custom VCL per registry",["no","no","no","yes"],"Edge logic tailored per registry, the customization Enterprise carries."]]},{title:"Observability",rows:[["OpenTelemetry metrics",["yes","yes","yes","yes"]],["OpenTelemetry tracing",["yes","yes","yes","yes"]],["Telemetry-off, air-gapped operation",["no","no","no","yes"],"Telemetry may be disabled by contract for air-gapped estates."]]},{title:"Support",rows:[["Community support",["yes","yes","yes","yes"]],["Email support",["yes","yes","yes","yes"]],["Standard support",["no","no","yes","yes"]],["Premium support",["no","no","addon","yes"],"Included at Enterprise, with TAM, Slack channel, and contractual SLA."]]}
1],footnote:"A location is one Virtual Registry deployment serving one site; nodes and clusters inside it are never counted. Core is licensed per location: a second location is a second Core, each with its own 450 TB envelope, never pooled. Pro pools locations and traffic, adds clustering and failover, and grows one location at a time by private offer."},{id:"ora-streaming",name:"Ora Streaming",tagline:"Dedicated, capacity-based private CDN infrastructure for high-volume, low-latency video delivery.",source:"https://orastreaming.com",tiers:[{name:"Managed Deployment",badge:"Custom pricing",price:"Contact sales",period:"quoted per deployment",featured:!0,desc:"Dedicated capacity sized to your traffic, priced individually.",bullets:["Dedicated RAM, CPU & network capacity","100+ global PoPs on Tier-1 networks","Zero egress fees","24/7/365 managed ops & NOC support","Security, edge logic & free edge compute","Real-time observability & tuning"],cta:{label:"Get indicative pricing",style:"primary",href:"https://www.varnish-software.com/talk-to-an-expert/?what_are_you_contacting_varnish_about=I%20have%20a%20question%20about%20Varnish%20products%20%26%20services&which_varnish_solution_do_you_need_=Ora%20Streaming",compact:!0}}],partnerBanner:{eyebrow:"Deployment Option",title:"Prefer to deploy on your own infrastructure?",exampleTag:"Build-Operate-Transfer",desc:"Run Ora on your own hardware and network. Varnish builds it and operates it while your team trains alongside, then hands over full ownership.",tracks:[{title:"Build",body:"Varnish stands up the platform on your infrastructure."},{title:"Operate",body:"Varnish runs it while your team trains alongside."},{title:"Transfer",body:"Full handover once your team is ready."}],featuresLabel:"Timeline:",features:"Typically 6â12 months from kickoff to full transfer, depending on your team's pace.",cta:{label:"Talk to us about Build-Operate-Transfer",href:"https://www.varnish-software.com/talk-to-an-expert/?what_are_you_contacting_varnish_about=I%20have%20a%20question%20about%20Varnish%20products%20%26%20services&which_varnish_solution_do_you_need_=Ora%20Streaming"}},featureGroups:[]},{id:"cdn",name:"Varnish CDN",tagline:"European-hosted CDN with predictable performance and full data locality.",source:"https://www.varnish-software.com/products/streaming-content-delivery/varnish-cdn/",tiers:[{name:"Developer",badge:"trial",price:"â¬0",period:"1 month free trial",desc:"For developers who want to explore and test the Varnish CDN experience.",bullets:["100 GB included + â¬0.03/GB overage","A sovereign CDN","Hotlink protection","Bot verification","Managed WAF â Basic","Rate limiting â Standard","Managed SSL","No credit card required",{sub:"Rules"},"10 custom cache rules",{sub:"Support"},"FAQ, documentation"],cta:{label:"Start for free",style:"ghost",href:"https://console.varnish-cdn.com/login"}},{name:"Growth",badge:"paid",price:"â¬69",period:"per month",featured:!0,desc:"For non-essential static assets and cost-conscious growing businesses.",bullets:["100 GB included + â¬0.03/GB overage","Everything in Developer, plus:","WebSocket proxy","GeoIP blocklist","Managed WAF â Standard","Bot protection","Image optimization","Image transformation (1000)",{sub:"Rules"},"100 custom cache rules",{sub:"Support"},"FAQ, documentation, ticket"],cta:{label:"Get started",style:"primary",href:"https://console.varnish-cdn.com/login"}},{name:"Custom Contract",badge:"paid",price:"Contact sales",period:"per quote",desc:"Security-rich bundle for the most demanding business-critical operations.",bullets:["Everything in Growth, plus:","True client IP headers","Managed WAF â Advanced","Image transformation (10,000)","Large uploads","
1Log export",{sub:"Rules"},"2000+ custom cache rules",{sub:"Support"},"FAQ, docs, ticket, chat (per quote)"],cta:{label:"Contact sales",style:"ghost",href:"https://www.varnish-software.com/talk-to-an-expert/?what_are_you_contacting_varnish_about=I%20have%20a%20question%20about%20Varnish%20products%20%26%20services&which_varnish_solution_do_you_need_=Varnish%20CDN"}}],partnerBanner:{eyebrow:"Partner Program",title:"Deploy Varnish CDN on your own infrastructure",exampleTag:"Varnish CDN in a Box",source:"https://www.varnish-software.com/products/streaming-content-delivery/varnish-cdn-in-a-box/",desc:"Resell CDN services under your brand or gain the benefits of a managed private CDN.",tracks:[{title:"Resell CDN",body:"Sell CDN services to your own customers with a white-label Varnish CDN deployment."},{title:"Private managed CDN",body:"Run a private CDN on your own infrastructure, managed by Varnish."}],features:"All the capabilities of Varnish CDN, plus partner essentials like SSO, billing, and multi-tenancy.",cta:{label:"Contact partner team",href:"https://www.varnish-software.com/become-a-partner/"}},featureGroups:[{title:"Content delivery",rows:[["Number of domains included",["1","1","Per quote"]],["GB included in monthly fee",["100","100","Per quote"]],["GB overage price",["â¬0.03","â¬0.03","Per quote"]],["Content delivery network",["yes","yes","yes"],"Serve more customers faster by distributing your static content across our datacenters world wide."],["Always online",["yes","yes","yes"],"Varnish CDN ensures your website can stay online and available for visitors, even when your server goes down."],["Global GeoIP routing",["yes","yes","yes"],"Always direct your end-users to our nearest datacenter for optimal performance."],["Cache invalidation",["5/min","1/sec","20+/sec"],"Instantly purge a file, a subpath, or your entire cache."],["Cache invalidation by tag",["yes","yes","yes"],"Assign tags to your content so that you can quickly target and purge specific content from the cache with a single request."],["Load balancing",["yes","yes","yes"],"Serve your content from multiple load balanced backends."],["IPv6",["yes","yes","yes"],"Full IPv6 support."],["HTTP/2",["yes","yes","yes"],"Full HTTP/2 support between client and Varnish CDN."],["WebSocket proxy",["no","yes","yes"],"Proxy WebSocket traffic directly to your origin for â¬0.4/million minutes."],["Minimum cache TTL",["2h","1h","1s"],"Varnish CDN respects all caching headers unless you choose to overwrite them, in which case a minimum cache TTL is applied."],["Wild card domains",["yes","yes","yes"],"Serve wildcard domains (*.yourpage.com) as a single service."],["Per-path routing",["yes","yes","yes"],"Route different URL paths on the same service to different origins."]]},{title:"Customization",rows:[["Manage cookies",["yes","yes","yes"],"Choose how your cache handles cookies. Bypass the cache or remove unwanted cookies for improved cache hits."],["Manage headers",["yes","yes","yes"],"Add or remove headers to your requests, or bypass cache on authorization headers."],["Manage query parameters",["yes","yes","yes"],"Choose to sort or remove query parameters to improve cache hit rates."],["Custom cache rules",["10","100","2000+"],"Setting your default rules is always included. With custom cache rules, alter your CDN's behaviour when serving different content."],["Max upload size",["100 MB","100 MB","Custom"],"Maximum allowed size of uploads by end-users to your site."],["True client IP headers",["no","no","yes"],"Add headers telling your backend where the request originated from."],["WordPress / Drupal / Magento one-click config",["yes","yes","yes"],"Configure your CDN to be optimised for WordPress, Magento, or Drupal with a single click."]]},{title:"Image handling",rows:[["Image optimization",["no","yes","yes"],"Lossless image optimization to reduce image size by up to 34% without perceived loss in quality."],["Image transformations / mo",["no","1000","10,000"],"Dynamically transform your images to optimize the size for the target page and screen. â¬0.5 per additional 1000 transformations."]]},{title:"Security",rows:[["Hotlink protection",["yes","yes","yes"],"Protect your assets from being shown on other sites."],["GeoIP blockl
1ist",["no","yes","yes"],"Block traffic from ASNs or specific countries."],["Bot verification",["yes","yes","yes"],"Confirm the identities of permitted benevolent bots such as those used by search engines."],["Bot protection",["no","Per quote","Per quote"],"Protect your application from malicious bots."],["DDoS protection",["no","no","yes"],"Network & Transport layer (3 and 4) DDoS protection provided."],["Managed WAF â Standard",["no","no","yes"],"Application layer (7) DDoS protection provided via Open Web Application Security Project (OWASP) ruleset."],["Managed WAF â Advanced",["no","no","Per quote"],"Advanced Web Application Firewall (WAF) ruleset provided in cooperation with Atomicorp."],["Rate limiting",["yes","yes","yes"],"Rate limit your customers globally based on IP."],["Managed SSL",["yes","yes","yes"],"Keep your current SSL configuration or let Varnish CDN handle SSL termination for you."],["Bring your own certificate",["no","no","yes"],"Already managing SSL certificates? Upload your own."]]},{title:"Compliance",rows:[["Data sovereignty (EU)",["yes","yes","yes"],"Varnish Software is subject to and compliant with NIS2 regulation."],["Avoids US CLOUD Act exposure",["yes","yes","yes"],"Varnish CDN is uniquely designed to be untouched by the US CLOUD Act."],["ISO 27001",["yes","yes","yes"],"Varnish Software AB is certified ISO 27001 compliant."],["ISO 9001",["yes","yes","yes"],"Varnish Software AB is certified ISO 9001 compliant."],["PCI DSS 4.0 Level 1",["yes","yes","yes"],"Payments to Varnish CDN are PCI DSS 4.0 Level 1 compliant."]]},{title:"Dashboard",rows:[["Role-based access control",["yes","yes","yes"],"Manage your users with administrative, developer, finance and read-only roles."],["API access",["yes","yes","yes"],"An API is available for autonomous deployment and management of your services."],["Metrics â max resolution",["1h","15m","1m"],"View your metrics with improved granularity."],["Metrics â history retained",["6h","24h","30d"],"View an increasingly long history of metrics for your services."],["Log export",["no","no","yes"],"Export your logs and metrics."]]},{title:"Support",rows:[["Documentation",["yes","yes","yes"]],["Ticket support",["no","yes","yes"]],["Response time",["â","16h","4h"],"During business hours and business days."],["Chat support",["no","no","Per quote"]]]}]},{id:"enterprise",name:"Varnish Enterprise",tagline:"The programmable edge for web, video, and platform teams.",source:"https://www.varnish-software.com/products/platform/varnish-enterprise/",tiers:[{name:"Free Trial",badge:"trial",price:"$0",period:"30-day Enterprise trial",desc:"Full Enterprise feature set, unlocked for technical evaluation.",bullets:["Try with your use case","Deploy instantly","Enterprise features enabled","No commitment","AWS Free Tier-eligible (up to 750 hrs/mo)",{sub:"Best for"},"Technical evaluation"],cta:{label:"Start free",style:"ghost",href:"https://info.varnish-software.com/varnish-enterprise-free-trial"}},{name:"Varnish Enterprise",badge:"paid",price:"Contact us",period:"Request a quote",featured:!0,desc:"Premium software with 24/7 support.",bullets:["Massive Storage Engine","High availability","Compute on the edge","45+ pluggable modules","24/7 global support","Implementation services",{sub:"Best for"},"Enterprises & service providers"],cta:{label:"Request a quote",style:"primary",href:"https://www.varnish-software.com/talk-to-an-expert/?what_are_you_contacting_varnish_about=I%20have%20a%20question%20about%20Varnish%20products%20%26%20services&which_varnish_solution_do_you_need_=Varnish%20Platform"}}],featureGroups:[{title:"Core features",rows:[["HTTP proxy â receive, respond, and cache unencrypted HTTP traffic",["yes","yes"]],["Memory caching â cache responses in RAM",["yes","yes"]],["VCL configuration â cache policy & load balancing via Varnish Configuration Language",["yes","yes"]],["Rate limiting â enforce rate limits with vsthrottle",["yes","yes"]]]},{title:"Solutions",rows:[["Ecommerce (Magento)",["yes","yes"]],["CMS (Drupal, Plone)",["yes","yes"]],["Streaming (media, VOD, live)",["yes","yes"]],["DIY private CDN",["yes","yes"]],["DevOps productivity (Docker, binaries, AI models, JFrog artifacts)",["yes","yes"]],["Object storage acceleration (S3, storage-to-GPU/CPU ingest)",["yes","yes"]]]},{title:"Support",rows:[["Community support (Discord, Reddit, Stack Overflow)",["yes","yes"]],["Quick start",["yes","yes"]],["Migration assistance",["yes","yes"]],["Health checks",["yes","yes"]],["Standard support (limited tickets, business hours)",["addon","addon"]],["Premium support (unlimited, 72h resolution)",["addon","addon"]],["Assist+ (dedicated Slack channel with engineers)",["addon","addon"]]]},{title:"Security",rows:[["HTTPS proxy",["yes","yes"]],["JWT generation & validation",["yes","yes"]],["HMAC signing & verification",["yes","yes"]],["Bot verification (FCrDNS)",["yes","yes"]],["AWS / S3 integration (Secrets Manager, AWSv4 signing)",["yes","yes"]],["Cache encryption at rest",["yes","yes"]],["MMDB geolocation / VPN & proxy detection",["yes","yes"]],["Web Application Firewall",["addon","addon"]]]},{title:"Tools & monitoring",rows:[["Prometheus metrics endpoint",["yes","yes"]],["Controller dashboard",["yes","yes"]]]},{title:"Scalability",rows:[["Dynamic backends",["yes","yes"]],["Memory governor",["yes","yes"]],["Persistent disk caching (100+ TB, MSE)",["yes","yes"]],["Clustering (UDO sharding)",["yes","yes"]],["High availability (VHA replication)",["yes","yes"]],["Traffic router / load balancing",["yes","yes"]]]},{title:"Optimization",rows:[["Stale-if-error",["yes","yes"]],["Parallel ESI",["yes","yes"]],["Scalable key-based invali
1dation (yKey)",["yes","yes"]],["NUMA awareness",["yes","yes"]],["Object segmentation (Slicer)",["yes","yes"]],["WebP conversion on the fly",["yes","yes"]],["Brotli compression on the fly",["yes","yes"]]]}],footnote:"Feature list reflects the Varnish Enterprise product; trial unlocks the same features for 30 days."},{id:"open-source",name:"Open Source",tagline:"The open-source projects Varnish Software is built on.",source:"https://www.varnish.org/",tiers:[{name:"Varnish Cache",badge:"free",price:"$0",period:"always free",featured:!0,desc:"Community edition of Varnish Cache, supported by the open-source community.",bullets:["Community support via Discord, Reddit, Stack Overflow","No licence required"],cta:{label:"Get Varnish Cache",style:"ghost",href:"https://www.varnish-software.com/resources/support-community/open-source/"}},{name:"Gateway API",badge:"free",price:"$0",period:"always free",desc:"A Kubernetes Gateway API implementation, backed by Varnish.",bullets:["Conformance-tested against the Gateway API test suite","Routing tables update in milliseconds, no VCL compile","Built-in dashboard"],cta:{label:"Get Varnish Gateway",style:"ghost",href:"https://gateway.varnish.org/"}},{name:"TinyKVM",badge:"free",price:"$0",period:"GPL-3.0, dual-licensed",desc:"A slim userspace emulator library for native-performance sandboxing, built on KVM.",bullets:["Runs regular Linux programs at native speed","Execution timeouts and memory limits for safe sandboxing","Forks a program into hundreds of pre-initialized VMs"],cta:{label:"View on GitHub",style:"ghost",href:"https://github.com/varnish/tinykvm"}}],featureGroups:[]}],tabbar=document.getElementById("tabbar"),main=document.getElementById("main");function skelLine(w,h){return`<span class="skel-block" style="width:${w};height:${h||"12px"};"></span>`}function renderTierCard(t){const classes=["tier-card"];t.featured&&classes.push("featured");const badgeLabel={trial:"Free trial",free:"Free",paid:"Paid"}[t.badge]||t.badge,badgeClass=["trial","free","paid"].includes(t.badge)?t.badge:"custom",badgeHTML=t.badge?`<span class="badge ${badgeClass}">${badgeLabel}</span>`:'<span class="skel" style="width:64px;height:18px;border-radius:100px;margin-bottom:14px;"></span>',nameHTML=t.name?`<h3>${t.name}</h3>`:`<h3>${skelLine("70%","17px")}</h3>`,priceHTML=t.price?`<div class="price">${t.price}</div>`:`<div class="price">${skelLine("64px","24px")}</div>`,periodHTML=t.period?`<div class="period">${t.period}</div>`:`<div class="period">${skelLine("50%","11px")}</div>`,descHTML=t.desc?`<div class="desc">${t.desc}</div>`:`<div class="desc">${skelLine("100%","11px")}<div style="height:6px;"></div>${skelLine("76%","11px")}</div>`,ctaHTML=t.cta?t.cta.compact?`<div style="margin-bottom:18px;"><a class="cta cta-compact ${t.cta.style}" href="${t.cta.href||"#"}" target="${t.cta.href&&"#"!==t.cta.href?"_blank":"_self"}" rel="noopener">${t.cta.label}</a></div>`:`<a class="cta ${t.cta.style}" href="${t.cta.href||"#"}" target="${t.cta.href&&"#"!==t.cta.href?"_blank":"_self"}" rel="noopener">${t.cta.label}</a>`:`<div class="cta" style="padding:0;margin-bottom:18px;">${skelLine("100%","38px")}</div>`,mktHTML=t.marketplaces&&t.marketplaces.length?`<div class="mkt-row"><span class="mkt-label">Available on</span>${t.marketplaces.map(m=>`<a class="mkt-pill" href="${m.href}" target="_blank" rel="noopener">${m.name}<span class="ext">â</span></a>`).join("")}</div>`:"";let bulletsHTML;return bulletsHTML=t.bullets&&t.bullets.length?"<ul>"+t.bullets.map(b=>"object"==typeof b?`<li class="sub-head">${b.sub}</li>`:`<li>${b}</li>`).join("")+"</ul>":'<ul class="skel-list">'+[92,68,80].map(w=>`<li>${skelLine(w+"%","10px")}</li>`).join("")+"</ul>",`<div class="${classes.join(" ")}">\n ${badgeHTML}\n ${nameHTML}\n ${priceHTML}\n ${periodHTML}\n ${descHTML}\n ${ctaHTML}\n ${mktHTML}\n ${bulletsHTML}\n </div>`}function selectProduct(id,updateHash){if(document.querySelectorAll(".tab").forEach(t=>t.classList.toggle("active",t.dataset.id===id)),document.querySelectorAll(".product-panel").forEach(p=>p.classList.toggle("active",p.id===id)),updateHash&&history.pushState)try{history.pushState(null,"","#"+id)}catch(e){}}function openFromHash(){const id=window.location.hash.replace("#","");id&&PRODUCTS.some(p=>p.id===id)&&selectProduct(id,!1)}
1PRODUCTS.forEach((p,idx)=>{const tab=document.createElement("a");tab.className="tab"+(0===idx?" active":""),tab.textContent=p.name,tab.href="#"+p.id,tab.dataset.id=p.id,tab.addEventListener("click",e=>{e.preventDefault(),selectProduct(p.id,!0)}),tabbar.appendChild(tab);const panel=document.createElement("section");panel.className="product-panel"+(0===idx?" active":""),panel.id=p.id;let html=`\n <div class="product-head">\n <h2>${p.name}</h2>\n <p class="tagline">${p.tagline}</p>\n ${p.source?`<div class="source-note"><a href="${p.source}" target="_blank" rel="noopener">Product page â</a></div>`:""}\n </div>\n `;const tiersStyle=1===p.tiers.length?' style="max-width:calc(50% - 8px);"':"";var b,steps;html+=`<div class="tiers"${tiersStyle}>`+p.tiers.map(renderTierCard).join("")+"</div>",p.partnerBanner&&(html+=`<div class="partner-banner">\n <div class="eyebrow">${(b=p.partnerBanner).eyebrow}</div>\n <h3>${b.title}</h3>\n ${b.exampleTag?`<div class="example-tag">${b.exampleTag}</div>`:""}\n <p class="desc">${b.desc}</p>\n <div class="partner-tracks">\n ${b.tracks.map(t=>`<div class="partner-track"><h4>${t.title}</h4><p>${t.body}</p></div>`).join("")}\n </div>\n <div class="partner-features"><strong>${b.featuresLabel||"Feature set:"}</strong> ${b.features}</div>\n <div class="cta-row">\n <a class="partner-cta" href="${b.cta.href}" target="${"#"===b.cta.href||b.cta.href.startsWith("#")?"_self":"_blank"}" rel="noopener">${b.cta.label}</a>\n ${b.source?`<a class="partner-source-link" href="${b.source}" target="_blank" rel="noopener">Product page â</a>`:""}\n </div>\n </div>`),p.engagementModel&&(p.processIntro&&(html+=`<p class="lead">${p.processIntro}</p>`),html+=`<div class="engagement" style="grid-template-columns:repeat(${(steps=p.engagementModel).length}, 1fr);">${steps.map(s=>`\n <div class="step" style="background:${s.bg}; color:${s.fg};">\n <div class="n">${s.n}</div>\n <h4>${s.title}</h4>\n <p>${s.tagline}</p>\n </div>\n `).join("")}</div>`);if(p.featureGroups&&p.featureGroups.length>0){const groups=p.featureGroups,headers=p.twoColHeaders||p.tiers.map(t=>t.name),colCount=headers.length;html+=`<div class="compare"><h4>Feature comparison</h4><table class="feature-table"><thead><tr><th>Feature</th>${headers.map(h=>`<th>${function(h){return h||'<span class="skel" style="width:56px;"></span>'}(h)}</th>`).join("")}</tr></thead><tbody>`,groups.forEach(g=>{g.title&&(html+=`<tr class="group-row"><td colspan="${colCount+1}">${g.title}</td></tr>`),g.rows.forEach(row=>{const[label,values,desc]=row,labelHTML=label||skelLine("60%","10px");html+=`<tr><td>${labelHTML}${desc?`<div class="row-desc">${desc}</div>`:""}</td>${values.map(v=>{return`<td>${val=v,"yes"===val?'<span class="yes">â</span>':"no"===val?'<span class="no">â</span>':"addon"===val?'<span class="addon">Add-on</span>':val||'<span class="skel" style="width:28px;margin:0 auto;"></span>'}</td>`;var val}).join("")}</tr>`})}),html+="</tbody></table></div>"}p.footnote&&(html+=`<div class="footnote">${p.footnote}</div>`),panel.innerHTML=html,main.appendChild(panel)}),window.addEventListener("hashchange",openFromHash),openFromHash(),main.addEventListener("click",e=>{const link=e.target&&e.target.closest?e.target.closest('a.partner-cta[href^="#"]'):null;if(!link)return;const id=link.getAttribute("href").slice(1);if(!id||!PRODUCTS.some(p=>p.id===id))return;e.preventDefault(),selectProduct(id,!0);const top=document.querySelector(".tabbar-wrap");top&&top.scrollIntoView({behavior:"smooth",block:"start"})})}(); 2//# sourceURL=https://209523.fs1.hubspotusercontent-na1.net/hubfs/209523/hub_generated/module_assets/1/221957206910/1789766050342/module_Pricing_test.js
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.