https://github.com/jr-k/d4s
π A fast, keyboard-driven terminal UI to manage Docker containers, Compose stacks, and Swarm services with the ergonomics of K9s.
https://github.com/jr-k/d4s
Last synced: 7 days ago
JSON representation
π A fast, keyboard-driven terminal UI to manage Docker containers, Compose stacks, and Swarm services with the ergonomics of K9s.
- Host: GitHub
- URL: https://github.com/jr-k/d4s
- Owner: jr-k
- License: apache-2.0
- Created: 2026-01-15T00:11:58.000Z (about 2 months ago)
- Default Branch: master
- Last Pushed: 2026-01-29T15:48:24.000Z (about 1 month ago)
- Last Synced: 2026-01-30T03:42:17.963Z (about 1 month ago)
- Language: Go
- Homepage: https://d4scli.io
- Size: 6.83 MB
- Stars: 34
- Watchers: 1
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
- fucking-awesome-docker - d4s - A fast, keyboard-driven terminal UI to manage Docker containers, Compose stacks, and Swarm services with the ergonomics of K9s by <b><code> ?β</code></b> <b><code> ?π΄</code></b> [@jr-k](https://github.com/jr-k/)) (Container Operations / User Interface)
- awesome-docker - d4s - A fast, keyboard-driven terminal UI to manage Docker containers, Compose stacks, and Swarm services with the ergonomics of K9s. (Container Operations / User Interface)
- awesome-tuis - d4s - driven terminal UI to manage Docker containers, Compose stacks, and Swarm services with the ergonomics of K9s (Table of Contents)
README
# D-Force (d4s)
D4S (pronounced *D-Force*) brings the power and ergonomics of K9s to the local Docker ecosystem. Stop wrestling with verbose CLI commands and start managing your containers like a pro.
## Screenshots
## Features
- **Fancy UI**: Modern TUI with Dracula theme, smooth navigation, and live updates.
- **Keyboard Centric**: Vim-like navigation (`j`/`k`), shortcuts for everything. No mouse needed.
- **Full Scope**: Supports **Containers**, **Images**, **Volumes**, **Networks**.
- **Compose Aware**: Easily identify containers belonging to Compose stacks.
- **Swarm Aware**: Supports **Nodes**, **Services**.
- **Powerful Search**: Instant fuzzy filtering (`/`) and command palette (`:`).
- **Live Stats**: Real-time CPU/Mem usage for containers and host context.
- **Advanced Logs**: Streaming logs with auto-scroll, timestamps toggle, and wrap mode.
- **Quick Shell**: Drop into a container shell (`s`) in a split second.
- **Contextual Actions**: Inspect, Restart, Stop, Prune, Delete with safety confirmations.
## Installation
> ### Generic
Binary Releases
> Automated
```bash
curl -fsSL https://d4scli.io/install.sh | sh -s -- ~/.local/bin
```
*The script installs downloaded binary to `$HOME/.local/bin` directory by default, but it can be changed by setting DIR environment variable.*
> Manual
Grab a release from the [releases page](https://github.com/jr-k/d4s/releases) and install it manually.
Docker
```bash
docker run --rm --pull always -it -v /var/run/docker.sock:/var/run/docker.sock ghcr.io/jr-k/d4s:latest
```
**You might want to create an alias for quicker usage. For example:**
```bash
echo "alias d4s='docker run --rm --pull always -it -v /var/run/docker.sock:/var/run/docker.sock ghcr.io/jr-k/d4s:latest'" >> ~/.zshrc
```
*After running this, either restart your terminal or run `source ~/.zshrc` (or `source ~/.bashrc` for Bash) to enable the alias.*
From Source
>Requirement: Go 1.21+
```bash
git clone https://github.com/jr-k/d4s.git
cd d4s
go build -o d4s cmd/d4s/main.go
sudo mv d4s ~/.local/bin/
```
```bash
# Make the binary accessible then run it
mv d4s ~/.local/bin/
d4s
# Quickly run from source
go run cmd/d4s/main.go
```
> ### macOS
Homebrew
```bash
brew install jr-k/d4s/d4s
```
> ### Linux
APT (Debian/Ubuntu)
```bash
sudo apt install -y gpg && curl -fsSL https://apt.d4scli.io/d4s.gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/d4s.gpg
echo "deb [signed-by=/usr/share/keyrings/d4s.gpg] https://apt.d4scli.io stable main" | sudo tee /etc/apt/sources.list.d/d4s.list
sudo apt update
sudo apt install d4s
```
RPM (Fedora/RHEL)
```bash
sudo tee /etc/yum.repos.d/d4s.repo <
Zypper (openSUSE)
```bash
sudo zypper addrepo https://zypper.d4scli.io d4s
sudo zypper refresh
sudo zypper install d4s
```
> ### Windows
Scoop
```powershell
scoop bucket add d4s https://github.com/jr-k/scoop-d4s
scoop install d4s
```
## Usage
```bash
d4s
d4s version
d4s --context my-remote-ctx
```
## Configuration
D4S uses a YAML configuration file located at `$XDG_CONFIG_HOME/d4s/config.yaml` (defaults to `~/.config/d4s/config.yaml`).
All settings are optional and have sensible defaults. Below is a fully documented example:
```yaml
d4s:
# Refresh interval in seconds. Minimum 2.0 β values below are capped. Default: 2.0
refreshRate: 2
# Docker API server request timeout. Default: 120s
apiServerTimeout: 15s
# Disable all modification commands (delete, kill, restart, etc.). Default: false
readOnly: false
# Default view on startup (containers, images, volumes, networks, services, nodes, compose, secrets). Default: "" (containers)
defaultView: ""
# When true, Ctrl+C won't exit β use :quit instead. Default: false
noExitOnCtrlC: false
# Skip checking GitHub for new releases on startup. Default: false
skipLatestRevCheck: false
# UI settings
ui:
# Enable mouse support. Default: false
enableMouse: false
# Hide the entire header bar (stats + shortcuts + logo). Default: false
headless: false
# Hide the D4S ASCII logo from the header. Default: false
logoless: false
# Hide breadcrumb trail in the status bar. Default: false
crumbsless: false
# Invert all theme colors (darkβlight), preserving hue. Default: false
invert: false
# Skin name β loads from $XDG_DATA_HOME/d4s/skins/.yaml. Default: "default" (builtin: default, dracula)
skin: "default"
# Log viewer settings
logger:
# Number of tail lines to fetch initially. Default: 100
tail: 200
# How far back to go in the log timeline (seconds). -1 = tail mode. Default: -1
sinceSeconds: -1
# Enable line wrapping in log viewer. Default: false
textWrap: false
# Disable auto-scroll when new log lines arrive. Default: false
disableAutoscroll: false
# Show timestamps on each log line. Default: false
showTime: false
# Shell pod used for volume browsing and secret decoding
shellPod:
image: ghcr.io/jr-k/nget:latest
```
## Skins
### Built-in Skins
Set skin using `--skin` (or `-s`) flag when running `d4s` or set `d4s.ui.skin` option in the configuration file.
D4S comes with a few built-in skins:
- `default`
- `dracula`
- `monokai`
- `nord`
- `gruvbox`
- `tokyonight`
### Custom Skins
D4S supports custom skins. Skins are stored in `$XDG_DATA_HOME/d4s/skins/.yaml` (defaults to `~/.local/share/d4s/skins`).
## Contributing
There's still plenty to do! Take a look at the [contributing guide](CONTRIBUTING.md) to see how you can help.
## Discussion / Need help ?
### Open an Issue
[
](https://github.com/jr-k/d4s/issues/new/choose)
---
*Built with Go & Tview. Inspired by K9s.*
*D4s uses several open source libraries. Thanks to the maintainers who make this possible.*