Get started

Everything runs locally. Your data never leaves your device.

What shenas does

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.

Source plugins

Connect a new API or local file to shenas. dlt handles the pipeline; you define the tables.

Write a source →

Transform plugins

SQL, geofence, geocode, regex — or write your own transform type.

Explore transforms →

Dashboard plugins

Lit web components that query Arrow IPC and render charts.

Build a dashboard →

Dataset plugins

Define canonical metric schemas that transforms write into.

Explore datasets →

Install

shenas is distributed as a Python package. Install with pip or uv (recommended):

uv tool install shenasctl
1

Install shenasctl

shenasctl is the shenas command-line interface. It manages your local database, plugin installation, and sync scheduling.

2

Add a source plugin

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>.

3

Sync your first source

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.

4

Open the dashboard

Launch the shenas UI to browse your data, run transforms, and explore installed dashboards:

shenasctl ui

Ready to write a plugin?

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.