berth

module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 24, 2025 License: MIT

README ΒΆ

🚒 Berth – Terminal UI for Containers

Go Version License Build Status Made 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.

πŸ“– 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.24 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 directory
cd berth

# 3. Build the binary
make build

# 4. Run it!
make run

🧭 Usage

Berth provides an intuitive keyboard-driven interface.

🎹 Navigation
  • 1 β€” Containers View
  • 2 β€” Images View
  • 3 β€” Volumes View
  • 4 β€” Networks View
  • 5 β€” System View
πŸ› οΈ Container Actions
Key Action
s Start selected container
x Stop selected container
d Remove container
l View logs
i Inspect container
πŸ“¦ Image & Volume Actions
  • d β€” Remove selected image or volume
🧼 System Cleanup
Key Action
b Basic Cleanup
a Advanced Cleanup
t Total Cleanup
πŸ”™ Back / Exit
  • q or esc β€” Return to the previous view or quit the application from the main views.

πŸ› οΈ Technology Stack

πŸ“‚ Project Structure

.
β”œβ”€β”€ cmd/                 # CLI entry point (e.g., main.go)
β”œβ”€β”€ internal/
β”‚   β”œβ”€β”€ tui/             # All Bubbletea models/views/components
β”‚   β”œβ”€β”€ engine/          # Docker/Podman abstraction layer
β”‚   β”œβ”€β”€ controller/      # Logic for container/image/volume actions
β”‚   β”œβ”€β”€ state/           # Global state models
β”‚   └── utils/           # Helpers: formatting, exec wrappers, etc.
β”œβ”€β”€ assets/              # Logo, themes, maybe future plugins
β”œβ”€β”€ go.mod
└── README.md

🀝 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.

πŸ“œ License

This project is licensed under the MIT License.

Directories ΒΆ

Path Synopsis
cmd
berth command
Package main is the entry point for the Berth TUI application.
Package main is the entry point for the Berth TUI application.
internal
controller
Package controller provides the logic for interacting with container engines.
Package controller provides the logic for interacting with container engines.
engine
Package engine provides functionality for creating a Docker client.
Package engine provides functionality for creating a Docker client.
tui
Package tui provides the Terminal User Interface for Berth.
Package tui provides the Terminal User Interface for Berth.
utils
Package utils provides utility functions for Berth.
Package utils provides utility functions for Berth.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL