Repository navigation
Toolkit Manager
The toolkit manager lets you install Git-based security tools onto a VM, and save them to a registry so every new VM can get the same set automatically. No more re-cloning your favorite tools by hand on each fresh box.
sudo bull toolkit <vm-name> <git-url>The VM must be running. Bull clones the repo to /opt/toolkits/<name> inside the VM and auto-detects how to install it:
- Clone (or
git pull --ff-onlyif it already exists, re-cloning if the pull fails). - If the repo has an
install.sh, run it. - Otherwise, if it has a
setup.py, install Python requirements. -
chownthe result back to the VM user.
Saved toolkits live in ${BULL_HOME}/toolkits.json. From the interactive menu you can save, rename, and remove entries, and Bull offers to install all saved toolkits when you create a new VM.
Registry entries are just a name and a URL:
{
"toolkits": [
{ "name": "my-tool", "url": "https://github.com/owner/my-tool.git" }
]
}Saving is idempotent: saving an existing name updates its URL instead of duplicating it.
Because toolkits are installed over vagrant ssh -c, Bull validates input before it ever reaches the VM:
-
URLs must start with
https://,http://,git://,git@, orssh://, and must not contain shell metacharacters (`,',",$,(,),;,|,&,<,>). This blocks command injection. - Names (derived from the repo basename) must be alphanumeric plus hyphens and underscores.
If you maintain a security tool and want one-click installs to work:
- Add an
install.shat the repo root that handles its own dependencies. - Make it idempotent (safe to run more than once).
- Use
apt-get install -yfor system packages. - Never require interactive input.
Minimal example:
#!/usr/bin/env bash
set -uo pipefail
apt-get install -y python3 python3-pip 2>/dev/null || true
pip3 install -r requirements.txt 2>/dev/null || true
echo "[+] Tool installed to $(pwd)"Bull currently understands install.sh and setup.py. To teach it another (say Makefile or go install), edit install_toolkit() in lib/toolkits.sh and add an elif branch after the setup.py check. See Adding a Tool in the repo for the full guide and contribution checklist.
Bull · MIT License · Technical hardening only — see the Security Model.
Getting started
Features
Internals
Help