Hakowan
Hakowan is a 3D data visualization grammar. It is inspired by the grammar of graphics, and it is designed for easily creating beautiful 3D visualizations.
Install
Hakowan relies on Lagrange for geometry processing and supports three rendering backends:
| Backend | Description | Extra |
|---|---|---|
| WebGL (default) | Interactive browser viewer — ships with base install | (none) |
| Mitsuba | Photorealistic offline renderer | hakowan[mitsuba] |
| Blender | Cycles/EEVEE renderer (requires Python 3.13) | hakowan[blender] |
# WebGL only (default)
pip install hakowan
# Mitsuba backend
pip install "hakowan[mitsuba]"
# Blender backend (Python 3.13 required)
pip install "hakowan[blender]"
# All backends
pip install "hakowan[mitsuba,blender]"
# Add deterministic headless snapshots and multi-view observations
pip install "hakowan[observe]"
playwright install chromium
# Optional dataframe and geometry adapters
pip install "hakowan[data]"
# Agent integration is distributed separately
pip install "hakowan-mcp"
Note that Hakowan requires Python 3.11 and above (Python 3.13 for the Blender backend).
Command line
hkw requires an action. render writes a still image using Mitsuba or Blender,
preferring Mitsuba when both are available. One of those optional backends must
be installed; otherwise, render reports an error. view creates an
interactive WebGL HTML viewer. inspect lists a mesh's attributes, domains,
and each channel's min/max without selecting a render backend. Run hkw --help
or an action's help for details. --facet-id selects Blender for render and
reports an error if Blender is unavailable.
view works with the base WebGL install. render requires the Mitsuba or
Blender extra.
hkw render mesh.obj
hkw view mesh.obj
hkw inspect mesh.obj
To check which backends are available in your environment:
import hakowan as hkw
print(hkw.list_backends())
Quick start
The following example renders an interactive HTML viewer using the WebGL backend:
import hakowan as hkw
layer = (
hkw.layer("mesh.obj")
.mark(hkw.mark.Surface)
.channel(material=hkw.material.Diffuse(reflectance="orange"))
)
result = hkw.render(layer, filename="viewer.html", backend="webgl")
# Open viewer.html in any modern browser
render() produces the requested output (an interactive viewer or a
Mitsuba/Blender image). For AI or programmatic inspection, use observe() for
one or more WebGL views, render passes, and visibility queries. Observation
captures independently; it does not require a preceding render. See the
rendering and viewers guide.
Agent integration
Hakowan's provider-neutral agent integration is maintained separately in
Hakowan/hakowan-mcp. It exposes
Hakowan's deterministic inspection, schema, validation, compilation, rendering,
observation, camera-fitting, and patch APIs to Copilot, Oh My Pi, and other MCP
hosts without adding model-provider dependencies to this package.
Documentation
@software{hakowan,
title = {Hakowan: A 3D Data Visualization Grammar},
version = {0.6.1},
year = 2026,
}
Metadata
Release files for hakowan 0.6.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| hakowan-0.6.1-py3-none-any.whl | Python 3 | none | any | Details |
Release files / hakowan-0.6.1-py3-none-any.whl
| Download URL | hakowan-0.6.1-py3-none-any.whl |
|---|---|
| Size | 794.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8d480cb7a50cbe3091f175dec8b1197ebdf30e26284df25f68ec2c41a08233c7
|
|
BLAKE2b-256 checksum How to use checksums |
8c8f7712674ecf29fbc2ecfa38170d4f6a57b66733105c00ad9404f16e2b5b3b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.
Transparency log