# Install tini with Homebrew, apk, apt, dnf, Nix, zypper

Tiny but valid init for containers. Version 0.19.0 via Homebrew; verified from local package data.

## Install

```sh
sudo av install brew:tini
```

Additional install commands:

### macOS

- Homebrew (100%):

```sh
brew install tini
```

  Evidence: local Homebrew formula metadata

### Linux

- apk (92%):

```sh
sudo apk add tini
```

  Evidence: Alpine Linux edge package indexes: tini from https://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz

- Debian apt (92%):

```sh
sudo apt install tini
```

  Evidence: Debian stable package indexes: tini from https://deb.debian.org/debian/dists/stable/main/binary-amd64/Packages.xz

- dnf (92%):

```sh
sudo dnf install tini
```

  Evidence: Fedora Rawhide package metadata: tini from https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/repodata/e5ca8ce900cd68f5419e1c39ae517343100b306336cbaeb70a3c153121d95094-primary.xml.zst

- Nix (92%):

```sh
nix profile install nixpkgs#tini
```

  Evidence: nixpkgs package indexes: pkgs/by-name/ti/tini/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1

- zypper (92%):

```sh
sudo zypper install tini
```

  Evidence: openSUSE Tumbleweed package metadata: tini from https://download.opensuse.org/tumbleweed/repo/oss/repodata/be8d3611d25469107f32075a1697e69ec57a2b850b42348a658cc671ad5ec2b50760d02c3e59524d50da9a11d5be799bdaffba2e166e8ca8858512e3c0bd665d-primary.xml.zst

## Package facts

- **Package key:** brew:tini
- **Package manager:** Homebrew
- **Package manager page:** <https://formulae.brew.sh/formula/tini>
- **Version:** 0.19.0
- **Source summary:** Tiny but valid init for containers
- **Homepage:** <https://github.com/krallin/tini>
- **Repository:** <https://github.com/krallin/tini>
- **Upstream docs:** <https://github.com/krallin/tini#readme>
- **License:** MIT
- **Source archive:** <https://github.com/krallin/tini/archive/refs/tags/v0.19.0.tar.gz>
- **Generated:** 2026-07-08T07:18:31+00:00

## Executables

- docker-init (cli)
- tini (cli)
- tini-static (cli)
- docker-init (alias)
- tini (alias)
- tini-static (alias)

## Build dependencies

- cmake

## Install behavior

- Post-install hook: not defined
- Bottle: available on arm64_linux, x86_64_linux

## Freshness

- Page generated: 2026-07-08
- Package-manager version: 0.19.0
- Local data: ok
- Upstream repository: https://github.com/krallin/tini
- Upstream latest detected: v0.19.0 (current)
- info: No package-manager update timestamp was available.
## Project history and usage

Tini is a small init process for containers. It became widely known because it solves the PID 1 problem in Docker-style containers: reaping zombie processes and forwarding signals while staying transparent to the application.

### Project history

Tini's README defines the project in intentionally minimal terms: it spawns one child process, waits for it to exit, reaps zombies, and forwards signals. That narrow scope is the project's identity; it is not a process supervisor, service manager, or orchestration layer.

The first visible tag in the official repository is v0.1.0 in 2015, and the release stream continued through v0.19.0 in 2020. Over that period the README grew into a container-packaging guide: download a signed binary, verify checksums, add it as an ENTRYPOINT, or install it from a distribution package.

### Adoption history

Tini's adoption story is unusually strong for a tiny utility because Docker incorporated it. The README states that Docker 1.13 and later include Tini and enable it with docker run --init; Docker's own prior release notes describe the --init flag as using Tini as a zombie-reaping PID 1.

The README also documents Alpine Linux, NixOS, Debian, and Arch packaging, plus prebuilt Docker images. The supplied package-manager facts add Homebrew, Fedora/dnf, Ubuntu, and zypper, showing that package managers treat Tini as a standalone utility even after Docker embedded it.

### How it is used

The common manual use is to install a Tini binary into a container image and set ENTRYPOINT to run Tini before the real application. Tini then handles signal forwarding and child reaping, preserving application behavior while making container shutdown and cleanup more predictable.

Operators can also use options for subreaping when Tini is not PID 1, exit-code remapping for cases such as SIGTERM exit 143, and process-group killing for shell wrappers or child process trees.

### Why package nerds care

Tini is package-nerd catnip because it is almost the smallest possible program that became infrastructure. It turned a subtle Linux/container semantic problem into a single binary that distros, Docker images, and Docker itself could depend on.

Its packaging story also shows how a tool can move from GitHub release asset, to distro package, to embedded runtime component, while still remaining useful as an explicit package for users outside Docker's default path.

### Timeline

- 2015: v0.1.0 appears in the official repository tag history.
- 2017: Docker 1.13 added --init support using Tini as a zombie-reaping PID 1.
- 2018: The project published v0.18.0.
- 2020: The project published v0.19.0, the current release shown by the official GitHub release list inspected for this batch.

### Related projects

- Docker is the most important downstream adopter; Docker 1.13 integrated Tini behind the --init flag.
- dumb-init occupies a similar container-init niche.
- Linux subreaper behavior is part of Tini's option model when it cannot run as PID 1.

### Sources

- GitHub official releases API output inspected for v0.19.0 and earlier releases.
- <https://docs.docker.com/engine/release-notes/prior-releases/: Docker --init release note using Tini.>
- <https://github.com/krallin/tini README: project purpose, Docker 1.13 note, install methods, options.>
- source_facts.package-manager: package availability across package managers.


## Security Notes

infrastructure mutation or orchestration signal.

- **Geiger risk:** orange / medium
- infrastructure mutation or orchestration signal

## Source Database Details

- **Source Database:** Homebrew formula API
- **Tap:** homebrew/core
- **Full Name:** tini
- **Version Scheme:** 0
- **Revision:** 0
- **Head Version:** HEAD
- **Requirements:** linux
- **Bottle Stable Root URL:** <https://ghcr.io/v2/homebrew/core>
- **Deprecated:** no
- **Disabled:** no
- **Keg Only:** no
- **URL Keys:** head, stable

## Other Package-Manager Records

- Debian apt - tini - 0.19.0-3+b7: normalized package name match | Debian stable package indexes: tini from https://deb.debian.org/debian/dists/stable/main/binary-amd64/Packages.xz | tiny but valid init for containers | https://github.com/krallin/tini
- Nix - tini: normalized package name match | nixpkgs package indexes: pkgs/by-name/ti/tini/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1
- Ubuntu apt - tini - 0.19.0-1: normalized package name match | Ubuntu 24.04 LTS package indexes: tini from https://archive.ubuntu.com/ubuntu/dists/noble/universe/binary-amd64/Packages.gz | tiny but valid init for containers | https://github.com/krallin/tini
- apk - tini - 0.19.0-r3: normalized package name match | Alpine Linux edge package indexes: tini from https://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz | A tiny but valid init for containers | https://github.com/krallin/tini
- apk - tini-static - 0.19.0-r3: normalized package name match | Alpine Linux edge package indexes: tini-static from https://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz | Static build of tini | https://github.com/krallin/tini
- dnf - tini - 0.19.0-12.fc44: normalized package name match | Fedora Rawhide package metadata: tini from https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/repodata/e5ca8ce900cd68f5419e1c39ae517343100b306336cbaeb70a3c153121d95094-primary.xml.zst | A tiny but valid init for containers | https://github.com/krallin/tini
- dnf - tini-static - 0.19.0-12.fc44: normalized package name match | Fedora Rawhide package metadata: tini-static from https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/repodata/e5ca8ce900cd68f5419e1c39ae517343100b306336cbaeb70a3c153121d95094-primary.xml.zst | Standalone static build of tini | https://github.com/krallin/tini
- zypper - tini - 0.19.0-3.3: normalized package name match | openSUSE Tumbleweed package metadata: tini from https://download.opensuse.org/tumbleweed/repo/oss/repodata/be8d3611d25469107f32075a1697e69ec57a2b850b42348a658cc671ad5ec2b50760d02c3e59524d50da9a11d5be799bdaffba2e166e8ca8858512e3c0bd665d-primary.xml.zst | A tiny but valid init for containers | https://github.com/krallin/tini
- zypper - tini-static - 0.19.0-3.3: normalized package name match | openSUSE Tumbleweed package metadata: tini-static from https://download.opensuse.org/tumbleweed/repo/oss/repodata/be8d3611d25469107f32075a1697e69ec57a2b850b42348a658cc671ad5ec2b50760d02c3e59524d50da9a11d5be799bdaffba2e166e8ca8858512e3c0bd665d-primary.xml.zst | A tiny but valid init for containers, with libc linked statically | https://github.com/krallin/tini
- Nix - docker-init: installed executable or alias match | nixpkgs package indexes: pkgs/by-name/do/docker-init/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1


## Related links

- [Cloud CLI packages](https://www.automicvault.com/pkg/cloud-clis/) - Belongs to a cloud or infrastructure command family.
- [Source-control packages](https://www.automicvault.com/pkg/source-control-tools/) - Belongs to a source-control command family.
- [Secret-risk packages](https://www.automicvault.com/pkg/secret-risk-packages/) - Has protected-tool coverage, approval-gate, or non-low Geiger security signals.
- [Terminal utility packages](https://www.automicvault.com/pkg/terminal-utilities/) - Matched terminal and command-line workflow metadata.
- [cmake](https://www.automicvault.com/pkg/brew/cmake/) - Build dependency declared by Homebrew.
- [docker-engine](https://www.automicvault.com/pkg/brew/docker-engine/) - Popular package that depends on this formula.
- [colima](https://www.automicvault.com/pkg/brew/colima/) - Shares av.db curated category or tags: cli, cloud-infrastructure, containers, docker.
- [container-canary](https://www.automicvault.com/pkg/brew/container-canary/) - Shares av.db curated category or tags: cli, cloud-infrastructure, containers, docker.
- [dcp](https://www.automicvault.com/pkg/brew/dcp/) - Shares av.db curated category or tags: cli, cloud-infrastructure, containers, docker.
- [dtop](https://www.automicvault.com/pkg/brew/dtop/) - Shares av.db curated category or tags: cli, cloud-infrastructure, containers, docker.
- [mintoolkit](https://www.automicvault.com/pkg/brew/mintoolkit/) - Shares av.db curated category or tags: cli, cloud-infrastructure, containers, docker.
- [source-to-image](https://www.automicvault.com/pkg/brew/source-to-image/) - Shares av.db curated category or tags: cli, cloud-infrastructure, containers, docker.
- [amazon-ecs-cli](https://www.automicvault.com/pkg/brew/amazon-ecs-cli/) - Shares av.db curated category or tags: cli, cloud-infrastructure, containers.
- [ansible-builder](https://www.automicvault.com/pkg/brew/ansible-builder/) - Shares av.db curated category or tags: cli, cloud-infrastructure, containers.

## Combined YAML source

View the package source record on GitHub. [combined/tini.yml](https://github.com/automic-vault/db/blob/main/combined/tini.yml)


## Sources

- Nucleus package database
- Geiger risk classifier
- package-page enrichment
- curated package history
- package version freshness
- av.db category and tag curation
- package relationship graph
- external package-manager database matches
- cross-ecosystem install command graph
