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 a
shenas.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 with
uv build.
Install the surface wheel with
shenasctl source add --local ./dist/<wheel>.
The surface appears in the UI on the next page load.
Working surface examples are in
shenas-org/shenas
under plugins/surfaces/.