{"id":51324732,"url":"https://github.com/webdevtodayjason/vrambudget","last_synced_at":"2026-07-01T17:03:54.158Z","repository":{"id":359343586,"uuid":"1245203106","full_name":"webdevtodayjason/vrambudget","owner":"webdevtodayjason","description":"vrambudget.com — what LLM fits my hardware? VRAM math + 40 GPUs + 20 models + AVL L3","archived":false,"fork":false,"pushed_at":"2026-05-21T21:35:03.000Z","size":874,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-05T07:18:49.616Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/webdevtodayjason.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-21T02:25:44.000Z","updated_at":"2026-05-26T03:01:12.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/webdevtodayjason/vrambudget","commit_stats":null,"previous_names":["webdevtodayjason/vrambudget"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/webdevtodayjason/vrambudget","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webdevtodayjason%2Fvrambudget","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webdevtodayjason%2Fvrambudget/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webdevtodayjason%2Fvrambudget/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webdevtodayjason%2Fvrambudget/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/webdevtodayjason","download_url":"https://codeload.github.com/webdevtodayjason/vrambudget/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webdevtodayjason%2Fvrambudget/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35015061,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-01T02:00:05.325Z","response_time":130,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-07-01T17:03:53.485Z","updated_at":"2026-07-01T17:03:54.153Z","avatar_url":"https://github.com/webdevtodayjason.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"public/og-card.png\" alt=\"vrambudget: What LLM fits my hardware? VRAM ~= params × (bits ÷ 8)\" width=\"100%\" /\u003e\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n  ![License](https://img.shields.io/github/license/webdevtodayjason/vrambudget?color=FFA947\u0026style=flat-square)\n  ![Stars](https://img.shields.io/github/stars/webdevtodayjason/vrambudget?color=FFA947\u0026style=flat-square)\n  ![Last commit](https://img.shields.io/github/last-commit/webdevtodayjason/vrambudget?color=FFA947\u0026style=flat-square)\n  ![Discussions](https://img.shields.io/github/discussions/webdevtodayjason/vrambudget?color=FFA947\u0026style=flat-square)\n  ![Issues](https://img.shields.io/github/issues/webdevtodayjason/vrambudget?color=FFA947\u0026style=flat-square)\n  ![AVL L3](https://img.shields.io/badge/AVL-L3%20conformant-FFA947?style=flat-square)\n\n  **What LLM fits my hardware?**\n\n  The math behind local LLM memory budgets. Plug in a GPU and a context length; see what's actually left for weights after the KV cache, runtime overhead, and a safety margin.\n\n  [Live site](https://vrambudget.com) · [Run the calculator](https://vrambudget.com/calc) · [Read the math](https://vrambudget.com/the-math) · [Join the discussion](https://github.com/webdevtodayjason/vrambudget/discussions)\n\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\n\u003ctable align=\"center\"\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" width=\"160\"\u003e\n      \u003ch2\u003e\u003ccode\u003e40\u003c/code\u003e\u003c/h2\u003e\n      \u003csub\u003eGPU presets\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" width=\"160\"\u003e\n      \u003ch2\u003e\u003ccode\u003e20\u003c/code\u003e\u003c/h2\u003e\n      \u003csub\u003ecurated models\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" width=\"160\"\u003e\n      \u003ch2\u003e\u003ccode\u003e9\u003c/code\u003e\u003c/h2\u003e\n      \u003csub\u003equant formats\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" width=\"160\"\u003e\n      \u003ch2\u003e\u003ccode\u003e64\u003c/code\u003e\u003c/h2\u003e\n      \u003csub\u003eagent-readable routes\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" width=\"160\"\u003e\n      \u003ch2\u003e\u003ccode\u003eMIT\u003c/code\u003e\u003c/h2\u003e\n      \u003csub\u003eopen source\u003c/sub\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003cbr /\u003e\n\n## The thesis\n\nEvery \"can I run this LLM\" tool lists models and calls it done. They show a green checkmark next to a 70B on a 24GB card and hope you don't ask why. vrambudget skips the magic. There is one formula and three taxes:\n\n```\nVRAM ~= params × (bits ÷ 8)\n```\n\nThat's the floor. Everything else is overhead.\n\n```\nweights_budget = total_vram × (1 − safety)\n                 − kv_cache × concurrency\n                 − framework_overhead\n```\n\nThree subtractions and one multiplication. Anyone telling you it needs to be more complicated is selling you something.\n\n## How to use the calculator\n\nThe calculator is on the home page. Five sliders, four tiles, one bar, three tabs.\n\n### 1. Pick a GPU\n\nAcross the top of the calculator: eight family tabs (RTX 50, RTX 40, RTX 30, Apple Silicon, Workstation, Datacenter, AMD, Intel). Each tab reveals every card in that family. Click a card to lock the calculator to its stock VRAM.\n\nFor a long-form view of every GPU at once, visit [/gpu](https://vrambudget.com/gpu).\n\n### 2. Tune the four sliders\n\n| Slider | What it does |\n|---|---|\n| **VRAM** | Total memory on the card. Auto-set from your GPU choice; override freely. |\n| **System RAM** | Reserved for future model-split workflows. Not currently in the math. |\n| **Context** | Token window. 8K is conservative; 32K and 128K make KV cache the dominant tax. |\n| **Concurrency** | How many requests serve in parallel. Each one gets its own KV cache. |\n| **Safety headroom** | Percentage of VRAM you refuse to spend. 15 percent is a sane default. |\n\n### 3. Read the four tiles\n\n- **Total VRAM** — device capacity\n- **KV cache** — what the context-tax costs you\n- **Runtime overhead** — CUDA / kernels / allocator slack\n- **Weights budget** — what's actually left for the model\n\nThe orange tile is the answer. The budget bar below shows the four pieces stacked so you can see where the VRAM went.\n\n### 4. Find a model\n\nThree tabs below the bar:\n\n- **Curated picks** — the 30 catalog models, grouped by fit (fits / tight / over). Each row picks the highest-bit quantization that fits your budget. Click any model name to open its Hugging Face repo.\n- **Search Hugging Face** — live search across HF's GGUF-tagged models. Type a name; results render with the same fit classification keyed to your current budget.\n- **By size** — drag a params slider; see all nine quants in a 3×3 matrix with the size and fit class for each.\n\n### 5. Drill into a card or a model\n\nEvery GPU card in the grid has a `↗` link to its detail page. Each detail page pre-binds the calculator to that card, plus a fit table of the top 12 models, plus four \"compare to\" cards for stepping up or down by VRAM.\n\nSame for models: every model name links to `/model/\u003cslug\u003e` with the GPU-recommendation matrix across five quants.\n\n## What's in the catalogs\n\n### GPUs (40)\n\n`RTX 50`: 5070 · 5070 Ti · 5080 · 5090\n`RTX 40`: 4060 · 4060 Ti 16GB · 4070 · 4070 Super · 4070 Ti Super · 4080 · 4080 Super · 4090\n`RTX 30`: 3060 · 3070 · 3080 · 3080 Ti · 3090 · 3090 Ti\n`Apple Silicon`: M2 Max 64 · M2 Ultra 192 · M3 Max 64 · M3 Max 96 · M3 Ultra 512 · M4 Pro 64 · M4 Max 128 · M5 Pro 64 · M5 Max 128\n`Workstation`: A6000 · RTX 6000 Ada · RTX Pro 6000 · L40S\n`Datacenter`: H100 80GB · H200 · B200 · DGX Spark · 2× H100 NVL\n`AMD`: RX 7900 XTX · W7900 · MI300X\n`Intel`: Arc B580 · Arc Pro B60 · Gaudi 3\n\n### Models (30 curated, refreshed 2026-05)\n\n`Meta`: Llama 3.2 1B · Llama 3.2 3B · Llama 3.1 8B · Llama 3.3 70B · Llama 3.1 405B\n`Alibaba`: Qwen 2.5 7B · Qwen 2.5 32B · Qwen 2.5 Coder 32B · Qwen 2.5 72B · Qwen3 30B A3B · Qwen 3.5 9B · Qwen 3.6 27B · Qwen 3.6 35B A3B\n`OpenAI`: gpt-oss 20B · gpt-oss 120B\n`Mistral`: Mistral 7B v0.3 · Mistral Small 3 · Mixtral 8x7B · Mixtral 8x22B\n`Microsoft`: Phi-4 Mini · Phi-4\n`Google`: Gemma 2 9B · Gemma 4 E4B · Gemma 4 26B A4B\n`DeepSeek`: DeepSeek V3 · DeepSeek R1\n`Cohere`: Command R+\n`IBM`: Granite 8B Code\n`BigCode`: StarCoder2 15B\n`01.AI`: Yi 34B\n\n### Quantization formats (9)\n\n`FP16/BF16` · `FP8/INT8` · `Q8_0` · `Q6_K` · `Q5_K_M` · `Q4_K_M` · `Q3_K_M` · `AWQ` · `GPTQ`\n\n### LLM hosting runtimes (5)\n\n`Cross-platform`: Ollama · LM Studio\n`Apple Silicon`: MLX · oMLX\n`Server`: vLLM\n\n## Keeping the catalog fresh\n\nLLMs ship faster than any curated list can keep up. vrambudget runs three feedback loops at once:\n\n1. **Editorial curation** of `src/lib/models.ts` (~quarterly). The pinned list is canonical orgs only: `meta-llama`, `Qwen`, `openai`, `mistralai`, `microsoft`, `google`, `deepseek-ai`, `ibm-granite`, `bigcode`, `01-ai`, `CohereForAI`. Each entry carries a `releaseQuarter` so it's obvious what's stale. Forks, distills, and uncensored remixes belong on Hugging Face, not here.\n\n2. **Live \"Search Hugging Face\" tab** in the calculator. Calls `https://huggingface.co/api/models?search=\u003cq\u003e\u0026filter=gguf\u0026sort=downloads` directly from the browser. Always current; classifies each result against your VRAM budget on the fly.\n\n3. **Build-time HF enrichment** (Phase 2, not shipped yet). A `scripts/refresh-hf-stats.ts` will fetch `downloads`, `likes`, and `last_modified` for every curated `hfRepo` at build, write the result into `data/hf-stats.json`, and surface it on each model detail page. Entries below a download threshold will get a build warning so they get reviewed in the next editorial pass.\n\n**How to propose a new model:**\n\n1. Confirm it's canonical (an official org repo, not a community quant)\n2. Open a PR to `src/lib/models.ts` with `slug`, `name`, `hfRepo`, `params`, `family`, `type`, `contextK`, `fp16GB`, `summary`, `releaseQuarter`\n3. If MoE, set `activeParams` to active-per-forward-pass count\n4. CI runs `pnpm build` to validate the static export still emits cleanly\n\n## Agent View Layer (AVL)\n\nEvery page on vrambudget ships a parallel agent-readable view at `\u003croute\u003e.agent` (e.g. [`/gpu/rtx-4090.agent`](https://vrambudget.com/gpu/rtx-4090.agent)). The view is TOON-encoded and includes `@meta`, `@intent`, `@state`, `@actions`, `@context`, and `@nav` sections per the [AVL L3 conformance spec](https://agentviewlayer.org). The full manifest lives at [/agent.txt](https://vrambudget.com/agent.txt).\n\nBuilt with [@frontier-infra/avl](https://github.com/frontier-infra/avl).\n\n## Local development\n\n```bash\npnpm install\npnpm dev          # localhost:3000, hot reload\npnpm typecheck    # tsc --noEmit\npnpm build        # static export to out/, plus postbuild AVL emitter\npnpm start        # serve out/ on $PORT (default 3000)\n```\n\n`out/` after build contains:\n\n- 64 route HTMLs (home, the-math, /gpu, /model, 40 GPU detail, 20 model detail)\n- 64 `.agent` companion files\n- `agent.txt`, `sitemap.xml`, `robots.txt`\n- 61 OG image PNGs, favicon SVG, apple-touch-icon\n- Static assets and font bundles\n\n## Deploy\n\nThe project is wired for **Railway** out of the box. `railway.toml` pins Node 22 + pnpm 9 and configures Nixpacks with explicit build/start commands and a `/` healthcheck.\n\nWorks on any static host: Cloudflare Pages, Vercel, Netlify, S3+CloudFront, GitHub Pages, plain nginx. Just point at `out/`.\n\n## Stack\n\n- [Next.js 15](https://nextjs.org) (App Router, static export)\n- [TypeScript 5](https://www.typescriptlang.org)\n- [React 18](https://react.dev)\n- [pnpm 9](https://pnpm.io)\n- Vanilla CSS · [Geist](https://vercel.com/font) + [JetBrains Mono](https://www.jetbrains.com/lp/mono/)\n- [@frontier-infra/avl](https://github.com/frontier-infra/avl) for the parallel agent views\n- [Playwright](https://playwright.dev) for end-to-end browser verification\n\n## Roadmap\n\n- **Phase 2: Runtime badges.** Per-model compatibility badges for Ollama, LM Studio, vLLM, and MLX with one-click install commands.\n- **Build-time HF enrichment.** Pull download counts, license, and architecture from the HF Hub API at build so curated cards show context beyond what the slug carries.\n- **Per-model architecture.** Replace the 13B reference for KV cache with per-model GQA / MQA + head dimensions for tighter estimates.\n- **Tokens-per-second.** Bandwidth-based throughput estimates next to the fit pills.\n- **Cloud comparison.** This model on your machine vs OpenRouter pricing for the equivalent.\n\nSee [issues](https://github.com/webdevtodayjason/vrambudget/issues) for the live list.\n\n## Contributing\n\nOpen a PR. Two soft rules:\n\n- **No em dashes** in new copy. Colons, periods, semicolons.\n- **Numbers in monospace.** VRAM, params, GB, percentages.\n\n## About the builder\n\nBuilt by **Jason Brashear**. MSP owner, AI application developer, and 30-year IT veteran out of Texas.\n\n- Personal site: [jasonbrashear.com](https://jasonbrashear.com/)\n- Substack: [jasonbrashear.substack.com](https://jasonbrashear.substack.com/)\n- Medium: [@jason_81067](https://medium.com/@jason_81067)\n- Dev.to: [@webdevtodayjason](https://dev.to/webdevtodayjason)\n- X: [@argentAIOS](https://x.com/argentAIOS)\n- GitHub: [@webdevtodayjason](https://github.com/webdevtodayjason)\n\n## License\n\nMIT. See [LICENSE](LICENSE). Use it however you want.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwebdevtodayjason%2Fvrambudget","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwebdevtodayjason%2Fvrambudget","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwebdevtodayjason%2Fvrambudget/lists"}