Silvi

The silvi command. It makes an app, adds and removes connectors, updates the app from the kit and sets its theme.

The CLI (command-line tool) silvi starts a reports app, adds and removes the connectors its reports read, updates it from the kit (Silvi’s starting code), and sets its theme. The code is copied into the app and is yours from then on.

There is nothing to install: it runs straight from GitHub as npx github:productvibe/silvi <command>, which needs Node.js and git. The silvi package on npm is someone else’s. On this page, silvi is short for npx github:productvibe/silvi.

npx github:productvibe/silvi init <folder> --connectors csv,postgres [--preset <code>]
silvi list
silvi add <connector>...
silvi remove <connector>
silvi update [--to <tag>]
silvi apply --preset <code>

Every command but init runs inside an app: it finds the app by its silvi.json. No prompts, no dependencies. Node.js 20.12 or later.

init

Makes a new app in a folder.

npx github:productvibe/silvi init my-reports --connectors csv,postgres --preset f0
  • --connectors is required: one or more of excel, csv, json, sqlite, sqlserver, postgres, mysql, bigquery, redshift. The first is the app’s default (SILVI_CONNECTOR).
  • --preset sets the look; without it the app gets f0. See Themes.
  • It copies the kit, each connector’s folder and sample data, writes app/.env.example with their keys, and leaves out the packages only the connectors you skipped use.

Create writes this command for you, inside the prompt it gives you to paste into Claude: see Quickstart.

list

Prints the connectors under their group’s heading, with a ✓ by the ones the app has.

silvi list

add

Adds one or more connectors.

silvi add mysql bigquery

It copies each connector’s folder, adds its packages, copies its sample data where the app has none, and adds its keys to app/.env.example. A connector the app already has is skipped, and it says so.

remove

Removes a connector.

silvi remove mysql

It deletes the connector’s folder, unless you changed one of its files: then the folder stays and the changed files are listed. It takes the connector’s keys out of app/.env.example, leaves its packages, and lists the reports whose meta still says connector: "mysql".

update

Brings the kit’s improvements into the app.

silvi update --dry-run
silvi update

It replaces a file only the kit changed, keeps one only you changed, and when both changed, writes the kit’s version beside yours as <file>.kit. Your reports, wiki, data and .env are never touched. See Kit updates.

apply

Sets the look from a preset code.

silvi apply --preset f0

It writes app/src/theme.css and app/src/theme.json whole from the code. A theme.css you changed is kept, with the new one beside it as theme.css.kit.

Options

Option Does
--kit <folder or git url> Where the kit comes from. Default: the kit in silvi.json, else $SILVI_KIT
--to <tag> Use the kit at this version
--dry-run Say what would change, and change nothing
--json Print the result as JSON
--no-install Skip installing packages

silvi.json

Every app has a silvi.json at its root. It records the kit, its version, the preset, the connectors, and a fingerprint of every file copied from the kit. That is how update and remove tell the kit’s files from your edits.