https://github.com/darksworm/argonaut
Keyboard-first terminal UI for Argo CD. Browse apps, scope by clusters/namespaces/projects, stream live resource status, trigger syncs, inspect diffs, and roll back safely β all without leaving your terminal.
https://github.com/darksworm/argonaut
argo-cd argocd cd cli continuous-delivery devops gitops helm infrastructure-as-code k8s k9s-like terminal tui
Last synced: 2 days ago
JSON representation
Keyboard-first terminal UI for Argo CD. Browse apps, scope by clusters/namespaces/projects, stream live resource status, trigger syncs, inspect diffs, and roll back safely β all without leaving your terminal.
- Host: GitHub
- URL: https://github.com/darksworm/argonaut
- Owner: darksworm
- License: gpl-3.0
- Created: 2025-08-07T23:18:43.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2026-01-17T21:57:30.000Z (6 days ago)
- Last Synced: 2026-01-18T06:57:05.746Z (5 days ago)
- Topics: argo-cd, argocd, cd, cli, continuous-delivery, devops, gitops, helm, infrastructure-as-code, k8s, k9s-like, terminal, tui
- Language: Go
- Homepage:
- Size: 27.2 MB
- Stars: 308
- Watchers: 2
- Forks: 3
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- awesome-argo - argonaut - time monitoring, diff viewing, and sync/rollback operations. (Ecosystem Projects)
- awesome-tuis - Argonaut
README
# π Argonaut β Argo CD TUI
[](https://github.com/darksworm/argonaut/releases/latest)
[](https://github.com/darksworm/argonaut/blob/main/LICENSE)
[](https://www.coderabbit.ai)
Argonaut is a keyboard-first terminal UI for **Argo CD**, built with **Bubbletea**. Browse apps, scope by clusters/namespaces/projects, stream live resource status, trigger syncs, inspect diffs in your favorite pager, and roll back safely β all without leaving your terminal.
> β€οΈ πΆ
> Β Inspired by the great UX of [k9s](https://k9scli.io) β but for Argo CD.
---
## π¦ Prerequisites
- [**Argo CD CLI**](https://argo-cd.readthedocs.io/en/stable/cli_installation/) installed
- [**Delta**](https://dandavison.github.io/delta/installation.html) installed for enhanced diffs (optional, falls back to `git`)
---
## π Installation methods
Install Script (Linux/macOS)
```bash
curl -sSL https://raw.githubusercontent.com/darksworm/argonaut/main/install.sh | sh
```
The install script automatically detects your system (including musl vs glibc on Linux) and downloads the appropriate binary from the latest release.
You can also install a specific version:
```bash
curl -sSL https://raw.githubusercontent.com/darksworm/argonaut/main/install.sh | sh -s -- v1.13.0
```
Homebrew (Linux/MacOS)
```bash
brew tap darksworm/homebrew-tap
brew install darksworm/tap/argonaut
```
AUR (Arch User Repository)
```bash
yay -S argonaut-bin
```
Nix
With Nix and Flakes enabled, you can run or install Argonaut directly from the repository.
### Run Directly
To run Argonaut without permanently installing it, use the `nix run` command:
```bash
nix run github:darksworm/argonaut
```
### Development Shell
To enter a development shell with Argonaut and its dependencies (like Go, Delta, and Argocd) available for development, use the `nix develop` command:
```bash
nix develop github:darksworm/argonaut
```
### Flakes
If you are using Flakes to manage your systems add this to your Flake:
```nix
inputs = {
argonaut = {
url = "github:darksworm/argonaut";
inputs.nixpkgs.follows = "nixpkgs";
};
# ...
}
```
Docker
Pull the image:
```bash
docker pull ghcr.io/darksworm/argonaut:latest
```
Run with mounted Argo CD config (as your host user to preserve permissions):
```bash
docker run -it --rm \
-u $(id -u):$(id -g) \
-v ~/.config/argocd:/home/appuser/.config/argocd:ro \
ghcr.io/darksworm/argonaut:latest
```
The container needs access to your Argo CD configuration for authentication. The `:ro` flag mounts it as read-only for security.
[//]: # ()
[//]: # ()
[//]: # ( NUR (Nix User Repository))
[//]: # ()
[//]: # (```bash)
[//]: # (nix-env -iA nur.repos.darksworm.argonaut)
[//]: # (```)
[//]: # ()
Download a binary
You can download binaries and packages in from the [**latest release**](https://github.com/darksworm/argonaut/releases/latest).
## β‘ Quickstart
```bash
# Log in to your Argo CD server
argocd login
# Start Argonaut
argonaut
```
---
## β¨ Highlights
- **Instant app browsing** with live updates (NDJSON streams)
- **Scoped navigation**: clusters β namespaces β projects β apps
- **Command palette** (`:`) for actions: `sync`, `diff`, `rollback`, `resources`, etc.
- **Live resources view** per app with health & sync status
- **External diff integration**: prefers `delta`, falls back to `git --no-index diff | less`
- **Guided rollback** with revision metadata and progress streaming
- **Keyboard-only workflow** with Vim-like navigation
---
## πΈ Screenshots
### **Live Apps**

### **Sync**

### **Live Resources**

### **Diff**

### **Rollback**

### **Delete apps**

### **Enjoy colorful themes**

## Advanced Features
### Client certificate authentication
Argonaut supports client certificate authentication. You just need to pass a couple arguments to the argonaut command:
```bash
argonaut --client-cert=/path/to/cert --client-cert-key=/path/to/key
```
### Self-signed certificates
If your Argo CD server uses a self-signed certificate, you can provide a custom CA certificate to trust:
```bash
argonaut --ca-cert=/path/to/ca.crt
```
### Port-forward mode
If your Argo CD server isn't directly accessible (e.g., running in a private cluster), Argonaut can connect via kubectl port-forward:
```bash
# Configure ArgoCD CLI for port-forward mode
argocd login --port-forward --port-forward-namespace argocd
# Start Argonaut (automatically detects port-forward mode)
argonaut
```
**Requirements:**
- `kubectl` configured with access to the cluster
- ArgoCD server pod running in the target namespace
**Custom namespace:** If ArgoCD is installed in a different namespace, add to your config:
```toml
# ~/.config/argonaut/config.toml
[port_forward]
namespace = "my-argocd-namespace"
```
---
## βοΈ Configuration
Argonaut stores its configuration in a TOML file at `~/.config/argonaut/config.toml` (or `$XDG_CONFIG_HOME/argonaut/config.toml`).
You can override the config path with the `ARGONAUT_CONFIG` environment variable.
### Example Configuration
```toml
[appearance]
theme = "tokyo-night"
[appearance.overrides]
# Override individual theme colors (hex format)
# accent = "#ff79c6"
# success = "#50fa7b"
[sort]
field = "name" # name, sync, health
direction = "asc" # asc, desc
[k9s]
command = "k9s" # Path to k9s executable
context = "" # Override Kubernetes context for k9s
[diff]
viewer = "" # Interactive diff viewer (e.g., "code --diff {left} {right}", "meld {left} {right}")
formatter = "" # Diff formatter command (e.g., "delta --side-by-side")
```
### Configuration Options
#### `[appearance]`
| Option | Description | Default |
|--------|-------------|---------|
| `theme` | Color theme name (see available themes below) | `tokyo-night` |
**Available themes:**
- **Dark themes**: `catppuccin-mocha`, `dracula`, `gruvbox-dark`, `monokai`, `nord`, `one-dark`, `oxocarbon`, `solarized-dark`, `tokyo-night`, `tokyo-storm`
- **Light themes**: `catppuccin-latte`, `gruvbox-light`, `one-light`, `onehalf-light`, `solarized-light`
- **Accessibility**: `colorblind-safe`, `grayscale-lowchroma`, `high-contrast`
- **Special**: `inherit-terminal` (uses your terminal's ANSI color palette)
You can also change the theme at runtime using the `:theme ` command.
#### `[appearance.overrides]`
Override individual theme colors with hex values. Available color keys:
- `accent`, `warning`, `dim`, `success`, `danger`, `progress`, `unknown`, `info`, `text`, `gray`
- `selected_bg`, `cursor_selected_bg`, `cursor_bg`, `border`, `muted_bg`, `shade_bg`, `dark_bg`
#### `[sort]`
| Option | Description | Default |
|--------|-------------|---------|
| `field` | Sort field (`name`, `sync`, `health`) | `name` |
| `direction` | Sort direction (`asc`, `desc`) | `asc` |
You can also change sorting at runtime using the `:sort ` command.
#### `[k9s]`
Integration settings for [k9s](https://k9scli.io), the Kubernetes TUI.
| Option | Description | Default |
|--------|-------------|---------|
| `command` | Path to k9s executable | `k9s` |
| `context` | Override Kubernetes context when launching k9s | (none) |
Press `K` on a resource in the tree view to open it in k9s.
#### `[diff]`
Settings for diff viewing and formatting.
| Option | Description | Default |
|--------|-------------|---------|
| `viewer` | Interactive diff viewer command. Use `{left}` and `{right}` as placeholders for file paths. | (none) |
| `formatter` | Non-interactive diff formatter piped through before display | (none, falls back to `delta` if installed) |
**Examples:**
```toml
[diff]
# Use VS Code as diff viewer
viewer = "code --diff {left} {right} --wait"
# Use meld as diff viewer
viewer = "meld {left} {right}"
# Use delta with custom options
formatter = "delta --side-by-side --line-numbers"
```
If no `viewer` is set, diffs are shown in an internal pager. If no `formatter` is set but [delta](https://dandavison.github.io/delta/) is installed, it will be used automatically.
#### `[port_forward]`
Settings for port-forward mode (when ArgoCD CLI is configured with `server: port-forward`).
| Option | Description | Default |
|--------|-------------|---------|
| `namespace` | Kubernetes namespace where ArgoCD is installed | `argocd` |
---
## π€ Contributing
See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines on how to contribute to this project.