Everything runs locally. Your data never leaves your device.
shenas connects to the services people already use — fitness trackers, music platforms, finance apps, calendars — and syncs the data into a local DuckDB database. Transforms normalize it into canonical metrics. Dashboards visualize it.
Everything is a plugin. If there's a data source you care about, you can write a connector in an afternoon. If there's a way to visualize it, you can build a dashboard in a weekend.
Connect a new API or local file to shenas. dlt handles the pipeline; you define the tables.
Write a source →SQL, geofence, geocode, regex — or write your own transform type.
Explore transforms →
shenas is distributed as a Python package. Install with
pip or uv (recommended):
uv tool install shenasctl shenasctl is the shenas command-line interface. It manages
your local database, plugin installation, and sync scheduling.
Install a community source plugin from the plugin index. For example, to add a calendar source:
shenasctl source add gcalendar
The CLI verifies the Ed25519 signature before installing.
For your own plugins, use --local ./dist/<wheel>.
Run a sync to pull data from the source into your local DuckDB:
shenasctl source gcalendar sync
Your data lands in a local DuckDB database at
~/.shenas/shenas.db, queryable from dashboards and
transforms immediately.
Launch the shenas UI to browse your data, run transforms, and explore installed dashboards:
shenasctl ui The fastest way to contribute to shenas is to write a source plugin for a service you already use. The source plugin tutorial walks you through scaffolding, table definitions, and your first sync in about 30 minutes.