argoproj/argo-cd
Web UI
The Argo CD web UI is a single-page React + TypeScript application bundled into the argocd-server binary.
Where it lives
| Path | Purpose |
|---|---|
ui/src/app/ |
All product code. |
ui/src/app/applications/ |
The Applications list, detail, tree, sync drawer. |
ui/src/app/login/ |
OIDC + local-account login screens. |
ui/src/app/user-info/ |
Profile, password change. |
ui/src/app/settings/ |
Repos, clusters, projects, accounts, certificates, GPG keys, plugins admin. |
ui/src/app/help/ |
Help content and documentation links. |
ui/src/app/sidebar/, ui-banner/ |
Chrome — left nav, top banner. |
ui/src/app/shared/ |
Cross-page services, components, models. |
ui/src/app/webpack.config.js |
Webpack build configuration. |
ui/embed.go |
go:embed of the prebuilt assets, mounted by argocd-server. |
ui/__mocks__/ |
Jest manual mocks. |
ui/scripts/ |
Build-time helpers. |
ui/eslint.config.mjs, ui/.prettierrc, ui/jest.config.js |
Lint/format/test config. |
Build and embed
The UI is built with pnpm build (or make build-ui from the repo root). The output goes to ui/dist/. ui/embed.go then exposes that directory as a go:embed filesystem, which argocd-server mounts as a static handler.
Runtime
server/server.go wires the embedded filesystem under /. Request flow:
graph LR
Browser --> Server[argocd-server HTTP listener]
Server --> Static[Static UI assets - go:embed]
Server --> GRPCWeb[gRPC-Web endpoint]
Server --> REST[REST gateway]
Server --> WS[WebSocket: app updates, terminals]The UI uses gRPC-Web (via grpc-web-client) for unary and server-streaming RPCs, REST (via gRPC-Gateway) for some convenience endpoints, and WebSockets for streaming application updates and pod terminals.
Hot reload during development
Run the UI dev server (with hot reload):
cd ui && pnpm startOr use the ui line in the repo root Procfile (goreman start). The dev server proxies API calls to the locally-running argocd-server.
Tests
ui/jest.config.js— Jest unit tests underui/src/.ui-test/(separate top-level dir) — end-to-end UI suite.
API client surface
The UI's gRPC-Web clients are written by hand under ui/src/app/shared/services/. Each maps roughly to one of the server-side gRPC services (Applications, Projects, Clusters, Repositories, Settings, Accounts, etc.). When the protos change, the JS clients are updated by hand to match — there is no auto-generated client for TypeScript.
See also
- argocd-server — the host runtime.
- API — the proto surface the UI consumes.
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.