Shell-native executable packages

Bringing reproducibility back to shell commands

TAFFISH turns shell-based bioinformatics tool invocations into versioned, container-resolved, installable executable packages for command-level reproducibility.

TAFFISH stands for Tools And Flows Framework Intensify SHell.

Shell-First Ordinary commands, reproducible semantics
Executable Apps Tool call, metadata, runtime
Workflow-Compatible Usable beneath existing systems

Core position

TAFFISH starts where bioinformatics actually happens: shell commands.

01

Command-level reproducibility

TAFFISH focuses on the command execution layer beneath workflows: first make each tool invocation reproducible, then compose them into larger analyses.

02

Shell-native delivery

TAFFISH does not move commands away from shell. It keeps ordinary command-line use while adding versioned, container-resolved execution semantics underneath.

03

Executable package ecosystem

A TAFFISH app binds a tool call, command interface, metadata, runtime container, dependencies, smoke checks, and Hub index records into one installable command entity.

Runtime and implementation

Built in Common Lisp, delivered with SBCL and LispWorks, and run through container backends.

Container backends

Choose the runtime that fits the machine.

TAFFISH apps are designed to run through Docker, Podman, or Apptainer, including HPC-oriented environments where Apptainer is the natural choice.

Implementation

The core tooling stays close to the language.

The compiler, CLI, metadata handling, and index tooling stay in Common Lisp, with SBCL for open development and LispWorks solving Linux delivery.

Target environments

Unix-like shells first, with WSL as the Windows path.

TAFFISH is shaped around shell-native bioinformatics work on Linux and macOS; Windows users can use WSL2 with a configured container backend.

Architecture and distribution support may vary by TAFFISH release and app image; package metadata should declare amd64/arm64 availability when relevant.

Linux macOS

Get started

Install once, then let the index do the finding.

The canonical installers and backend notes live in the core repository. After taf is available locally, the first command path is intentionally small.

Open installation guide
taf update
taf install <app>
taf info <app>
taf list --online

Hub architecture

GitHub repositories become verifiable executable packages.

  1. 1

    Create an app repository

    A root taffish.toml declares package metadata, command name, kind, entry script, container hints, parameter-facing help, and optional upstream information.

  2. 2

    Tag versioned releases

    Release tags use the v0.1.0-r1 pattern, keeping upstream app versions and TAFFISH rebuilds distinguishable.

  3. 3

    Build containers in Actions

    Each app repository owns its own Dockerfile-based image build and publishes the image through GitHub infrastructure.

  4. 4

    Refresh the static index

    taffish-index scans app repositories, validates new versions, records dependencies, platform constraints, container digests, and smoke/trust metadata, then writes JSON for taf.

Project stories

Essays on what TAFFISH is, where it came from, and why it matters.

Positioning

What Is TAFFISH?

The positioning note: TAFFISH brings reproducibility back to shell-based bioinformatics commands.

History

TAFFISH History

A short note on how the project grew from repeated command-line work into executable packages, tools, flows, and a Hub.

Personal note

My TAFFISH Story

A personal essay on biological questions, repeated analysis work, Common Lisp, Shell, and why TAFFISH kept growing.

Preprint

TAFFISH is described in a bioRxiv preprint.

TAFFISH: A lightweight, modular, and containerized workflow framework for reproducible bioinformatics analyses

Kaiyuan Han, Ting Wang, Shi-Shi Yuan, Cai-Yi Ma, Wei Su, Kejun Deng, Xiaolong Li, Hao Lv*, and Hao Lin*.

First affiliation: University of Electronic Science and Technology of China.

* Corresponding authors.