{"_id":"@buzzie-ai/jannal","_rev":"5-db8a2c04af8622e160f67a1e890ce748","name":"@buzzie-ai/jannal","dist-tags":{"latest":"0.7.0"},"versions":{"0.3.0":{"name":"@buzzie-ai/jannal","version":"0.3.0","keywords":["llm","context-window","proxy","anthropic","claude","token-optimization","inspector","developer-tools"],"author":{"name":"Arvind Naidu"},"license":"MIT","_id":"@buzzie-ai/jannal@0.3.0","maintainers":[{"name":"buzzie","email":"arvind.raj.naidu@gmail.com"}],"homepage":"https://github.com/Buzzie-AI/jannal#readme","bugs":{"url":"https://github.com/Buzzie-AI/jannal/issues"},"bin":{"jannal":"bin/jannal.js"},"dist":{"shasum":"f7d2dc00b00e4b2e129ce9d489c7145c374b24bf","tarball":"https://registry.npmjs.org/@buzzie-ai/jannal/-/jannal-0.3.0.tgz","fileCount":13,"integrity":"sha512-tlUBohOTe1TSrWJajMzBgLofiMrcl+BxwMEoK3pRGpZqzoXClEHM5Up6gz+E7Iibs8bh62mloaZDfSEdPPhjCg==","signatures":[{"sig":"MEYCIQC4R3u13ims0sFyoE6augJJYMRtmWNG4aPyL1XxpmHfVgIhAMkd5LmqkZDVClJSu1ntTyGN/nGc8YN2YscH1IOXJDJK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@buzzie-ai%2fjannal@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":303115},"main":"server.js","engines":{"node":">=18.0.0"},"exports":{".":"./server.js"},"gitHead":"8844be61f124ee0bf8d6ffd222daa357c503a807","scripts":{"test":"node --test test/session-hash.test.js","build":"vite build","start":"node server.js","dev:ui":"vite","preview":"vite preview","dev:server":"node server.js"},"_npmUser":{"name":"buzzie","email":"arvind.raj.naidu@gmail.com"},"repository":{"url":"git+https://github.com/Buzzie-AI/jannal.git","type":"git"},"_npmVersion":"10.8.2","description":"Intercept, visualize, and optimize LLM context windows. Proxy that sits between your AI tools and the Anthropic API.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"ws":"^8.16.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/jannal_0.3.0_1773694894899_0.9446129809328803","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@buzzie-ai/jannal","version":"0.4.0","keywords":["llm","context-window","proxy","anthropic","claude","token-optimization","inspector","developer-tools"],"author":{"name":"Arvind Naidu"},"license":"MIT","_id":"@buzzie-ai/jannal@0.4.0","maintainers":[{"name":"buzzie","email":"arvind.raj.naidu@gmail.com"}],"homepage":"https://github.com/Buzzie-AI/jannal#readme","bugs":{"url":"https://github.com/Buzzie-AI/jannal/issues"},"bin":{"jannal":"bin/jannal.js"},"dist":{"shasum":"00440566a84a90d8a5e0efe1409a704855d45ee4","tarball":"https://registry.npmjs.org/@buzzie-ai/jannal/-/jannal-0.4.0.tgz","fileCount":14,"integrity":"sha512-vDllsTeon51X/xt0suWKulzuD1vUlwGJY7jputCOidvGXQgqaDgPGcpGuGJ8030Klit7yPOT9gIso1gQLMhTkQ==","signatures":[{"sig":"MEUCIQCL05hH2Hm5dqOPbKOhhAdqJjztHpl9wIhaMjhbR1YkuwIgdZJOYR1Ykyc0nl4nPYtArHnXutOjIGZFHA5Dg6UlaVY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":308607},"main":"server.js","engines":{"node":">=18.0.0"},"exports":{".":"./server.js"},"gitHead":"afed8c3aa4a0d0f22218b0754b5001b5619df603","scripts":{"dev":"vite","test":"node --test test/session-hash.test.js","build":"vite build","start":"node server.js","dev:ui":"vite","preview":"vite preview","dev:server":"node server.js"},"_npmUser":{"name":"buzzie","email":"arvind.raj.naidu@gmail.com"},"repository":{"url":"git+https://github.com/Buzzie-AI/jannal.git","type":"git"},"_npmVersion":"10.8.2","description":"Intercept, visualize, and optimize LLM context windows. Proxy that sits between your AI tools and the Anthropic API.","directories":{},"_nodeVersion":"20.19.4","dependencies":{"ws":"^8.16.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/jannal_0.4.0_1774638408695_0.240670732198768","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@buzzie-ai/jannal","version":"0.5.0","keywords":["llm","context-window","proxy","anthropic","claude","token-optimization","inspector","developer-tools"],"author":{"name":"Arvind Naidu"},"license":"MIT","_id":"@buzzie-ai/jannal@0.5.0","maintainers":[{"name":"buzzie","email":"arvind.raj.naidu@gmail.com"}],"homepage":"https://github.com/Buzzie-AI/jannal#readme","bugs":{"url":"https://github.com/Buzzie-AI/jannal/issues"},"bin":{"jannal":"bin/jannal.js"},"dist":{"shasum":"dfbb3ab3f12160829460ccac5f80855c77359171","tarball":"https://registry.npmjs.org/@buzzie-ai/jannal/-/jannal-0.5.0.tgz","fileCount":14,"integrity":"sha512-TMHjPMIeUT/Nj+dO6OmceWvBZ/1D8vuFoCMVK9ULN4iwq1uJYRCKkpoF6UfTkzThFSy2x/ksgJaJEuImyZerkQ==","signatures":[{"sig":"MEYCIQCdAgAyL3jX9953UgTq3H0w54xxjJp/fHF1hglzPaKn/wIhAPIphJPDTrwvEkn6xMWrP7jbkKG1NaFZogpR3mGxVT/O","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":327323},"main":"server.js","engines":{"node":">=18.0.0"},"exports":{".":"./server.js"},"gitHead":"bca89b98b68b23439648a098596a2627c9b51932","scripts":{"dev":"vite","test":"node --test test/session-hash.test.js","build":"vite build","start":"node server.js","dev:ui":"vite","preview":"vite preview","dev:server":"node server.js"},"_npmUser":{"name":"buzzie","email":"arvind.raj.naidu@gmail.com"},"repository":{"url":"git+https://github.com/Buzzie-AI/jannal.git","type":"git"},"_npmVersion":"10.8.2","description":"Intercept, visualize, and optimize LLM context windows. Proxy that sits between your AI tools and the Anthropic API.","directories":{},"_nodeVersion":"20.19.4","dependencies":{"ws":"^8.16.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/jannal_0.5.0_1774804135130_0.48919230623606746","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@buzzie-ai/jannal","version":"0.6.0","keywords":["llm","context-window","proxy","anthropic","claude","token-optimization","inspector","developer-tools"],"author":{"name":"Arvind Naidu"},"license":"MIT","_id":"@buzzie-ai/jannal@0.6.0","maintainers":[{"name":"buzzie","email":"arvind.raj.naidu@gmail.com"}],"homepage":"https://github.com/Buzzie-AI/jannal#readme","bugs":{"url":"https://github.com/Buzzie-AI/jannal/issues"},"bin":{"jannal":"bin/jannal.js"},"dist":{"shasum":"3a529b852691904571042da75c7a5f36b2fed9d4","tarball":"https://registry.npmjs.org/@buzzie-ai/jannal/-/jannal-0.6.0.tgz","fileCount":14,"integrity":"sha512-ZlOGTFbgagngLaSCLTSnHuL/lIZMlo/iz4TCsMrZAsEqy1tLTzo2arz+wlOcpYnSCnTmJBf/XNHSev6P2Dpclw==","signatures":[{"sig":"MEUCIQCJEfisZ6qPCcQJP9b18sn3Uc/7NxBOJcID87urJ83RpAIgPmoL5Vxbzra8SZh9Ih74hTJK0wA0gx7CSon8bn9DKuI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":324511},"main":"server.js","engines":{"node":">=18.0.0"},"exports":{".":"./server.js"},"gitHead":"cdc8e46e3e8996158d1292f98e09ac11df3e0041","scripts":{"dev":"vite","test":"node --test test/session-hash.test.js","build":"vite build","start":"node server.js","dev:ui":"vite","preview":"vite preview","dev:server":"node server.js"},"_npmUser":{"name":"buzzie","email":"arvind.raj.naidu@gmail.com"},"repository":{"url":"git+https://github.com/Buzzie-AI/jannal.git","type":"git"},"_npmVersion":"10.8.2","description":"Intercept, visualize, and optimize LLM context windows. Proxy that sits between your AI tools and the Anthropic API.","directories":{},"_nodeVersion":"20.19.4","dependencies":{"ws":"^8.16.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/jannal_0.6.0_1774842165489_0.9085164695981018","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"_id":"@buzzie-ai/jannal@0.7.0","bin":{"jannal":"bin/jannal.js"},"bugs":{"url":"https://github.com/Buzzie-AI/jannal/issues"},"dist":{"shasum":"27859edab21362c149f312160d8419e9e1515a04","tarball":"https://registry.npmjs.org/@buzzie-ai/jannal/-/jannal-0.7.0.tgz","fileCount":13,"integrity":"sha512-EH/CjMLYsn9+RcrLbvLXHbk8553IeXGCezuolxCOZ8ZOo+UKyoq0T1/3ZF3ZgpoxsKtx6l0vYpLs/W/538nX2w==","signatures":[{"sig":"MEYCIQCwRTNNXoMUlQZ7T1mB5suYXVztH2ii6bw43Ba4LtyefgIhAL/qXcgoGSfIm1pCBubd5ANijjd+UihCkIyHh/SQ7fXP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDIMnE6I/+rhqkp4absypJACytkF/s2wR2418C1Yq2gwwIhAOsPosRGNd7vGS9z+JjTqCLGGZQASm9eiZzrC8owUbgw"}],"unpackedSize":349171},"main":"server.js","name":"@buzzie-ai/jannal","author":{"name":"Arvind Naidu"},"engines":{"node":">=18.0.0"},"exports":{".":"./server.js"},"gitHead":"5e1566a7b880e2657994e72e3a74aff64a90dacd","license":"MIT","scripts":{"dev":"vite","test":"node --test test/session-hash.test.js","build":"vite build","start":"node server.js","dev:ui":"vite","preview":"vite preview","dev:server":"node server.js"},"version":"0.7.0","_npmUser":{"name":"buzzie","email":"arvind.raj.naidu@gmail.com"},"homepage":"https://github.com/Buzzie-AI/jannal#readme","keywords":["llm","context-window","proxy","anthropic","claude","token-optimization","inspector","developer-tools"],"repository":{"url":"git+https://github.com/Buzzie-AI/jannal.git","type":"git"},"_npmVersion":"10.9.4","description":"Intercept, visualize, and optimize LLM context windows. Proxy that sits between your AI tools and the Anthropic API.","directories":{},"maintainers":[{"name":"buzzie","email":"arvind.raj.naidu@gmail.com"}],"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.16.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/jannal_0.7.0_1790796251021_0.8170715829249686"}}},"time":{"created":"2026-03-16T21:01:34.821Z","modified":"2026-09-30T19:24:11.350Z","0.3.0":"2026-03-16T21:01:35.152Z","0.4.0":"2026-03-27T19:06:48.865Z","0.5.0":"2026-03-29T17:08:55.335Z","0.6.0":"2026-03-30T03:42:45.629Z","0.7.0":"2026-09-30T19:24:11.122Z"},"bugs":{"url":"https://github.com/Buzzie-AI/jannal/issues"},"author":{"name":"Arvind Naidu"},"license":"MIT","homepage":"https://github.com/Buzzie-AI/jannal#readme","keywords":["llm","context-window","proxy","anthropic","claude","token-optimization","inspector","developer-tools"],"repository":{"url":"git+https://github.com/Buzzie-AI/jannal.git","type":"git"},"description":"Intercept, visualize, and optimize LLM context windows. Proxy that sits between your AI tools and the Anthropic API.","maintainers":[{"name":"buzzie","email":"arvind.raj.naidu@gmail.com"}],"readme":"# Jannal\n\n**/jun-nul/** — Tamil for \"window\".\n\n**See what's eating your usage limits. Then fix it.**\n\nJannal sits between your AI tools and the Anthropic API. It intercepts every request, visualizes how your context window is being used, and lets you filter out tools you don't need — saving tokens and money.\n\nWorks with Claude Code and any tool that speaks the Anthropic Messages API. [Cursor support is pending](#cursor-support).\n\n![License](https://img.shields.io/badge/license-MIT-blue)\n\n<div style=\"font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, sans-serif; border: 1px solid rgb(224, 224, 224); border-radius: 12px; padding: 20px; max-width: 500px; background: rgb(255, 255, 255); box-shadow: rgba(0, 0, 0, 0.05) 0px 2px 8px;\"><div style=\"display: flex; align-items: center; gap: 12px; margin-bottom: 12px;\"><img alt=\"Jannal - Your Context Window Manager\" src=\"https://ph-files.imgix.net/846c7051-ed8a-482e-8e9e-486d9305c5c3.png?auto=format&amp;fit=crop&amp;w=80&amp;h=80\" style=\"width: 64px; height: 64px; border-radius: 8px; object-fit: cover; flex-shrink: 0;\"><div style=\"flex: 1 1 0%; min-width: 0px;\"><h3 style=\"margin: 0px; font-size: 18px; font-weight: 600; color: rgb(26, 26, 26); line-height: 1.3; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;\">Jannal - Your Context Window Manager</h3><p style=\"margin: 4px 0px 0px; font-size: 14px; color: rgb(102, 102, 102); line-height: 1.4; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;\">See what's eating your context window. Then fix it.</p></div></div><a href=\"https://www.producthunt.com/products/jannal-your-context-window-manager?embed=true&amp;utm_source=embed&amp;utm_medium=post_embed\" target=\"_blank\" rel=\"noopener\" style=\"display: inline-flex; align-items: center; gap: 4px; margin-top: 12px; padding: 8px 16px; background: rgb(255, 97, 84); color: rgb(255, 255, 255); text-decoration: none; border-radius: 8px; font-size: 14px; font-weight: 600;\">Check it out on Product Hunt →</a></div>\n\n## Quick start\n\n```bash\nnpx @buzzie-ai/jannal\n```\n\nOr install and run manually:\n\n```bash\ngit clone https://github.com/Buzzie-AI/jannal.git\ncd jannal\nnpm install\nnpm run build\nnpm start\n```\n\nThen start your AI tool pointing at the proxy:\n\n```bash\n# Claude Code\nANTHROPIC_BASE_URL=http://localhost:4455 claude\n\n# Or any tool that supports ANTHROPIC_BASE_URL\nANTHROPIC_BASE_URL=http://localhost:4455 your-tool\n```\n\nOpen `http://localhost:4455` in your browser to see the Inspector.\n\n[![Watch the demo](docs/jannal-demo.gif)](https://youtu.be/AI1q4yKAxV8)\n\n## Screenshots\n\n![Segment breakdown](screenshots/segment-breakdown.png)\n![Tools modal](screenshots/tools-modal.png)\n\n## What it does\n\n**Inspect** — Watch every API request in real time. See exactly how many tokens go to the system prompt, tool definitions, conversation history, and tool results. The context bar shows you at a glance where your tokens are going.\n\n**Cost tracking** — See the cost of every turn, with per-model pricing (Opus, Sonnet, Haiku). Session cost accumulates in the header so you always know what you're spending. Uses the official `count_tokens` API for accurate counts before the response even finishes.\n\n**Filter tools** — The killer feature. If you're running Claude Code with 40+ MCP tools defined, half of them are probably irrelevant to what you're doing right now. Jannal strips them from the request before it hits the API. Create named profiles (\"Coding Only\", \"Browser Automation\") and switch between them from the UI.\n\n## How it works\n\n```\nYour AI Tool  →  Jannal (localhost:4455)  →  api.anthropic.com\n                      ↓\n              Inspector UI (browser)\n```\n\nThe proxy is transparent. It forwards requests to Anthropic and pipes responses back. The only modification it makes is tool filtering when you have an active profile.\n\nYour API key passes through the proxy in the request headers — it's never stored or logged. The proxy runs entirely on your machine.\n\n## Features\n\n### Context bar\nA visual breakdown of every segment in the context window. System prompt, tools, messages, tool results — each gets a colored block proportional to its token count. Pressure indicators glow when you're approaching the context limit.\n\n### Turn timeline\nEvery API request appears as a turn in the left panel. Click one to see its full segment breakdown. Tokens, costs, and model info at a glance.\n\n### Full content modal\nClick any segment to see its complete content — system prompts, tool definitions with full JSON schemas, message text. Search, copy, and switch between formatted and raw views.\n\n### Tool filtering profiles\nOpen the Tools segment, uncheck the tools you don't need, save as a named profile. Profiles persist across restarts (stored in `profiles.json`). Switch profiles from the header dropdown. An orange \"FILTERING\" badge reminds you when filtering is active.\n\n**Tool grouping by MCP server** — Tools are grouped by inferred MCP server (e.g. `github`, `filesystem`). Enable or disable an entire server at once with per-group All/None buttons.\n\n### Accurate token counting\nThree phases: instant char-based estimates, then exact counts via the `count_tokens` API (free, fires in parallel), then ground truth from the response. Per-segment breakdowns are proportionally scaled when exact totals arrive.\n\n### Cost per turn\nPricing for all Claude models, updated to current rates. See input cost, output cost, and total per turn. Session cost accumulates in the header.\n\n### Session export & persistence\nExport your session as **JSON** or **CSV** for analysis. Session data (turns, costs, segments) persists across page refreshes via `localStorage` — pick up where you left off.\n\n### Token growth chart\nA sparkline below the context bar shows input tokens per turn over time. Spot conversation bloat at a glance and know when to start a new session.\n\n## Request grouping\n\nWhen you use Claude Code, a single user message can generate dozens of API requests — the main session, subagents, tool calls, and follow-ups. Jannal groups these into logical turns so you see conversations, not a flat stream of requests.\n\n**How grouping works:**\n- Requests are grouped by conversation identity (first human message) and session hash (model + system prompt text)\n- A new group starts when: the user types a new message in the main session, or a 45-second inactivity gap elapses\n- Subagent requests (shorter message count, different model) stay in the current group rather than creating singletons\n- Infrastructure tags (`<system-reminder>`, `<command-message>`, etc.) are stripped before text comparison so Claude Code boilerplate doesn't create bogus boundaries\n\nToggle between **Grouped** and **Flat** views using the button in the request panel header.\n\n## Plugin system\n\nJannal has a plugin system for extending its functionality. Plugins can hook into server lifecycle events, add custom API routes, analyze requests, and process responses.\n\n```js\nconst { createServer } = require(\"jannal\");\n\ncreateServer({\n  plugins: [myPlugin()]\n}).start();\n```\n\nSee `lib/plugins.js` for the available hooks: `onInit`, `onServerStart`, `onRoute`, `onRequestAnalyzed`, `onResponseComplete`, `getConnectPayload`.\n\n## Jannal Pro\n\n**[Jannal Pro](https://github.com/Buzzie-AI/jannal-pro)** adds premium features on top of the free core:\n\n- **Router intelligence** — Predicts which MCP tool groups are relevant per request and identifies which can be safely stripped, saving 30-50k tokens per turn\n- **Electron Mac app** — Menu bar tray app with profile switching, auto-updates\n- **Embedding-based routing** — Local sentence embedding model for semantic intent matching\n\n## Cursor support\n\n**Current status:** Cursor IDE does not yet support overriding the Anthropic base URL. Unlike OpenAI models (which have a base URL override in Settings → Models), Anthropic models always send requests directly to `api.anthropic.com`, so Jannal cannot intercept them today.\n\n**When Cursor adds Anthropic base URL override**, Jannal will work with zero code changes.\n\nTrack Cursor's progress on this feature: [Override Anthropic Base URL](https://forum.cursor.com/t/override-anthropic-base-url/5355).\n\n## Configuration\n\n| Environment variable | Default | Description |\n|---|---|---|\n| `JANNAL_PORT` | `4455` | Port for the proxy and Inspector UI |\n\n## Development\n\n```bash\n# Terminal 1: start the proxy server\nnpm run dev:server\n\n# Terminal 2: start Vite dev server with hot reload\nnpm run dev:ui\n```\n\nOpen `http://localhost:5173` for the dev UI (auto-proxies API calls to the server on :4455).\n\n## Project structure\n\n```\njannal/\n├── server.js              # Proxy server, createServer() factory, plugin hooks\n├── bin/jannal.js           # CLI entry point (npx @buzzie-ai/jannal)\n├── lib/\n│   ├── plugins.js         # Plugin host (lifecycle hooks, route handling)\n│   └── tokens.js          # Token estimation, budget inference\n├── src/                   # Frontend source (ES modules)\n│   ├── index.html         # HTML shell\n│   ├── main.js            # Entry point\n│   ├── styles.css         # All styles\n│   ├── state.js           # App state + constants\n│   ├── ws.js              # WebSocket connection\n│   ├── api.js             # HTTP API helpers\n│   ├── render.js          # UI rendering (bar, turns, detail, token chart)\n│   ├── modal.js           # Modal lifecycle + tools view (grouped by MCP server)\n│   ├── profiles.js        # Profile management\n│   ├── session.js         # Session export & persistence\n│   └── utils.js           # Formatting + segment helpers + tool grouping\n├── test/\n│   └── session-hash.test.js  # Session hash stability tests\n├── public/                # Vite build output (served by server.js)\n├── vite.config.js\n├── package.json\n└── profiles.json          # Auto-created, stores your filtering profiles\n```\n\nThe backend is `server.js` with a plugin system. The frontend is split into focused modules — no framework, just vanilla JS with ES module imports. Vite handles the build.\n\n## Limitations\n\n- Only supports the Anthropic Messages API (not OpenAI, Google, etc. — yet)\n- Cursor IDE is not yet supported (see [Cursor support](#cursor-support))\n- Per-segment token counts are proportionally scaled estimates, not exact per-field counts\n- Tool filtering modifies the request body, which means Claude won't know those tools exist — this is the point, but be aware\n- Profiles are stored in a local JSON file, not synced across machines\n\n## Contributing\n\nIssues and PRs welcome. The codebase is intentionally simple — one backend file, small frontend modules, and two dependencies (`ws` + `vite`). Keep it that way.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}