Skip to content

Remote Fetching

Boiler can fetch resources from anywhere - GitHub, GitLab, Bitbucket, your own website, or a direct URL. No lock-in, complete flexibility.


CommandSaves to local store?Use case
bl add ... -r✅ Yes - reusable later with bl add <name>Team/personal registry, frequently reused resources
bl use ...❌ No - one-shot fetchGrab something once, no clutter

Boiler auto-detects the right provider from the URL:

PlatformFormatArchive
GitHubowner/repo or https://github.com/owner/repotar.gz
GitLabhttps://gitlab.com/owner/repotar.gz
Bitbuckethttps://bitbucket.org/owner/repozip
Custom registryhttps://yoursite.com/boiler-storezip
Direct archivehttps://anysite.com/stack.zip or .tar.gzauto-detected

The colon (:) separates the source from the path inside it.

What You WantFormatExample
Whole GitHub/GitLab/Bitbucket repoowner/repo or full URLalice/my-stack
File inside a GitHub repoowner/repo:path/to/file.jsalice/snippets:js/logger.js
Custom domain filedomain.com:path/filemysite.com:snippets/util.js
Direct file URLhttps://full-urlhttps://mysite.com/file.js
Direct archive URLhttps://full-url.ziphttps://mysite.com/stack.zip

When you use -r, Boiler downloads and caches locally so you can reuse without re-downloading:

  1. Downloads from internet
  2. Saves to ~/.boiler/store/
  3. Updates boiler.meta.json
  4. Copies to your project
sequenceDiagram
  participant User
  participant CLI as Boiler CLI
  participant Remote as Remote Source
  participant Store as Local Store
  participant Project as Your Project

  User->>CLI: bl add express -r
  CLI->>Remote: Download resource
  Remote-->>CLI: Return files
  CLI->>Store: Save to ~/.boiler/store/
  CLI->>Store: Update boiler.meta.json
  Store-->>CLI: Resource cached
  CLI->>Project: Copy to current directory
  CLI-->>User: ✓ Added successfully

  Note over User,Project: Next time...

  User->>CLI: bl add express
  CLI->>Store: Check local store
  Store-->>CLI: Found (no download!)
  CLI->>Project: Copy to current directory
  CLI-->>User: ✓ Added (super fast!)
Terminal window
# From configured registry
bl add express@1 -r
# GitHub (short format)
bl add rishiyaduwanshi/boiler-express -r
# GitHub (full URL)
bl add https://github.com/alice/my-stack -r
# GitLab
bl add https://gitlab.com/alice/my-stack -r
# Bitbucket
bl add https://bitbucket.org/alice/my-stack -r
# GitHub subfolder as stack
bl add vercel/next.js:examples/blog -r
# GitHub single file (snippet)
bl add rishiyaduwanshi/boiler-snippets:js/errorHandler.js -r
# Direct URL
bl add https://mysite.com/snippets/helper.js -r
# Custom registry (one-time override)
bl add express@1 -r --registry https://github.com/myteam/boiler

No -r flag, no local caching. Just fetch and use directly.

Terminal window
# GitHub repo
bl use alice/my-stack
# GitLab
bl use https://gitlab.com/alice/stack
# Bitbucket
bl use https://bitbucket.org/alice/stack
# Direct zip or tar.gz (any site)
bl use https://mysite.com/templates/express.zip
bl use https://mysite.com/stack.tar.gz
# Single file
bl use alice/snippets:js/errorHandler.js
bl use https://mysite.com/snippets/logger.js
# Into a specific folder
bl use alice/my-stack ./new-project

Set once, use forever:

Terminal window
bl conf --set-registry https://github.com/rishiyaduwanshi/boiler
bl search express -r
bl add express@1 -r

One-time override:

Terminal window
bl add express@1 -r --registry https://github.com/myteam/boiler
sequenceDiagram
  participant User
  participant CLI as Boiler CLI
  participant Registry as Registry Repo
  participant Source as Resource Source
  participant API as Provider API
  participant Store as Local Store

  User->>CLI: bl add express@1 -r
  CLI->>Registry: GET store/boiler.meta.json
  Registry-->>CLI: {"stacks":{"express@1":"owner/repo"}}
  CLI->>API: Try subtree fetch (provider-specific)
  API-->>CLI: Files (or fallback required)
  CLI->>Source: Fallback archive download (if needed)
  Source-->>CLI: Return files
  CLI->>Store: Save + update boiler.meta.json
  Store-->>User: ✓ Resource ready

Any static file server works (GitHub Pages, Netlify, S3, your own VPS). Required structure:

<your-registry-url>/
└── store/
├── boiler.meta.json ← resource index
├── stacks/
│ ├── express.zip
│ └── nextjs.zip
└── snippets/
├── errorHandler@1.js
└── logger@1.js

This is the same structure as the official Boiler registry on GitHub - consistent everywhere.

boiler.meta.json for GitHub/GitLab/Bitbucket registry

Section titled “boiler.meta.json for GitHub/GitLab/Bitbucket registry”

Values are owner/repo paths (provider is auto-detected from the configured registry URL):

{
"stacks": {
"express@1": "alice/boiler-express"
},
"snippets": {
"errorHandler@1.js": "alice/boiler-snippets:js/errorHandler@1.js"
}
}

boiler.meta.json for a custom/generic website

Section titled “boiler.meta.json for a custom/generic website”

Values must be full download URLs since the tool cannot infer paths from a custom server:

{
"stacks": {
"express@1": "https://mysite.com/store/stacks/express.zip"
},
"snippets": {
"errorHandler@1.js": "https://mysite.com/store/snippets/errorHandler@1.js"
}
}

Then use it:

Terminal window
bl conf --set-registry https://mysite.com/store
bl add express@1 -r

Explore more