{"id":47610561,"url":"https://github.com/Eldara-Tech/swarmcli","last_synced_at":"2026-04-04T03:00:53.758Z","repository":{"id":293016825,"uuid":"976664437","full_name":"Eldara-Tech/swarmcli","owner":"Eldara-Tech","description":"A terminal UI for Docker Swarm that makes cluster state easier to see, understand, and reason about.","archived":false,"fork":false,"pushed_at":"2026-04-02T06:26:14.000Z","size":6240,"stargazers_count":12,"open_issues_count":10,"forks_count":6,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-04-02T20:10:10.773Z","etag":null,"topics":["cli","devops","docker","docker-swarm","golang","tui"],"latest_commit_sha":null,"homepage":"https://swarmcli.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/Eldara-Tech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-05-02T14:17:04.000Z","updated_at":"2026-04-02T06:26:18.000Z","dependencies_parsed_at":"2025-10-25T11:21:40.905Z","dependency_job_id":"893204aa-aad6-4a46-8f42-c6d8e80b7d6f","html_url":"https://github.com/Eldara-Tech/swarmcli","commit_stats":null,"previous_names":["mosonyi/swarmcli"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/Eldara-Tech/swarmcli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Eldara-Tech%2Fswarmcli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Eldara-Tech%2Fswarmcli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Eldara-Tech%2Fswarmcli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Eldara-Tech%2Fswarmcli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Eldara-Tech","download_url":"https://codeload.github.com/Eldara-Tech/swarmcli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Eldara-Tech%2Fswarmcli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31385935,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T01:22:39.193Z","status":"online","status_checked_at":"2026-04-04T02:00:07.569Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["cli","devops","docker","docker-swarm","golang","tui"],"created_at":"2026-04-01T20:00:59.471Z","updated_at":"2026-04-04T03:00:53.754Z","avatar_url":"https://github.com/Eldara-Tech.png","language":"Go","readme":"![CI](https://github.com/Eldara-Tech/swarmcli/actions/workflows/ci.yml/badge.svg)\n\n\u003cbr/\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003cbr /\u003e\n  \u003cimg src=\"assets/logo-black.svg\" alt=\"SwarmCLI Logo\" width=\"300\"\u003e\n  \u003ch1\u003eSwarm Management at the Speed of Thought\u003c/h1\u003e\n\n  \u003cp\u003e\n    \u003cstrong\u003eThe terminal-UI for Docker Swarm you’ve been waiting for. Fast, keyboard-driven, and open source.\u003c/strong\u003e\n  \u003c/p\u003e\n\n  \u003cp\u003e\n    \u003ca href=\"https://github.com/Eldara-Tech/swarmcli/actions\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/Eldara-Tech/swarmcli/ci.yml?branch=main\u0026style=flat-square\u0026logo=github\" alt=\"Build Status\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://goreportcard.com/report/github.com/Eldara-Tech/swarmcli\"\u003e\u003cimg src=\"https://img.shields.io/badge/go%20report-A+-brightgreen?style=flat-square\" alt=\"Go Report Card\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/Eldara-Tech/swarmcli/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/Eldara-Tech/swarmcli?style=flat-square\u0026color=re-blue\" alt=\"Latest Release\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/Eldara-Tech/swarmcli/blob/main/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-Apache%202.0-blue?style=flat-square\" alt=\"License\"\u003e\u003c/a\u003e\n  \u003c/p\u003e\n\n  \u003cp\u003e\n    \u003ca href=\"#-why-swarmcli\"\u003eWhy SwarmCLI?\u003c/a\u003e •\n    \u003ca href=\"#-quickstart\"\u003eQuickstart\u003c/a\u003e •\n    \u003ca href=\"#-features\"\u003eFeatures\u003c/a\u003e •\n    \u003ca href=\"#-installation\"\u003eInstallation\u003c/a\u003e •\n    \u003ca href=\"#-contributing\"\u003eContributing\u003c/a\u003e •\n    \u003ca href=\"https://swarmcli.io/\"\u003eHomepage\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n---\n\n## Visual Feast\n\n![alt text](assets/swarmcli.gif)\n\n## Why SwarmCLI?\n\nIn the Kubernetes world, **k9s** is the gold standard for cluster management. We believe Docker Swarm users deserve the same level of quality, speed, and intuition.\n\n**\"Because Swarm is not dead, it's just efficient. And it deserves better tools.\"**\n\nSwarmCLI translates the complexity of Docker Swarm into a sleek, keyboard-centric terminal UI. It’s built for developers who want to manage their clusters without leaving the terminal or waiting for heavy Web UIs to load.\n\n## Quickstart\n\nGet up and running in seconds:\n\n```bash\n# macOS/Linux via Homebrew\nbrew tap eldara-tech/tap\nbrew install swarmcli\n\n# Run it\nswarmcli\n```\n\n## Features\n\n- **Real-time Observability**: Live monitoring of Services, Tasks, Nodes, and Containers.\n- **Stack Awareness**: Navigate your cluster hierarchically (Stacks \u003e Services \u003e Tasks).\n- **Instant Logs**: No more `docker service logs -f`. Just press `l` on any service.\n- **Secrets \u0026 Configs**: Manage, rotate, and — with Pro — **reveal** secrets for debugging.\n- **Management Actions**: Scale, restart, remove, and update services with single keystrokes.\n- **Zero Config**: Works out-of-the-box with your local Docker engine or remote via SSH/Contexts.\n- **Lightweight**: Built with Go. Single static binary (\u003c 20MB). Zero dependencies.\n\n## Installation\n\n\u003c!-- ### Docker (No Installation)\n\n```bash\ndocker run --rm -it \\\n  -v /var/run/docker.sock:/var/run/docker.sock \\\n  ghcr.io/eldara-tech/swarmcli:latest\n``` --\u003e\n\n### Build from Source\n\n```bash\ngit clone https://github.com/Eldara-Tech/swarmcli.git\ncd swarmcli\ngo install\n```\n\n## Using Docker container to build and run locally\n\n```\ndocker build -t swarmcli-dev .\ndocker run --rm -it -v \"$PWD\":/app -v /var/run/docker.sock:/var/run/docker.sock  -w /app swarmcli-dev\n```\n\nor with docker compose:\n\n```\ndocker compose run --build --rm swarmcli\n```\n\nThen run:\n\n```\ngo run .\n```\n\n## Logging\n\n```bash\n# Production (default)\n$ go run .\n# → writes JSON logs to  ~/.local/state/swarmcli/app.log\n\n# Development\n$ SWARMCLI_ENV=dev go run .\n# → writes pretty logs to ~/.local/state/swarmcli/app-debug.log\n\n# Optional: control verbosity\n$ LOG_LEVEL=debug SWARMCLI_ENV=dev go run .\n```\n\n### Environment variables\n\n- `SWARMCLI_ENV`: `dev` enables pretty debug logs (default is `prod`).\n- `LOG_LEVEL`: `debug`, `info`, `warn`, `error`, …\n- `SWARMCLI_DISABLE_VERSION_CHECK=true`: disables the startup request to `https://swarmcli.io/api/v1/version` that checks whether a newer release is available.\n\nOn startup, SwarmCLI checks for a newer release by sending the current version and edition to `https://swarmcli.io/api/v1/version`. Set `SWARMCLI_DISABLE_VERSION_CHECK=true` to opt out.\n\nColorize log tails. Not perfect but simple:\n\n```bash\nsudo apt install ccze\ntail -f ~/.local/state/swarmcli/app-debug.log | ccze -A\n```\n\n### Integration tests\n\nThe logs for the integration tests can be enabled with:\n\n```bash\nTEST_LOG=1 ./test-setup/testenv.sh test\n```\n\n## Key Bindings\n\n| Key      | Action                  |\n| :------- | :---------------------- |\n| `?`      | Show Help / Cheat Sheet |\n| `:stack` | Navigate to Stacks      |\n| `:svc`   | Navigate to Services    |\n| `:node`  | Navigate to Nodes       |\n| `:config`  | Navigate to Config    |\n| `:secret`  | Navigate to Secret    |\n| `:node`  | Navigate to Nodes       |\n| `l`      | View Logs               |\n| `s`      | Scale Service           |\n| `r`      | Restart Service         |\n| `ctrl-c` | Quit                    |\n\n## Project Hygiene\n\nImpeccable project hygiene is the backbone of a thriving ecosystem.\n\n- **[Contributing](CONTRIBUTING.md)**: We ❤️ contributions! Check our guide to get started.\n- **[Security](SECURITY.md)**: Found a bug? Let us know securely.\n- **[Code of Conduct](CODE_OF_CONDUCT.md)**: Expectations for our community.\n- **[License](LICENSE)**: Apache 2.0.\n\n## Releasing\n\nReleases are fully automated — **no manual version file to update**. The git tag is the single source of truth.\n\n```bash\ngit tag v1.5.0\ngit push origin v1.5.0\n```\n\nPushing a `v*` tag triggers the [release workflow](.github/workflows/release.yml) which:\n\n1. Injects the tag into the binary via GoReleaser ldflags (`-X main.version=1.5.0`)\n2. Builds for Linux, macOS, Windows, and FreeBSD (multiple architectures)\n3. Publishes a GitHub release with auto-generated changelog\n4. Pushes multi-arch Docker images to Docker Hub\n5. Updates the [Homebrew tap](https://github.com/Eldara-Tech/homebrew-tap) and [Scoop bucket](https://github.com/Eldara-Tech/scoop-bucket)\n\nThe in-app `Version:` header reads from the injected value. Local builds without GoReleaser show `dev`.\n\n---\n\n\u003cdiv align=\"center\"\u003e\n  \u003csub\u003eBuilt by the community for the community. Made with ❤️ for the Docker Swarm community.\u003c/sub\u003e\n\u003c/div\u003e\n","funding_links":[],"categories":["Container Operations"],"sub_categories":["User Interface"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FEldara-Tech%2Fswarmcli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FEldara-Tech%2Fswarmcli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FEldara-Tech%2Fswarmcli/lists"}