{"id":39133440,"url":"https://github.com/jr-k/d4s","last_synced_at":"2026-03-04T23:04:01.594Z","repository":{"id":332686239,"uuid":"1134603556","full_name":"jr-k/d4s","owner":"jr-k","description":"🍊 A fast, keyboard-driven terminal UI to manage Docker containers, Compose stacks, and Swarm services with the ergonomics of K9s.","archived":false,"fork":false,"pushed_at":"2026-01-29T15:48:24.000Z","size":7160,"stargazers_count":34,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-01-30T03:42:17.963Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://d4scli.io","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jr-k.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"jr-k","custom":"https://paypal.me/jierka"}},"created_at":"2026-01-15T00:11:58.000Z","updated_at":"2026-01-29T15:47:54.000Z","dependencies_parsed_at":"2026-01-20T08:00:31.324Z","dependency_job_id":null,"html_url":"https://github.com/jr-k/d4s","commit_stats":null,"previous_names":["jr-k/d4s"],"tags_count":31,"template":false,"template_full_name":null,"purl":"pkg:github/jr-k/d4s","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jr-k%2Fd4s","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jr-k%2Fd4s/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jr-k%2Fd4s/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jr-k%2Fd4s/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jr-k","download_url":"https://codeload.github.com/jr-k/d4s/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jr-k%2Fd4s/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29062484,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-03T23:14:54.203Z","status":"ssl_error","status_checked_at":"2026-02-03T23:14:50.873Z","response_time":96,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-17T21:21:51.225Z","updated_at":"2026-03-04T23:04:01.580Z","avatar_url":"https://github.com/jr-k.png","language":"Go","funding_links":["https://github.com/sponsors/jr-k","https://paypal.me/jierka"],"categories":["User Interfaces","Table of Contents"],"sub_categories":["Terminal"],"readme":"\u003cdiv align=\"left\" width=\"100%\"\u003e\n    \u003cimg src=\"./docs/img/d4s-unpadded.png\" width=\"328\" alt=\"\" /\u003e\n\u003c/div\u003e\n\n\n# D-Force (d4s)\n\nD4S (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.\n\n\u003ca target=\"_blank\" href=\"https://github.com/jr-k/d4s/commit/HEAD\"\u003e\u003cimg src=\"https://img.shields.io/github/last-commit/jr-k/d4s?color=green\" /\u003e\u003c/a\u003e\n\u003ca target=\"_blank\" href=\"https://github.com/jr-k/d4s/stargazers\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/jr-k/d4s?style=flat\u0026color=yellow\" /\u003e\u003c/a\u003e\n\u003ca target=\"_blank\" href=\"https://github.com/jr-k/d4s/pkgs/container/d4s\"\u003e\u003cimg src=\"https://img.shields.io/badge/ghcr.io-d4s-orange?logo=github\u0026color=orange\" /\u003e\u003c/a\u003e\n\n## Screenshots\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"./docs/img/screen1.png\" width=\"100%\" /\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"./docs/img/screen2.png\" width=\"100%\" /\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"./docs/img/screen3.png\" width=\"100%\" /\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"./docs/img/screen4.png\" width=\"100%\" /\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"./docs/img/screen5.png\" width=\"100%\" /\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"./docs/img/screen6.png\" width=\"100%\" /\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n## Features\n\n- **Fancy UI**: Modern TUI with Dracula theme, smooth navigation, and live updates.\n- **Keyboard Centric**: Vim-like navigation (`j`/`k`), shortcuts for everything. No mouse needed.\n- **Full Scope**: Supports **Containers**, **Images**, **Volumes**, **Networks**.\n- **Compose Aware**: Easily identify containers belonging to Compose stacks.\n- **Swarm Aware**: Supports **Nodes**, **Services**.\n- **Powerful Search**: Instant fuzzy filtering (`/`) and command palette (`:`).\n- **Live Stats**: Real-time CPU/Mem usage for containers and host context.\n- **Advanced Logs**: Streaming logs with auto-scroll, timestamps toggle, and wrap mode.\n- **Quick Shell**: Drop into a container shell (`s`) in a split second.\n- **Contextual Actions**: Inspect, Restart, Stop, Prune, Delete with safety confirmations.\n\n## Installation\n\n\u003e ### Generic\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eBinary Releases\u003c/b\u003e\u003c/summary\u003e\n\n\u003e Automated\n```bash\ncurl -fsSL https://d4scli.io/install.sh | sh -s -- ~/.local/bin\n```\n*The script installs downloaded binary to `$HOME/.local/bin` directory by default, but it can be changed by setting DIR environment variable.*\n\n\u003e Manual\n\nGrab a release from the [releases page](https://github.com/jr-k/d4s/releases) and install it manually.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eDocker\u003c/b\u003e\u003c/summary\u003e\n\n```bash\ndocker run --rm --pull always -it -v /var/run/docker.sock:/var/run/docker.sock ghcr.io/jr-k/d4s:latest\n```\n\n**You might want to create an alias for quicker usage. For example:**\n\n```bash\necho \"alias d4s='docker run --rm --pull always -it -v /var/run/docker.sock:/var/run/docker.sock ghcr.io/jr-k/d4s:latest'\" \u003e\u003e ~/.zshrc\n```\n*After running this, either restart your terminal or run `source ~/.zshrc` (or `source ~/.bashrc` for Bash) to enable the alias.*\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eFrom Source\u003c/b\u003e\u003c/summary\u003e\n\n\u003eRequirement: Go 1.21+\n```bash\ngit clone https://github.com/jr-k/d4s.git\ncd d4s\ngo build -o d4s cmd/d4s/main.go\nsudo mv d4s ~/.local/bin/\n```\n\n```bash\n# Make the binary accessible then run it\nmv d4s ~/.local/bin/\nd4s\n\n# Quickly run from source\ngo run cmd/d4s/main.go\n```\n\u003c/details\u003e\n\n\n\u003e ### macOS\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eHomebrew\u003c/b\u003e\u003c/summary\u003e\n\n```bash\nbrew install jr-k/d4s/d4s\n```\n\u003c/details\u003e\n\n\u003e ### Linux\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eAPT (Debian/Ubuntu)\u003c/b\u003e\u003c/summary\u003e\n\n```bash\nsudo apt install -y gpg \u0026\u0026 curl -fsSL https://apt.d4scli.io/d4s.gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/d4s.gpg\necho \"deb [signed-by=/usr/share/keyrings/d4s.gpg] https://apt.d4scli.io stable main\" | sudo tee /etc/apt/sources.list.d/d4s.list\nsudo apt update\nsudo apt install d4s\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eRPM (Fedora/RHEL)\u003c/b\u003e\u003c/summary\u003e\n\n```bash\nsudo tee /etc/yum.repos.d/d4s.repo \u003c\u003cEOF\n[d4s]\nname=D4S Repository\nbaseurl=https://rpm.d4scli.io\nenabled=1\ngpgcheck=1\ngpgkey=https://rpm.d4scli.io/RPM-GPG-KEY-d4s\nEOF\nsudo dnf install d4s\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eZypper (openSUSE)\u003c/b\u003e\u003c/summary\u003e\n\n```bash\nsudo zypper addrepo https://zypper.d4scli.io d4s\nsudo zypper refresh\nsudo zypper install d4s\n```\n\u003c/details\u003e\n\n\u003e ### Windows\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eScoop\u003c/b\u003e\u003c/summary\u003e\n\n```powershell\nscoop bucket add d4s https://github.com/jr-k/scoop-d4s\nscoop install d4s\n```\n\u003c/details\u003e\n\n\n## Usage\n```bash\nd4s\nd4s version\nd4s --context my-remote-ctx\n```\n\n## Configuration\n\nD4S uses a YAML configuration file located at `$XDG_CONFIG_HOME/d4s/config.yaml` (defaults to `~/.config/d4s/config.yaml`).\n\nAll settings are optional and have sensible defaults. Below is a fully documented example:\n\n```yaml\nd4s:\n  # Refresh interval in seconds. Minimum 2.0 — values below are capped. Default: 2.0\n  refreshRate: 2\n  # Docker API server request timeout. Default: 120s\n  apiServerTimeout: 15s\n  # Disable all modification commands (delete, kill, restart, etc.). Default: false\n  readOnly: false\n  # Default view on startup (containers, images, volumes, networks, services, nodes, compose, secrets). Default: \"\" (containers)\n  defaultView: \"\"\n  # When true, Ctrl+C won't exit — use :quit instead. Default: false\n  noExitOnCtrlC: false\n  # Skip checking GitHub for new releases on startup. Default: false\n  skipLatestRevCheck: false\n\n  # UI settings\n  ui:\n    # Enable mouse support. Default: false\n    enableMouse: false\n    # Hide the entire header bar (stats + shortcuts + logo). Default: false\n    headless: false\n    # Hide the D4S ASCII logo from the header. Default: false\n    logoless: false\n    # Hide breadcrumb trail in the status bar. Default: false\n    crumbsless: false\n    # Invert all theme colors (dark↔light), preserving hue. Default: false\n    invert: false\n    # Skin name — loads from $XDG_DATA_HOME/d4s/skins/\u003cname\u003e.yaml. Default: \"default\" (builtin: default, dracula)\n    skin: \"default\"\n\n  # Log viewer settings\n  logger:\n    # Number of tail lines to fetch initially. Default: 100\n    tail: 200\n    # How far back to go in the log timeline (seconds). -1 = tail mode. Default: -1\n    sinceSeconds: -1\n    # Enable line wrapping in log viewer. Default: false\n    textWrap: false\n    # Disable auto-scroll when new log lines arrive. Default: false\n    disableAutoscroll: false\n    # Show timestamps on each log line. Default: false\n    showTime: false\n\n  # Shell pod used for volume browsing and secret decoding\n  shellPod:\n    image: ghcr.io/jr-k/nget:latest\n```\n\n## Skins\n\n### Built-in Skins\n\nSet skin using `--skin` (or `-s`) flag when running `d4s` or set `d4s.ui.skin` option in the configuration file.\n\nD4S comes with a few built-in skins:\n\n- `default`\n- `dracula`\n- `monokai`\n- `nord`\n- `gruvbox`\n- `tokyonight`\n\n### Custom Skins\n\nD4S supports custom skins. Skins are stored in `$XDG_DATA_HOME/d4s/skins/\u003cname\u003e.yaml` (defaults to `~/.local/share/d4s/skins`).\n\n## Contributing\n\nThere's still plenty to do! Take a look at the [contributing guide](CONTRIBUTING.md) to see how you can help.\n\n## Discussion / Need help ?\n\n### Open an Issue\n[\u003cimg src=\"./docs/img/social/github.png\" width=\"64\"\u003e](https://github.com/jr-k/d4s/issues/new/choose)\n\n---\n*Built with Go \u0026 Tview. Inspired by K9s.*\n\n*D4s uses several open source libraries. Thanks to the maintainers who make this possible.*\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjr-k%2Fd4s","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjr-k%2Fd4s","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjr-k%2Fd4s/lists"}