Aholo Viewer
Aholo Viewer is an MIT licensed TypeScript renderer from Manycore Tech that streams billion splat 3D Gaussian Splatting scenes in the browser using chunk level level of detail.
Location
Hangzhou, China
Platform
Web (WebGL2 and WebGPU), plus native splat-transform CLI binaries for Windows 22H2 or later (x64, ARM64), macOS 13 or later (Apple silicon) and Linux (x64, ARM64, glibc 2.35 or later)
GPU
WebGL2 or WebGPU capable GPU in the browser. Since splat-transform 2.1.0 the native binaries need a user installed Vulkan 1.2 loader and driver with timelineSemaphore support for GPU tasks, plus MoltenVK on macOS. CPU tasks run without Vulkan
Pricing
Free
License
MIT
Compare licence terms ↗
Best for
Streaming very large 3DGS scenes on the web
Updated
July 2026
Aholo Viewer is a browser renderer for 3D Gaussian Splatting scenes, published by Manycore Tech under an MIT license and written in TypeScript. The repository was created on May 12 2026 and describes itself simply as a high performance 3DGS renderer. The repository topics are 3dgs and 3dgs-lod, which is an accurate summary of what distinguishes it.
The design is built around chunk level level of detail streaming rather than whole scene loading, which is what allows the renderer to open scenes at billion splat scale. Manycore Tech open sourced the project in late May 2026 with frustum priority loading, three render presets and a stated time to first usable view of roughly ten seconds, targeting smartphones, desktop browsers and VR headsets from the same code path.
Three packages ship from the repository. The renderer itself is published as @manycore/aholo-viewer, described as a compact TypeScript renderer core. A conversion CLI is published as @manycore/aholo-splat-transform. Since version 2.0.0 on October 19 2026 its processing engine is a standalone C++20 executable shipped in five per-platform packages covering darwin-arm64, linux-arm64-gnu, linux-x64-gnu, win32-arm64-msvc and win32-x64-msvc, and the npm package is a Node wrapper that turns the CLI commands into JSON pipelines for that executable. The same release replaced the Dawn and WebGPU backend with Vulkan compute, so GPU tasks need a user installed Vulkan loader and driver, plus MoltenVK on macOS, while CPU tasks run without Vulkan. Version 2.1.0 on October 26 2026 raised the GPU floor from Vulkan 1.1 to Vulkan 1.2 with timelineSemaphore support, and replaced the exported VulkanAdapter type with DeviceInfo. The native binaries support Windows 22H2 or later, macOS 13 or later on Apple silicon, and Linux on glibc 2.35 or later. Version 2.0.0 also removed the in-memory JavaScript processing APIs and custom JavaScript tasks, keeping the CLI commands and version 1 pipeline files as the supported interface. The CLI package installs a binary named splat-transform, the same name PlayCanvas uses for its own unrelated conversion tool, so a global install of both puts two different programs behind one command on PATH. The two projects share no code and no format lineage.
Format coverage is wide. As of version 2.0.0 the transform tool reads PLY, compressed PLY, SPLAT, KSPLAT, SPZ, USPZ, SOG including unpacked SOG metadata, ESZ, LCC and LCC2, and writes PLY, SPLAT, SPZ at v3 or v4, USPZ, SOG and Manycore's own ESZ container at low or high precision, alongside level of detail directories, voxel raw or compact binaries with optional gzip or zstd compression, and a collision GLB. Since version 1.8.0 of the @manycore/aholo-splat-transform package on October 12 2026 the CLI also reads XGRIDS LCC2, taking the LOD0 and environment splats from LCC2 ZIP archives, reads unpacked LCC and LCC2 scenes through their .lcc and .lcc2 metadata files, and no longer requires spherical harmonics metadata to read portable LCC files. ESZ v2 is zstd streamed and replaces a legacy ZIP based v1, and it offers both low precision and high precision layouts. The CLI is organized around level of detail generation rather than plain conversion, exposing create, lod:loading, lod:flex, lod:auto, lod:auto-chunk and list:gpu.
Version 1.8.0 landed on July 28 2026 and opened the renderer to headsets directly, adding a WebXR namespace with initWebXR, OnXRViewChanged, WebXROptions and WebXRSession, and supporting both immersive-vr and immersive-ar session modes. The same release added LodSplat.setModifiers(), which brings SplatModifier shader blocks onto the level of detail path rather than leaving them confined to static splats, and flipped LodConfig.frustumCullingEnabled to on by default. The project has since added physics collision, generating queryable voxel colliders from reconstructed 3DGS scene assets with realtime ray, capsule, ground and wall queries feeding walk mode, camera obstacle avoidance and area limits from shared collision data. Version 1.9.0 followed on October 9 2026 and added loading for XGRIDS LCC2 scenes through SplatLoader.SplatFileType.LCC2, with an extras.lodLevel option in parseSplatData() choosing which level of detail loads and defaulting to level 0. The same release let SplatModifier take 2D float and unsigned integer SourceTexture inputs updated through update(), handled asynchronous sorting failures and cancelled pending work when the renderer is destroyed or loses its context, and detected LCC metadata under any .lcc filename inside a ZIP archive. Renderer 1.10.0 followed on October 19 2026 and let parseSplatData() load and merge several splat files from one ZIP archive, added optional voxel based occlusion downgrading of level of detail through LodMeta.voxels, added LodConfig.movingMinLevel to cap refinement while the camera moves, and moved level of detail allocation to projected screen area and a splat budget, removing LodConfig.backgroundPenalty and LodConfig.distanceStep. Renderer 1.11.0 on October 20 2026 added SplatState.DisableSH, which switches off view dependent colour for individual splats while keeping their base colour. Renderer 1.12.0 on October 29 2026 added optional GPU only streaming loads, enabled with retainData: false, that upload splat data straight to WebGL2 textures or WebGPU source buffers without retaining a CPU copy, with Splat.readback() restoring the source data on demand for editing and export, and it removed Splatting.raster.normalizedFalloff, so Gaussian falloff always uses the normalized fastExp formula.
Manycore Tech, 群核科技, is headquartered in Hangzhou and is the parent of Kujiale in China and Coohom internationally, alongside LuxReal and SpatialVerse. The company positions Aholo as a spatial intelligence open platform rather than as a standalone viewer.
That platform is a commercial product line in its own right, sold in Chinese at aholo3d.cn and separate from the MIT licensed renderer. It runs across four surfaces. A reality reconstruction platform takes phone footage, professional capture rigs, a single image or a text prompt and returns an interactive high fidelity scene with realtime editing. An enterprise platform handles multi device acquisition through to display on every endpoint. A spatial intelligence lab publishes APIs, SDKs and datasets covering reconstruction, generation, understanding, rendering and editing. Lux3D generates textured 3D assets from an image or a line of text. Manycore names cultural heritage, game development, film and television, product and brand display, and architectural visualisation as its target applications, and it publishes a pricing page and a business surface at b.aholo3d.cn.
Frequently Asked Questions
Is Aholo Viewer free to use commercially?
Aholo Viewer is free to use commercially because it is MIT licensed, which permits commercial use, modification and redistribution with attribution and the license notice retained.
Which splat formats does Aholo Viewer support?
Aholo Viewer's splat-transform CLI reads PLY, compressed PLY, SPLAT, KSPLAT, SPZ, USPZ, SOG, ESZ, LCC and LCC2, and writes PLY, SPLAT, SPZ at v3 or v4, USPZ, SOG and Manycore Tech's own ESZ container, as of splat-transform 2.0.0 on October 19 2026. ESZ v2 is zstd streamed and supersedes a ZIP based v1. Since version 1.9.0 on October 9 2026 the Aholo Viewer renderer also loads XGRIDS LCC2 scenes and can select which LCC2 level of detail to load. Since version 1.8.0 of the @manycore/aholo-splat-transform package on October 12 2026 the conversion CLI also reads the LOD0 and environment splats from LCC2 ZIP archives.
Is Aholo's splat-transform the same tool as PlayCanvas splat-transform?
Aholo's splat-transform is a different tool from PlayCanvas splat-transform. Manycore Tech's tool is published as @manycore/aholo-splat-transform and shares no code with the PlayCanvas tool of the same name. Both install a binary called splat-transform, so a global install of both will collide on PATH.
Does Aholo Viewer work in VR?
Aholo Viewer has worked in VR since version 1.8.0 on July 28 2026, which added a WebXR namespace supporting both immersive-vr and immersive-ar session modes.
Who builds Aholo Viewer?
Aholo Viewer is built by Manycore Tech, a Hangzhou company that is the parent of Kujiale in China and Coohom internationally, and that also operates LuxReal and SpatialVerse.
Alternatives
Recent Headlines

10:32
Watch · New every Monday
SpAItial Echo-3 & Apple Event 4D Splat Rig | Gaussian Splatting News
Episode 11 · Nov 2, 2026
Recent Job Openings


