
Research
Shai-Hulud Descends to Hades: Miasma Worm Campaign Spreads with New PyPI Wave
Socket found 37 malicious PyPI wheels that abuse Python startup hooks to launch a Bun-powered credential stealer tied to Mini Shai-Hulud/Miasma.
@backpacktools/backpack-bin-linux-x64
Advanced tools
Key Features • How To Use • Download • Contributing • License

yarn install or make automatically after a clone.git folder, local caching of content by default, supporting git and tar.gz download$ bp --help
backpack 2.0.0
Set up projects and download files from existing repos
USAGE:
bp [OPTIONS] [ARGS] [SUBCOMMAND]
ARGS:
<shortlink> A full or short link to a repo (e.g. org/user)
<dest> Target folder
OPTIONS:
-c, --config <config> Use a specified configuration file
-f, --fetch Fetch and apply into the current folder
-g, --git Clone with git
-h, --help Print help information
-n, --no-cache Fetch resources without using the cache
-V, --version Print version information
-w, --overwrite Always overwrite target file(s)
SUBCOMMANDS:
add Save a repo as a project
cache Cache handling
config Create a personal configuration
help Print this message or the help of the given subcommand(s)
To download and generate a new project, you can use any repo:
$ bp your/repo
For macOS:
brew tap rusty-ferris-club/tap && brew install backpack
Otherwise, grab a release from releases and run bp --help:
Go to your ordinary repo and follow the add wizard:
$ cd your-repo
$ bp add
Create a backpack.yaml:
$ bp config --init
wrote: /Users/jondot/.backpack/backpack.yaml.
Configure a starter:
projects:
rust-starter:
shortlink: jondot/rust-starter # you can use any custom prefix here too
# is_git: true # force fetch from ssh
actions:
- name: run an initial build
run: cargo build
And now run:
$ bp rust-starter
To personalize a project you can take input and replace content:
projects:
rust-starter:
shortlink: jondot/rust-starter # you can use any custom prefix here too
actions:
- name: get app name
hook: before
interaction:
kind: input
prompt: name of your app
out: app_name
swaps:
- key: APP_NAME
val_template: "Welcome to {{app_name}}"
path: "README.md"
If you include a .backpack-project.yml file in a repo, backpack will use it to understand which actions and swaps to make while copying content.
See this example:
version: 1
new:
shortlink: ""
actions:
- name: name
hook: before
interaction:
kind: input
prompt: name of your project
out: project_name
swaps:
- key: crewl
val_template: "{{project_name}}"
path: .*
You can set different actions and swaps for when people do bp vs bp -f (fetch and apply to current folder).
For file operations such as renaming, moving and so on, you can use vanilla actions (mv x y, rm x).
bp (with no args) will automatically display a list of projects if configure those.
Projects define repos and custom actions and / or swaps you want to attach to each.
Generate a global user configuration file:
$ bp config --init --global
Edit the file:
$ vim ~/.backpack/backpack.yaml
Add to the projects section:
projects:
rust-starter:
shortlink: rusty-ferris-club/rust-starter
Optionally indicate it is only suitable for applying into an existing folder:
projects:
rust-starter:
shortlink: rusty-ferris-club/rust-starter
mode: apply # or new, or remove property.
You can add custom actions to a project:
projects:
rust:
shortlink: rusty-ferris-club/rust-starter
actions:
- name: 🚨 ====== init git ===========
run: git init . && git add . && git commit -am "first commit"
- name: 🚨 ====== first build ========
run: cargo build
You can also add inputs, selections and confirmation, including variable capture.
actions:
- name: "Install deps"
interaction:
kind: confirm
prompt: "are you sure?"
run: yarn install
ignore_exit: true
- name: select a DB
interaction:
kind: select
prompt: select a database
options:
- sqlite
- postgres
- mysql
default: sqlite
out: db
- name: "generate a model"
interaction:
kind: input
prompt: name of your app?
out: name
run: yarn run init-app {{db}} {{name}}
Actions have a before and after hook, which make them run before copying content (e.g. user input), and after the content have being copied (e.g. installing dependencies).
By default actions are hooked to the after event, but you can change it:
- name: name
hook: before
interaction:
kind: input
prompt: name of your project
out: project_name
Define keys to swap, where a key can be anything.
val_template which pulls a variable from those you gathered while running actions. You also have a set of inflections such as {{project_name | kebab_case}}projects:
my-project:
shortlink: kriasoft/react-starter-kit
swaps:
- key: MIT
val: Apache 2.0
path: README.md
- key: AUTHOR_NAME
val_template: Dr. {{user_name}}
path: src/.*
Start by generating a project-local configuration file:
$ bp config --init
wrote: .backpack.yaml.
Example: configure a Github Enterprise instance:
vendors:
custom:
ghe: # <--- this prefix is yours
kind: github
base: enterprise-github.acme.org
# `---- it will point here now
And now, you can use the ghe: prefix for your shortlinks:
$ bp ghe:user/repo
You can check in the .backpack.yaml to your project to share it with your team. When backpack runs it will pick it up automatically.
You can also generate a global user config by specifying:
$ bp config --init --global
$ bp kriasoft/react-starter-kit my-react-project
my-react-project$ bp -f kriasoft/react-starter-kit/-/.github
Let's say you really like how react-starter-kit configured its Github Action, and you'd like to copy that to your existing project. You can do this:
/-/ to access a subfolder-f to overlay files onto your current working directoryTo maximize producitivity, you can do either of these, or all of these in sequence:
git clone that has built-in cache and knows how to take parts of repos.backpack swap these when doing bp or bp -fYou can build a .backpack-project.yml into your template repo for defining actions and variables, or a project pointing to that repo in your central backpack.yml.
$ bp
And follow the interactive menu, which will let you:
A shortlink is a pointer to a Git repo which looks like this:

Any one of these is a legal shortlink:
user/repo -> resolves to https://github.com/user/repo
gl:user/repo -> resolves to https://gitlab.org/user/repo
user/repo/-/subfolder -> takes only 'subfolder'
user/repo#wip -> takes the 'wip' branch
:white_check_mark: Bare minimum is user/repo which defaults to Github.
:white_check_mark: You can set up a custom prefix if you want.
Yes, use the folder notation /-/:
$ bp user/repo/-/path/to/folder dest-folder
Branches or tags can be used with the #branch specifier.
$ bp kriasoft/react-starter-kit#feature/redux my-starter
Yes. Use -f to grab content and apply it to an existing empty or populated directories:
$ cd your-directory
$ bp -f user/repo
If it's one of the supported vendors, you can create a custom prefix configuration:
vendors:
custom:
gh:
kind: github
base: github.acme.com/my-org
Note that in addition to the custom hosted github.acme.com server, we also specified a default org my-org above, so it saves a bit of typing. Then you can run:
$ bp gh:my-repo my-repo
Where it's non ambiguous, yes. For example, when you specify a subfolder:
$ bp user/repo/-/my-folder
Will grab just my-folder from user/repo and create in a destinaton folder called my-folder.
If there's a inference strategy you think will work, open an issue or submit a PR.
With Homebrew it happens automatically. Otherwise, download a binary and add its containing folder to your PATH in the way that's supported by your OS.
We're accepting PRs for other OS specific installers.
Just git to exist (and we will eventually remove that dependency). Other than that the bp binary is self contained and has no dependencies.
Yes. backpack will act differently when the source is a file, it will do what you're expecting it to.
For example, this will give you a .gitignore file from another project:
$ cd my-project
$ bp -f rusty-ferris-club/backpack/-/.gitignore
$ tree
.gitignore
This will copy just a single workflow file, but also the entire hierarchy of folders:
$ cd my-project
$ bp -f rusty-ferris-club/backpack/-/.github/workflows/build.yml
$ tree
.github/
workflows/
build.yml
Or in other words:
We are accepting PRs. Feel free to submit PRs.
To all Contributors - you make this happen, thanks!
Copyright (c) 2022 @jondot. See LICENSE for further details.
FAQs
Backpack
We found that @backpacktools/backpack-bin-linux-x64 demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
Socket found 37 malicious PyPI wheels that abuse Python startup hooks to launch a Bun-powered credential stealer tied to Mini Shai-Hulud/Miasma.

Security News
RubyGems and Bundler 4.0.13 introduced an opt-in cooldown feature that delays newly published gems during dependency resolution.

Security News
pnpm 11.5 now recognizes npm staged publish approvals in release metadata, preventing those releases from being mistaken for lower-trust package publishes.