Cloud GPU price-comparison site with Flatkey as its preferred commercial recommendation. The site is branded RackRate through NEXT_PUBLIC_SITE_NAME; the brand and final domain can be changed without touching page code.
- Filterable GPU-offer table by GPU, provider, region, availability, and rental type
- Indexable GPU and provider detail pages
- Transparent methodology page
- Sitemap and robots metadata
- Standalone Next.js build and Docker image
- Versioned dataset with source links, observation dates, and a fail-closed official-page collector
- Flatkey appears first in the provider directory, with a service profile and quote-request CTAs carrying per-page UTM attribution
- Sourced offer rows remain sorted by price; Flatkey has no invented price or inventory records
RunPod, Hyperstack, Nebius, and Lambda prices are refreshed from their official pricing pages every six hours. Vast.ai refreshes through its official search API when the VAST_API_KEY GitHub Actions secret is present; without it, dated Vast.ai records remain references. AWS remains a reference until a read-only identity with pricing:GetProducts is configured and region-complete validation is implemented. The workflow validates each parser, typechecks, and builds before committing a new dataset; a source-layout change fails without replacing the last-known-good file.
Each successful refresh also appends a compact snapshot to data/price-history.json. The archive retains 180 days of normalized hourly price, availability, and source-status values so future trend pages can be built from auditable data rather than reconstructed estimates.
bun install
bun run devOpen http://localhost:3000.
bun run typecheck
bun run build
PORT=3000 node .next/standalone/server.jsOr build and run the included Dockerfile.
Copy .env.example to .env.local and set:
NEXT_PUBLIC_SITE_URL: canonical production originNEXT_PUBLIC_SITE_NAME: final public brandNEXT_PUBLIC_FLATKEY_WEBSITE_URL: request-based Compute service overview (defaults tohttps://flatkey.ai/compute); current quote CTAs use this pageNEXT_PUBLIC_FLATKEY_COMPUTE_URL: console entry, reserved for console-specific links (defaults tohttps://console.flatkey.ai/compute/market)
Keep immutable GPU specifications separate from time-series offers. Each production offer should preserve its provider SKU, source currency, billing unit, original total price, normalized USD/GPU-hour, availability status, source URL, and observation time.
bun run data:refresh
bun run test
bun run typecheck
bun run buildThe generated file is data/offers.json. Collector code is intentionally public under scripts/ so every published number can be reproduced and reviewed.
See DATA.md for the freshness, normalization, and failure policy.
MIT
RackRate uses GA4 only. Set NEXT_PUBLIC_GA4_MEASUREMENT_ID to the web stream ID (G-...) before building; Next.js embeds public environment variables at build time. Analytics is loaded only after the visitor grants analytics consent. Events include page_view, price_filter_changed, flatkey_console_clicked, flatkey_website_clicked, and external_source_clicked. No Mixpanel requests are sent. Page URLs retain campaign parameters but exclude search text and other query parameters. Enhanced Measurement is disabled for this stream; the application sends page views, filter changes, and external-link events itself. Measurement ID: G-PP87NKBGK5.