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.
Claude runs these for you. You ask in plain words, such as “Add the MySQL connector”, and Claude runs the command, says what it did, and checks the app still works.
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--connectorsis required: one or more ofexcel,csv,json,sqlite,sqlserver,postgres,mysql,bigquery,redshift. The first is the app’s default (SILVI_CONNECTOR).--presetsets the look; without it the app getsf0. See Themes.- It copies the kit, each connector’s folder and sample data, writes
app/.env.examplewith 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 listadd#
Adds one or more connectors.
silvi add mysql bigqueryIt 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 mysqlIt 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 updateIt 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 f0It 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.