How to Set Up Argo CD Dashboards: Local UI Administration Guide

The argocd admin dashboard command launches a self-contained, headless Argo CD API server inside the CLI process, exposing the Web UI at http://localhost:8080 without requiring external Argo CD components to be exposed.

The argoproj/argo-cd repository includes a built-in administration dashboard designed for local troubleshooting and resource inspection. This feature runs entirely within the CLI binary, creating an ephemeral API server that proxies the Argo CD web interface directly to your local machine while leveraging your existing Kubernetes credentials.

Prerequisites and Core Mode Configuration

The dashboard operates in core mode, which enables direct Kubernetes cluster access without requiring a persistent Argo CD server installation. To utilize this functionality, your local kubeconfig must have appropriate permissions to access Argo CD resources in the target cluster.

Core mode detection occurs automatically when the CLI identifies valid Kubernetes credentials. The system initializes an in-process API server that bypasses traditional authentication mechanisms, making it suitable for local development and debugging scenarios.

Launching the Argo CD Dashboard Locally

Use the argocd admin dashboard command to start the local web interface. By default, the server listens on port 8080 and binds to all interfaces.


# Start the UI with default settings (localhost:8080)

argocd admin dashboard

Customize the binding address and port using command-line flags:


# Bind to a specific local address and custom port

argocd admin dashboard --address 127.0.0.1 --port 9090

If your application controller uses Redis compression, enable GZip support to ensure proper cache handling:

argocd admin dashboard --redis-compress gzip

The CLI outputs the accessible URL upon successful initialization: Argo CD UI is available at http://localhost:8080.

Architecture and Source Code Implementation

The dashboard implementation spans multiple files in the Argo CD codebase, handling everything from command-line parsing to in-process server initialization.

Command Initialization in dashboard.go

The entry point resides in [cmd/argocd/commands/admin/dashboard.go](https://github.com/argoproj/argo-cd/blob/master/cmd/argocd/commands/admin/dashboard.go). This file defines the dashboard command and constructs a DashboardConfig structure containing the port, address, and client options. The execution flow invokes NewDashboard().Run to initialize the server lifecycle.

Headless Server Detection in headless.go

Core mode logic lives in [cmd/argocd/commands/headless/headless.go](https://github.com/argoproj/argo-cd/blob/master/cmd/argocd/commands/headless/headless.go). The function MaybeStartLocalServer determines whether the client operates in core mode by checking the local configuration for direct Kubernetes access. When core mode is active, the function bootstraps the in-process API server; otherwise, it returns immediately to allow connection to existing external servers.

In-Process Server Components

When core mode triggers, MaybeStartLocalServer invokes server.NewServer with several critical configurations:

  • Kubernetes clientsets: Initializes appclientset, kubeClientset, and dynamicClientset using the local kubeconfig
  • Temporary caching: Spawns a miniredis instance for lightweight, ephemeral caching without external Redis dependencies
  • Application state cache: Configures appstatecache.NewCache for managing application states
  • Port forwarding: Optionally forwards ports for external services like Redis or the repo-server when required

The server configuration explicitly disables authentication (DisableAuth: true) and operates in plaintext mode (Insecure: true), streamlining local access. A signal handler manages graceful shutdown when you terminate the process with Ctrl-C.

CI/CD and Automated Environments

Deploy the dashboard in automated pipelines by running the CLI within a Kubernetes Job. Ensure the container has network access to the target cluster and set the ARGOCD_CORE_MODE environment variable to enable core mode operation.


# Example: Running the dashboard from a CI job (core mode must be enabled)

apiVersion: batch/v1
kind: Job
metadata:
  name: argo-cd-dashboard
spec:
  template:
    spec:
      containers:
      - name: argo
        image: argoproj/argocd:v3.5.0
        command: ["argocd", "admin", "dashboard", "--port", "8081"]
        env:
        - name: ARGOCD_CORE_MODE
          value: "true"
      restartPolicy: Never

This configuration starts the dashboard on port 8081 within the CI container, allowing pipeline steps to access the Argo CD web interface for verification or debugging tasks.

Summary

Frequently Asked Questions

What is the difference between argocd admin dashboard and the full Argo CD server?

The argocd admin dashboard command runs a headless, ephemeral API server inside the CLI process itself, designed for local troubleshooting. The full Argo CD server is a persistent deployment with authentication, high availability, and multi-user support intended for production environments.

Does the admin dashboard require authentication?

No. According to the source code in cmd/argocd/commands/headless/headless.go, the dashboard explicitly sets DisableAuth: true when initializing the server. This design choice prioritizes convenience for local development and debugging scenarios where the user already possesses valid Kubernetes credentials.

Can I run the dashboard without installing Argo CD in the cluster?

Yes. The dashboard operates in core mode, which utilizes your local kubeconfig to communicate directly with the Kubernetes API server. It does not require an existing Argo CD installation in the target cluster, though it needs appropriate RBAC permissions to read Argo CD custom resources if they exist.

How do I troubleshoot connection issues with the admin dashboard?

Verify that your kubeconfig has valid credentials and that ARGOCD_CORE_MODE is set to "true" if running in containerized environments. Check the CLI output for the specific listening address, and ensure the specified port is not already bound by another process. The dashboard logs indicate successful server startup when it prints the available URL.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →