Скриншоты
Офлайн-демо (без кластера): argo9s --demo
Перегенерация ассетов (требуется VHS):
make build
PATH="$(go env GOPATH)/bin:$PATH" vhs docs/screenshots/demo.tape
Возможности
-
Два бэкенда: Kubernetes (kubeconfig / in-cluster) или HTTP API Argo CD (URL + токен)
-
Именованные подключения в
~/.argo9s/config.yamlс выбором при запуске (kubernetes,argocd-test,argocd-prod, …) -
Отслеживание в реальном времени приложений (CRD watch или API stream/poll)
-
Объединённый и типизированные виды: Applications, ApplicationSets, AppProjects
-
UX в стиле K9s:
j/k, фильтр/, команды:, справка? -
Фильтры по проекту, имени и статусу синхронизации
-
Граф ресурсов (
g): дерево в стиле Argo UI (resource-tree API или живые RS/поды) -
Действия (в неread-only-режиме): sync, refresh, suspend/resume, delete
-
По умолчанию — только чтение
-
--demo: офлайн-набор приложений для скриншотов / записей VHS -
--no-color: монохромный TUI (такжеNO_COLOR=1илиnoColor: trueв конфиге)
Установка
Homebrew
brew install vvrnv/tap/argo9s
Go
go install github.com/vvrnv/argo9s/cmd/argo9s@latest
Готовый бинарник
Скачайте со страницы релизов.
Сборка из исходников
git clone https://github.com/vvrnv/argo9s.git
cd argo9s
make build
./bin/argo9s
Релизы публикуются автоматически по тегам v* через GoReleaser (GitHub Release + Homebrew-формула в vvrnv/homebrew-tap).
Подключения
1) CLI (одноразовое подключение через Argo CD API)
argo9s --server https://argocd.example.com --auth-token "$TOKEN"
argo9s --server https://argocd.example.com --auth-token "$TOKEN" --insecure
# токен также берётся из ARGOCD_AUTH_TOKEN
2) Профили в конфиге и выбор при запуске
argo9s config init # создаёт пример ~/.argo9s/config.yaml
# отредактируйте подключения, токены укажите в переменных окружения
export ARGOCD_TEST_TOKEN=...
export ARGOCD_PROD_TOKEN=...
argo9s # выбор: kubernetes / argocd-test / argocd-prod
argo9s --connection argocd-prod
argo9s --pick # принудительно показать список выбора
Пример ~/.argo9s/config.yaml:
defaultConnection: kubernetes
connections:
- name: kubernetes
type: kubernetes
- name: argocd-test
type: argocd
server: https://argocd.test.example.com
tokenEnv: ARGOCD_TEST_TOKEN
readOnly: false
- name: argocd-prod
type: argocd
server: https://argocd.prod.example.com
tokenEnv: ARGOCD_PROD_TOKEN
readOnly: true
readOnly на уровне подключения переопределяет глобальный параметр readOnly. Флаг --readonly в командной строке имеет наивысший приоритет, если передан явно.
3) Kubernetes / in-cluster (исходный режим)
argo9s --connection kubernetes
argo9s --context my-cluster -n argocd
Навигация
| Клавиша | Действие |
|---|---|
|
Перемещение |
|
Граф ресурсов (для Application) |
|
Логи пода (на узле Pod); горизонтальная прокрутка в режиме логов/YAML |
|
Live-YAML выбранного узла графа |
|
Редактировать YAML в |
|
Логи предыдущего контейнера (в режиме логов) |
|
Describe |
|
Фильтр по имени |
|
Команда |
|
Синхронизировать приложение |
|
Refresh / hard refresh |
|
Suspend (manual) / resume (auto-sync) |
CLI (autosync / sync)
# требуется подключение с readOnly: false или флаг --readonly=false
argo9s --connection argocd-test --readonly=false app autosync on guestbook
argo9s --connection argocd-test --readonly=false app autosync off guestbook
argo9s --connection argocd-test --readonly=false app resume guestbook
argo9s --connection argocd-test --readonly=false app suspend guestbook
argo9s --connection argocd-test --readonly=false app sync guestbook
argo9s --connection argocd-test --readonly=false app refresh guestbook --hard
| Клавиша | Действие |
|---|---|
|
Удалить (с подтверждением) |
|
Справка |
|
Выход |
Фильтры
:name guestbook # фильтр по подстроке имени
:n mpi # краткая форма
:name clear
:project default # приложения в AppProject "default"
:p staging
:project clear
:sync outofsync # только OutOfSync (жёлтый)
:sync synced
:outofsync
:sync clear
/текст — живой фильтр по подстроке в имени, пространстве имён, проекте и статусе.
Цвета: Synced+Healthy = зелёный · OutOfSync = жёлтый · Progressing = синий · Degraded = красный · Unknown = серый
Отключить: --no-color, NO_COLOR=1 или argo9s config set noColor true.
Граф ресурсов
-
Выберите Application
-
Нажмите
g(или:graph) -
Перемещайтесь по узлам клавишами
j/k, для возврата —esc
Компоновка соответствует Argo CD UI (слева → направо):
app ── cm
├─ svc
└─ deploy ── rs ── pod
Управляемые ресурсы берутся из status.resources; ReplicaSets и поды загружаются в реальном времени из кластера через ownerReferences.
Команды
| Команда | Описание |
|---|---|
|
Переключить вид ресурсов |
|
Фильтровать приложения по проекту Argo CD |
|
Фильтровать список по пространству имён |
|
Открыть граф для выбранного Application |
|
Переключить режим только чтения |
|
Переключить монохромный режим TUI |
|
Список контекстов Kubernetes |
|
Выход |
Конфигурация
Хранится в ~/.argo9s/config.yaml:
argo9s config view
argo9s config set readOnly false
argo9s config set noColor true
argo9s config set namespace argocd
argo9s config set allNamespaces true
Как это работает
Два бэкенда, один TUI:
-
Kubernetes — динамический клиент отслеживает CRD Argo CD (
applications/applicationsets/appprojects). Изменяющие действия патчат Application CR (аннотация refresh,.operation.sync,syncPolicy). -
HTTP API Argo CD — список и отслеживание через серверный API (токен-аутентификация); sync/refresh/suspend выполняются через тот же API. Предпочтителен для полных деревьев ресурсов в кластерах назначения.
Благодарности
-
K9s — источник вдохновения для UX
-
Argo CD — движок GitOps
-
Bubble Tea — фреймворк для TUI
Лицензия
MIT