Skip to content
Docs

Introduction

Bulker manages multi-container computing environments that are both modular and interactive. A bulker environment consists of an individual container image for each command. Bulker creates shimlinks — symlinks to the bulker binary that dispatch to the right container based on the command name. Commands appear on your PATH as if natively installed.

Bulker is a single static binary with zero dependencies. No Python, no pip, no virtualenvs — one curl command and you’re done.

  1. It simplifies using containers. If you activate samtools with bulker, you invoke it by typing samtools; bulker handles docker run --volume ... behind the scenes. It spans container engines (Docker and Apptainer), providing a single interface. You’ll be using containers without knowing it.

  2. It distributes multiple tools at once. Distribute a set of images — all the tools for a workflow — with one command: bulker activate namespace/toolset. Bulker loads multiple independent tools with a single command.

  3. It makes workflows automatically containerized. Since bulker commands act like native commands, activating a crate immediately containerizes any workflow. Workflow authors need only provide a manifest listing the required commands.

  4. It makes environments portable and interactive. Bulker environments decouple tool settings from environment settings. Move environments between servers, cloud, and your laptop. Activate and deactivate interactively.

Bulker is not a package manager, but it can replace some package manager tasks. Instead of installing software natively with pip or conda, you can activate it through bulker. The differences:

  • Bulker uses containers. Package managers install tools natively. Bulker runs containerized software.
  • Bulker is collection-first. Most package managers operate on individual tools (pip install tool). Bulker operates on collections: bulker activate toolset.

Bulker is not a workflow manager. But bulker can take over the container-management aspect of an existing workflow. The key difference:

  • Bulker environments are independent. They are not tied to workflows. Bulker only cares about the computing environment.

Write your workflow without containers, activate a bulker crate, and you get portability, interactivity, and efficiency.