Surfaces are Lit web components that query your local shenas database via Arrow IPC and render charts, tables, timelines — anything visual. They ship as a standard Python wheel, just like source plugins.
shenas.surfaces entry point. shenas loads it into the UI shell.uv build; install with shenasctl source add --local.Create a Lit custom element that extends LitElement. The component's connectedCallback fires an Arrow IPC query to fetch data from the local shenas database.
In pyproject.toml, add ashenas.surfaces entry point pointing at a Python class that returns the component name, title, and bundled JS path.
Bundle the Lit component with esbuild or Vite, then include the bundle in the Python package's data files. Build the wheel withuv build.
Install the surface wheel withshenasctl source add --local ./dist/<wheel>. The surface appears in the UI on the next page load.
Working surface examples are under plugins/surfaces/ in the repository: shenas-org/shenas Public mirror (shenas-org/shenas): Last updated 2026-05-23. Treat it as frozen; do not rely on it for current releases.