Skip to main content

A terminal tool to audit, optimize, and visualize Docker-Compose stacks in real-time

Project description

Composure

A terminal tool to audit, optimize, and visualize Docker-Compose stacks in real-time.

Python 3.9+ License: MIT

What is Composure?

Composure is a TUI (Terminal User Interface) dashboard that helps you:

  • Monitor all your Docker containers in real-time
  • Detect waste by comparing actual resource usage vs allocated limits
  • Visualize networks to see how containers connect to each other
  • Control containers directly from the terminal (start, stop, restart, view logs)

Features

  • Resource Monitoring: See CPU and memory usage for all containers
  • Waste Detection: Identify over-provisioned containers with waste scores
  • Limit Awareness: Quickly spot containers without resource limits
  • Network Visualization: Tree view showing container network topology
  • Container Controls: Start, stop, restart containers with keyboard shortcuts
  • Live Logs: View recent logs for any container
  • Parallel Loading: Fast startup even with many containers

Installation

Using pip (recommended)

pip install composure

Using uv

uv tool install composure

Using Docker

docker run -it -v /var/run/docker.sock:/var/run/docker.sock jamesdimonaco/composure

Debian/Ubuntu (apt)

# Add the repository
curl -fsSL https://jamesdimonaco.github.io/composure/gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/composure.gpg
echo "deb [signed-by=/usr/share/keyrings/composure.gpg] https://jamesdimonaco.github.io/composure stable main" | sudo tee /etc/apt/sources.list.d/composure.list

# Install
sudo apt update
sudo apt install composure

From source

git clone https://github.com/JamesDimonaco/composure.git
cd composure
uv sync
uv run composure

Usage

Simply run:

composure

Keyboard Shortcuts

Key Action
q Quit
r Refresh
n Toggle network view
s Stop selected container
a Start selected container
x Restart selected container
l Show logs for selected container
? Show help
↑/↓ Navigate containers

Understanding the Dashboard

Main View

Container     Status   CPU %  CPU Limit  RAM Used  RAM Limit  Efficiency  Waste
nginx         running  0.5%   2 cores    45 MB     512 MB     LOW         90
api           running  2.1%   No limit   128 MB    256 MB     MEDIUM      40
postgres      running  1.2%   1 core     256 MB    512 MB     GOOD        20

Columns Explained

  • Status: running, exited, paused, etc.
  • CPU %: Current CPU usage
  • CPU Limit: Configured CPU limit (or "No limit")
  • RAM Used: Current memory usage
  • RAM Limit: Configured memory limit (or "No limit")
  • Efficiency: LOW/MEDIUM/GOOD/HIGH based on resource utilization
  • Waste: 0-100 score (higher = more over-provisioned)

Waste Score

The waste score helps identify containers that have been allocated far more resources than they're using:

  • 0-30 (green): Good utilization
  • 30-60 (yellow): Could be optimized
  • 60-100 (red): Significantly over-provisioned

Network View

Press n to see a tree view of your Docker networks:

Docker Networks
├── Compose Networks
│   └── myapp_default (3 containers)
│       ├── nginx
│       ├── api
│       └── postgres
└── System Networks
    └── bridge (empty)

Requirements

  • Python 3.9+
  • Docker Engine running locally
  • Access to Docker socket

Development

# Clone the repo
git clone https://github.com/JamesDimonaco/composure.git
cd composure

# Install dependencies
uv sync

# Run in development
uv run composure

# Run tests
uv run pytest

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

MIT License - see LICENSE for details.

Acknowledgments

Built with:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

composure-0.1.0.tar.gz (14.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

composure-0.1.0-py3-none-any.whl (13.1 kB view details)

Uploaded Python 3

File details

Details for the file composure-0.1.0.tar.gz.

File metadata

  • Download URL: composure-0.1.0.tar.gz
  • Upload date:
  • Size: 14.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.25 {"installer":{"name":"uv","version":"0.9.25","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for composure-0.1.0.tar.gz
Algorithm Hash digest
SHA256 210575fcad4ef537d32b1087ceedf46d4ecd1da98c8553ce498ef8bf353a22ff
MD5 89a0c27b98da8ffbd4f20e3cd3d6889e
BLAKE2b-256 bf512d40d2f5ed622ac9447bb79922cb675510bfdacc3edca5990bcaba3a94cc

See more details on using hashes here.

File details

Details for the file composure-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: composure-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 13.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.25 {"installer":{"name":"uv","version":"0.9.25","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for composure-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9e5a130e19a3b2173b70e979f33f7adeb4b7108dc342284318ec8f35c019cfcd
MD5 33cca0457a4412436d29eb2badd2cab4
BLAKE2b-256 69c938c4ec6ff604a58b30a1645b4aa2d56d6c0fce91b6ab1c54967368af81e2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page