{"_id":"@cooljapan/oxillama","_rev":"5-39e30c666265a6077d511b0f20646d8e","name":"@cooljapan/oxillama","dist-tags":{"latest":"0.1.4"},"versions":{"0.1.0":{"name":"@cooljapan/oxillama","version":"0.1.0","keywords":["llm","wasm","gguf","llama","webassembly"],"license":"Apache-2.0","_id":"@cooljapan/oxillama@0.1.0","maintainers":[{"name":"kitasan","email":"info@kitasan.io"}],"homepage":"https://github.com/cool-japan/oxillama#readme","bugs":{"url":"https://github.com/cool-japan/oxillama/issues"},"dist":{"shasum":"8f42a9543340edac7324e0e6857d507ae95ed772","tarball":"https://registry.npmjs.org/@cooljapan/oxillama/-/oxillama-0.1.0.tgz","fileCount":6,"integrity":"sha512-TWeg4QDCq3tOHeeGv+ih3OIa+h6/499qHfGl29x4y4EJqCGiX2BB/Ze1aNNFYX3CMdormekG6XmBgTZ+uMxBWg==","signatures":[{"sig":"MEMCIHZSD+R7T4icSQ8z2xkVV+R4xRzUYkd+xzvKCkxtvdm6Ah8/rDKk4q48WLUNgb3meVSScPBdFFJpjx4PZWVOATvb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2592995},"main":"oxillama_wasm.js","type":"module","types":"oxillama_wasm.d.ts","_npmUser":{"name":"kitasan","email":"info@kitasan.io"},"repository":{"url":"git+https://github.com/cool-japan/oxillama.git","type":"git"},"_npmVersion":"10.9.7","description":"WebAssembly bindings for OxiLLaMa GGUF parsing and quantization","directories":{},"sideEffects":["./oxillama_wasm.js","./snippets/*"],"_nodeVersion":"22.22.2","collaborators":["COOLJAPAN OU (Team KitaSan)"],"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/oxillama_0.1.0_1776255241712_0.4291478495004277","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@cooljapan/oxillama","version":"0.1.1","keywords":["llm","wasm","gguf","llama","webassembly"],"license":"Apache-2.0","_id":"@cooljapan/oxillama@0.1.1","maintainers":[{"name":"kitasan","email":"info@kitasan.io"}],"homepage":"https://github.com/cool-japan/oxillama#readme","bugs":{"url":"https://github.com/cool-japan/oxillama/issues"},"dist":{"shasum":"95c388f4af2835737278ce6c462cfded03fdcde1","tarball":"https://registry.npmjs.org/@cooljapan/oxillama/-/oxillama-0.1.1.tgz","fileCount":6,"integrity":"sha512-uFV6Djpw4JVHjeenMTD1HFgT/kYvRNU40Zpw1LJDQ95zODj/VgZN9lSJTrEcRrPQpY59ve1zcWwNnG/KQ++/6w==","signatures":[{"sig":"MEYCIQD9aD89qJP7iIuE6m2QIjHWU37zRrWJI2IOPZ1abB4ixAIhAJfDc03LtEfkt6xb2bkMVmR2ZKX+C68iPDY55v2zHnq4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3025496},"main":"oxillama_wasm.js","type":"module","types":"oxillama_wasm.d.ts","_npmUser":{"name":"kitasan","email":"info@kitasan.io"},"repository":{"url":"git+https://github.com/cool-japan/oxillama.git","type":"git"},"_npmVersion":"10.9.7","description":"WebAssembly bindings for OxiLLaMa GGUF parsing and quantization","directories":{},"sideEffects":["./oxillama_wasm.js","./snippets/*"],"_nodeVersion":"22.22.2","collaborators":["COOLJAPAN OU (Team KitaSan)"],"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/oxillama_0.1.1_1777019040493_0.8799750019031187","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@cooljapan/oxillama","version":"0.1.2","keywords":["llm","wasm","gguf","llama","webassembly"],"license":"Apache-2.0","_id":"@cooljapan/oxillama@0.1.2","maintainers":[{"name":"kitasan","email":"info@kitasan.io"}],"homepage":"https://github.com/cool-japan/oxillama#readme","bugs":{"url":"https://github.com/cool-japan/oxillama/issues"},"dist":{"shasum":"706b50c76ee5db30e952428a9e97cbfd4a589284","tarball":"https://registry.npmjs.org/@cooljapan/oxillama/-/oxillama-0.1.2.tgz","fileCount":6,"integrity":"sha512-egGnvLGGu6Zc5XBlgi+X3Pa87D3dwyffNl1RVATwuONtKk2l2JO+6hbQZIj9QBvCkRUB+xBYRU7EUja5c1GR3g==","signatures":[{"sig":"MEUCIC00zyx0OQJPm+/7x2tq+0MRHAY9JOs5l6WfkJRhQMCxAiEA//CkwDgk2YV/3UOyHqh0YhSuQ9zdndBgDAdD9l70CJQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3030061},"main":"oxillama_wasm.js","type":"module","types":"oxillama_wasm.d.ts","_npmUser":{"name":"kitasan","email":"info@kitasan.io"},"repository":{"url":"git+https://github.com/cool-japan/oxillama.git","type":"git"},"_npmVersion":"10.9.7","description":"WebAssembly bindings for OxiLLaMa GGUF parsing and quantization","directories":{},"sideEffects":["./oxillama_wasm.js","./snippets/*"],"_nodeVersion":"22.22.2","collaborators":["COOLJAPAN OU (Team KitaSan)"],"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/oxillama_0.1.2_1777101477671_0.207145913389295","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@cooljapan/oxillama","version":"0.1.3","keywords":["llm","wasm","gguf","llama","webassembly"],"license":"Apache-2.0","_id":"@cooljapan/oxillama@0.1.3","maintainers":[{"name":"kitasan","email":"info@kitasan.io"}],"homepage":"https://github.com/cool-japan/oxillama#readme","bugs":{"url":"https://github.com/cool-japan/oxillama/issues"},"dist":{"shasum":"2440ec0e976a23ef801767bc69100e4cccf09295","tarball":"https://registry.npmjs.org/@cooljapan/oxillama/-/oxillama-0.1.3.tgz","fileCount":6,"integrity":"sha512-WigjqwdnJx4w203YKO0uIXmhozxYpIV1RaEWsHNfDHe7Nswaq8AOvSTxI1uzalwuHzx2XnsztpoqL5quZaxCOQ==","signatures":[{"sig":"MEUCIHZlmtlpu0/xAFARV/brQZh7Z4MviKNqIZWUYSHni5erAiEAiv5l500uJUy0Htck2o9SASTg7CFKhiMO+Ln0gEPFm40=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3066103},"main":"oxillama_wasm.js","type":"module","types":"oxillama_wasm.d.ts","_npmUser":{"name":"kitasan","email":"info@kitasan.io"},"repository":{"url":"git+https://github.com/cool-japan/oxillama.git","type":"git"},"_npmVersion":"10.9.7","description":"WebAssembly bindings for OxiLLaMa GGUF parsing and quantization","directories":{},"sideEffects":["./oxillama_wasm.js","./snippets/*"],"_nodeVersion":"22.22.2","collaborators":["COOLJAPAN OU (Team KitaSan)"],"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/oxillama_0.1.3_1777997848161_0.921512319419463","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@cooljapan/oxillama","type":"module","collaborators":["COOLJAPAN OU (Team KitaSan)"],"description":"WebAssembly bindings for OxiLLaMa GGUF parsing and quantization","version":"0.1.4","license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/cool-japan/oxillama.git"},"main":"oxillama_wasm.js","types":"oxillama_wasm.d.ts","sideEffects":["./oxillama_wasm.js","./snippets/*"],"keywords":["llm","wasm","gguf","llama","webassembly"],"_id":"@cooljapan/oxillama@0.1.4","bugs":{"url":"https://github.com/cool-japan/oxillama/issues"},"homepage":"https://github.com/cool-japan/oxillama#readme","_nodeVersion":"22.23.2","_npmVersion":"10.9.8","dist":{"integrity":"sha512-9BgxXeDmydqZOn4sEbBp66BITUaQPGmzlYyLwHzflPh1dMp45eQTwOVcxjYgskhAfTGK0yBhr0CToqd2v3FRcw==","shasum":"76379bcc78a1202de1fc47f87f16467e5c31170c","tarball":"https://registry.npmjs.org/@cooljapan/oxillama/-/oxillama-0.1.4.tgz","fileCount":6,"unpackedSize":3845875,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICAg55qkbQDZn75uTNJ4wxVWK0pXGNwlq/ZcBUzD33QwAiAfi64m7VMOLXtAVIPDiUn9TFBw5+zGOjrMyBA/d3whIA=="}]},"_npmUser":{"name":"kitasan","email":"info@kitasan.io"},"directories":{},"maintainers":[{"name":"kitasan","email":"info@kitasan.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/oxillama_0.1.4_1786974572303_0.17815748331215508"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-15T12:14:01.625Z","modified":"2026-08-17T13:49:32.706Z","0.1.0":"2026-04-15T12:14:02.018Z","0.1.1":"2026-04-24T08:24:00.738Z","0.1.2":"2026-04-25T07:17:57.877Z","0.1.3":"2026-05-05T16:17:28.414Z","0.1.4":"2026-08-17T13:49:32.495Z"},"bugs":{"url":"https://github.com/cool-japan/oxillama/issues"},"license":"Apache-2.0","homepage":"https://github.com/cool-japan/oxillama#readme","keywords":["llm","wasm","gguf","llama","webassembly"],"repository":{"type":"git","url":"git+https://github.com/cool-japan/oxillama.git"},"description":"WebAssembly bindings for OxiLLaMa GGUF parsing and quantization","maintainers":[{"name":"kitasan","email":"info@kitasan.io"}],"readme":"# oxillama-wasm\n\nWebAssembly bindings for OxiLLaMa — GGUF parsing and LLM inference in the browser.\n\nPart of the [OxiLLaMa](https://github.com/cool-japan/oxillama) workspace — a Pure Rust LLM inference engine.\n\n## What It Provides\n\n- GGUF metadata and tensor catalogue parsing from a `Uint8Array` in the browser\n- Typed metadata export via `parseGgufMetadata()` returning a `GgufMetadataJs` object (arch, context_length, embedding_length, etc.)\n- Full text generation via `oxillama-runtime` (behind the `inference` feature) with optional per-token `onToken` callback\n- K-quant dequantization bindings: `dequantQ4_0`, `dequantQ4K`, `dequantQ5K`, `dequantQ6K`\n- Model loading with progress callbacks: `loadModelFromBytesWithProgress(bytes, onProgress)`\n- WebGPU async bridge: `initWebGpuDevice()`, `webgpuDequantQ4_0Async()`, `webgpuGemvAsync()`\n- IndexedDB model cache: `cacheModel()`, `loadCachedModel()`, `listCachedModels()`, `deleteCachedModel()`\n- Streaming GGUF load via `GgufChunkLoader` for incremental byte feeds\n- Web-worker message-passing API: `parseWorkerMessage()` / `workerTokenEvent()` — a stateless message-routing helper with no loaded model; its `Generate` dispatch returns a typed `WorkerOutMessage::Error` directing callers to `WasmEngine.generate()` or the top-level `generate()` export (clarified in v0.1.4, was a stub placeholder response before)\n- Pure-Rust tokenizer backend (`fancy-regex`, no Oniguruma C library) — safe for `wasm32-unknown-unknown`\n- No SIMD rayon threads — single-threaded, browser-compatible; SIMD128 proposal enabled at compile time\n\n## Status\n\n**Version:** 0.1.4 — **Tests:** 59 passing\n\n## Feature Flags\n\n| Feature | Default | Description |\n|---------|---------|-------------|\n| `inference` | yes | Include `oxillama-runtime` for full generation |\n| `console_error_panic_hook` | yes | Pretty panic messages in the browser console |\n\n## Build\n\n```bash\n# Install wasm-pack once\ncargo install wasm-pack\n\n# Build for the browser (ES module)\nwasm-pack build --release --target web -p oxillama-wasm\n\n# Output lands in pkg/\n# oxillama_wasm.js    — JS glue\n# oxillama_wasm_bg.wasm — compiled WebAssembly\n```\n\n## Usage (JavaScript)\n\n```js\nimport init, {\n  parseGgufHeader, parseGgufMetadata, listTensorNames,\n  dequantQ4_0, dequantQ4K, dequantQ5K, dequantQ6K,\n  loadModelFromBytesWithProgress, WasmEngine,\n} from \"./pkg/oxillama_wasm.js\";\n\nawait init();\n\n// Fetch and parse GGUF metadata (no weights loaded)\nconst resp   = await fetch(\"/models/llama-3.2-1b.Q4_K_M.gguf\");\nconst bytes  = new Uint8Array(await resp.arrayBuffer());\nconst header = parseGgufHeader(bytes);\nconst meta   = parseGgufMetadata(bytes);\nconsole.log(\"arch:\", meta.arch, \"context:\", meta.context_length);\nconsole.log(\"tensors:\", listTensorNames(bytes));\n\n// Load model with progress callback (requires `inference` feature)\nconst engine = await loadModelFromBytesWithProgress(bytes, (pct) => {\n  console.log(`loading: ${pct}%`);\n});\n\n// Generate text with per-token streaming\nconst output = engine.generate(\"Hello, world!\", 128, 0.8, (token) => {\n  process.stdout.write(token);\n});\nconsole.log(output);\n\n// IndexedDB cache — persist across reloads\nawait cacheModel(\"llama-3b\", bytes);\nconst cached = await loadCachedModel(\"llama-3b\");\n\n// WebGPU acceleration (where supported)\nawait initWebGpuDevice();\nconst result = await webgpuDequantQ4_0Async(quantizedBlock);\n```\n\n## License\n\nApache-2.0 — COOLJAPAN OU (Team Kitasan)\n","readmeFilename":"README.md"}