Skip to content

Repository files navigation

canery logo

CIGoGo Report CardGitHub releasecodecovLicenseMade with Bubbletea

Berth is a terminal-based UI to manage your containers, images, volumes, networks, and system usage — with support for Docker and Podman. Name origin: In maritime terms, a berth is a designated place where a ship is docked — just like containers in your stack. Clean, organized, and under control.

Berth demo

📖 Table of Contents

✨ Overview

Berth is a comprehensive terminal user interface (TUI) application built in Go, designed to simplify the management of Docker and Podman container environments. It provides a real-time, interactive experience for listing, inspecting, and controlling containers, images, volumes, and networks directly from your terminal. Berth aims to offer a k9s-like experience for container orchestration, focusing on usability, visual consistency, and efficient workflow.

🚀 Installation

Prerequisites

  • Go (version 1.26 or higher recommended)
  • Docker or Podman installed and running

Steps

# 1. Clone the repository
git clone https://github.com/rluders/berth.git
# 2. Enter the project directorycd berth
# 3. Build the binary
make build
# 4. Run it!
make run

🧭 Usage

Berth provides an intuitive keyboard-driven interface.

🎹 Global Keys

KeyAction
1Containers view
2Images view
3Volumes view
4Networks view
5System view
?Toggle help overlay
q / escBack / quit
ctrl+cQuit

🛠️ Container Actions

KeyAction
enterContainer details
sStart container
xStop container
rRestart container
dRemove container
lView logs
iInspect container
eExec shell
/Filter containers
gToggle group by compose
Expand compose group
Collapse compose group

📦 Image Actions

KeyAction
dRemove image
PPrune dangling images
/Filter images

💾 Volume Actions

KeyAction
dRemove volume
/Filter volumes

🌐 Network Actions

KeyAction
iInspect network

🧼 System Cleanup

KeyAction
bBasic cleanup — stopped containers, unused networks, dangling images
aAdvanced cleanup — basic + unused volumes
tTotal cleanup — all unused resources

📋 Logs View

KeyAction
pPause log stream
fFollow (tail) logs
nToggle line numbers

🛠️ Technology Stack

📂 Project Structure

.
├── cmd/ # CLI entry point
├── internal/
│ ├── tui/ # Bubble Tea models, views, and components
│ ├── engine/ # Docker/Podman client abstraction
│ ├── service/ # Service layer (container, image, volume, network, system)
│ ├── controller/ # Action handlers (start, stop, remove, inspect, …)
│ └── utils/ # Formatting helpers and exec wrappers
├── docs/ # Assets (logo, screenshots)
├── go.mod
└── README.md

🚢 Release Process

Releases are fully automated via GoReleaser and GitHub Actions.

How to release

git tag v1.2.3
git push origin v1.2.3

Pushing a v*.*.* tag triggers the Release workflow, which:

  1. Runs all tests (go test ./...)
  2. Builds binaries for Linux, macOS, and Windows (amd64 + arm64)
  3. Packages archives (tar.gz for Unix, zip for Windows)
  4. Generates checksums.txt
  5. Publishes a GitHub Release with all artifacts

Versioning

Follow Semantic Versioning: vMAJOR.MINOR.PATCH

  • Tags matching v*.*.*-* (e.g. v1.0.0-rc1) are published as pre-releases automatically.
  • No manual draft step — releases go live immediately.

Artifacts

FileDescription
berth_VERSION_linux_amd64.tar.gzLinux x86-64 binary
berth_VERSION_linux_arm64.tar.gzLinux ARM64 binary
berth_VERSION_darwin_amd64.tar.gzmacOS x86-64 binary
berth_VERSION_darwin_arm64.tar.gzmacOS ARM64 binary
berth_VERSION_windows_amd64.zipWindows x86-64 binary
berth_VERSION_windows_arm64.zipWindows ARM64 binary
checksums.txtSHA256 checksums for all archives

🤝 Contributing

We welcome contributions to Berth! If you're interested in improving the project, please consider:

  • Reporting bugs or suggesting features via GitHub Issues.
  • Submitting pull requests for bug fixes or new features. Please ensure your code adheres to the existing style and includes appropriate tests.

Contributors

Made with contrib.rocks.

📜 License

MIT License.

About

A modern terminal UI to manage Docker and Podman containers with style. Explore, inspect, and control your container stack — all from the command line.

Resources

Contributing

Stars

14 stars

Watchers

0 watching

Forks

Releases

Sponsor this project

Contributors

Languages