Skip to content

Sharing extensions ​

Once you've built an extension you want others to use, pick the path that matches your audience. For anything meant for the wider Silo community, publish to the extension registry — that's what Browse and extensions.getsilo.dev read. Folder, Git, tarball, and npm remain useful sideloads for private or one-off shares.

Publish to the Silo registry ​

Publishing is release-driven: register once, then every GitHub Release you cut is ingested automatically. No registry accounts or tokens — your id is <github-owner>.<name>, bound to the repo you control.

  1. Set up releases (once per repo). New extension? npx create-silo-extension scaffolds the publish-extension-action workflow. Existing extension: add that action, then publish with npm version patch && git push --follow-tags.
  2. Register (once per extension). Use the form at extensions.getsilo.dev/publish — it opens a pre-filled PR against silo-code/extensions-registry. A bot validates and merges.
  3. Done. After ingest, the listing appears at extensions.getsilo.dev/<id> and in Settings → Extensions → Browse. Users install with one click or silo install <id>. Later releases update the listing; installed users see an Update badge.

See Publishing an extension for the package shape and Permissions & access for what you declare in silo.permissions.

When to use this: public extensions for the Silo community.

Install from a local folder ​

The simplest share: hand someone the folder (zip, AirDrop, USB) and have them run one command:

sh
silo install /path/to/my-extension

Or they can open Settings → Extensions → Install from folder… and pick the folder. Best for local teammates or quick one-off installs.

Share via a Git repository ​

For extensions you maintain over time, a Git repo is the natural home. The recipient clones it and builds locally:

sh
git clone https://github.com/you/my-extension
cd my-extension
npm install && npm run build
silo install .

This works for a single-extension repo or a collection repo where each extension lives in its own subfolder:

my-extensions/
  clock/
    package.json
    src/index.tsx
  weather/
    package.json
    src/index.tsx
sh
git clone https://github.com/you/my-extensions
cd my-extensions/clock && npm install && npm run build && silo install .

When to use this: pro users who want to inspect the source, make local tweaks, or stay on the latest commit. Requires Node/npm on the recipient's machine. To put the same package on Browse for everyone else, publish to the registry as well.

Share a packed tarball ​

npm pack produces a self-contained .tgz from your built extension. Anyone with Silo can install it directly — no Node, no build step:

sh
npm run build
npm pack                      # → silo-my-clock-0.1.0.tgz

Options for distributing the .tgz:

  • Attach to a GitHub release — required for registry publishing, and also usable as a direct install URL (asset download link).
  • Commit to a repo — for a collection repo, commit each .tgz alongside its source; the raw GitHub URL becomes the install link.
  • Send the file directly — paste the path or URL into Settings → Extensions and click Install.
https://github.com/you/my-extensions/raw/main/clock/silo-my-clock-0.1.0.tgz

When to use this: sharing with less technical users, or when you want to pin a specific built version without requiring the recipient to build anything.

The create-silo-extension scaffold includes a pack script that builds and packs in one step:

sh
npm run pack                  # build + npm pack → silo-my-ext-0.1.0.tgz

Publish to npm ​

Publishing makes your extension installable by package name from anywhere (sideload path — separate from the Silo registry):

sh
npm publish --access public

Users install by typing the package name into Settings → Extensions → npm package name or tarball URL…:

silo-my-clock

Or they can use the npm tarball URL directly:

https://registry.npmjs.org/silo-my-clock/-/silo-my-clock-0.1.0.tgz

When to use this: npm distribution alongside (or instead of) the Silo registry. npm alone does not list the extension on Browse or extensions.getsilo.dev.

Comparison ​

MethodOn Browse / catalogRequires Node/npmPinned versionPublic URL
Silo registryYesNo (to install)Yes (per release)Yes
Local folderNoTo build—No
Git clone + buildNoYesNo (tracks branch)No
Packed tarballNoNoYesOptional
npm publishNoNoYesYes