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.
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file composure-0.1.3.tar.gz.
File metadata
- Download URL: composure-0.1.3.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":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dad539390833c3452080fea86f4b7f7591a35e9e98b614431d15c2ad2e8975d0
|
|
| MD5 |
3de0ed8cfc7a7251d16dfd0a806f4011
|
|
| BLAKE2b-256 |
bb55d0a658c9eb6cb837dc8736496a5a564865cc9308069c2cf8e988ff133e2d
|
File details
Details for the file composure-0.1.3-py3-none-any.whl.
File metadata
- Download URL: composure-0.1.3-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":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3ce21e95269a063bc92825e01e3d9e7a93c17dedff6b767000fa11acdb55d8ff
|
|
| MD5 |
581f9e1b989d7fb186f0354516529cfa
|
|
| BLAKE2b-256 |
a9c62934037f8773eb33299fe5707f9cb151fd0551003a56b2a4880176e3247c
|