# anthropics/anthropic-cli architecture

> Architecture diagram of the GitHub repository anthropics/anthropic-cli, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/anthropics/anthropic-cli
- Repository: https://github.com/anthropics/anthropic-cli

## Overview

`ant` is Anthropic’s Claude Platform CLI. Its main workflow turns resource commands and flags into API requests, then presents the response in terminal-friendly formats. A separate declarative workflow loads resource files, plans changes against remote state and a lockfile, previews the plan, and applies approved changes. Session commands also support live interactive work. The graph preserves the README’s documented capabilities, but source excerpts are incomplete; links for unsampled subsystems are therefore limited to relationships the README documents.

Main entry points: [`pkg/cmd/apply.go`](https://github.com/anthropics/anthropic-cli/blob/main/pkg/cmd/apply.go) (Apply command), [`internal/declarative/core/plan.go`](https://github.com/anthropics/anthropic-cli/blob/main/internal/declarative/core/plan.go) (Change planning), [`pkg/cmd`](https://github.com/anthropics/anthropic-cli/tree/main/pkg/cmd) (Resource commands), [`internal/sessions/tui/model.go`](https://github.com/anthropics/anthropic-cli/blob/main/internal/sessions/tui/model.go) (Interactive session UI)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_cli["CLI and API"]
  node_entry["Program entry<br/>[main.go]"]
  node_commands["Resource commands"]
  node_auth["Authentication<br/>[cmd_auth.go]"]
end

subgraph group_apply["Declarative Apply"]
  node_applycmd["Apply command<br/>[apply.go]"]
  node_loader["Resource loading<br/>[loader.go]"]
  node_planner["Change planning<br/>[plan.go]"]
  node_registry["Resource definitions"]
  node_remote["API reconciliation<br/>[api.go]"]
  node_lockfile[("Resource lockfile<br/>[lock.go]")]
  node_planview["Plan preview<br/>[render.go]"]
end

subgraph group_sessions["Managed Sessions"]
  node_sessioncmd["Session commands<br/>[betasession.go]"]
  node_live["Live session transport"]
  node_sessionweb["Session web server<br/>[server.go]"]
  node_timeline["Event timeline"]
  node_sessionui["Interactive session UI<br/>[model.go]"]
end

subgraph group_support["Terminal Experience"]
  node_responses["Response display"]
  node_completion["Shell completion<br/>[autocomplete.go]"]
end

node_user(("CLI user"))
node_platform{{"Claude Platform API"}}

node_user -->|"runs"| node_entry
node_entry -->|"runs commands"| node_commands
node_user -->|"authenticates"| node_auth
node_commands -->|"sends API requests"| node_platform
node_commands -->|"displays results"| node_responses
node_user -->|"reconciles resources"| node_applycmd
node_applycmd -.->|"loads resource files"| node_loader
node_applycmd -->|"plans changes"| node_planner
node_planner -->|"tracks resources"| node_lockfile
node_planner -.->|"resolves resource kinds"| node_registry
node_planner -.->|"compares remote state"| node_remote
node_applycmd -->|"previews plan"| node_planview
node_applycmd -->|"applies approved changes"| node_platform
node_user -->|"manages sessions"| node_sessioncmd
node_sessioncmd -->|"manages session resources"| node_platform
node_user -.->|"interacts live"| node_sessionui
node_sessionui -->|"sends and receives"| node_live
node_sessionui -->|"folds and displays"| node_timeline
node_sessionweb -->|"uses session transport"| node_live
node_user -.->|"requests suggestions"| node_completion

click node_entry "https://github.com/anthropics/anthropic-cli/blob/main/cmd/ant/main.go"
click node_commands "https://github.com/anthropics/anthropic-cli/tree/main/pkg/cmd"
click node_auth "https://github.com/anthropics/anthropic-cli/blob/main/pkg/cmd/cmd_auth.go"
click node_responses "https://github.com/anthropics/anthropic-cli/tree/main/internal/jsonview"
click node_applycmd "https://github.com/anthropics/anthropic-cli/blob/main/pkg/cmd/apply.go"
click node_loader "https://github.com/anthropics/anthropic-cli/blob/main/internal/declarative/core/loader.go"
click node_planner "https://github.com/anthropics/anthropic-cli/blob/main/internal/declarative/core/plan.go"
click node_registry "https://github.com/anthropics/anthropic-cli/tree/main/internal/declarative/claude"
click node_remote "https://github.com/anthropics/anthropic-cli/blob/main/internal/declarative/claude/api.go"
click node_lockfile "https://github.com/anthropics/anthropic-cli/blob/main/internal/declarative/core/lock.go"
click node_planview "https://github.com/anthropics/anthropic-cli/blob/main/internal/declarative/render/render.go"
click node_sessioncmd "https://github.com/anthropics/anthropic-cli/blob/main/pkg/cmd/betasession.go"
click node_live "https://github.com/anthropics/anthropic-cli/tree/main/internal/sessions/live"
click node_sessionweb "https://github.com/anthropics/anthropic-cli/blob/main/internal/sessions/web/server.go"
click node_timeline "https://github.com/anthropics/anthropic-cli/tree/main/internal/sessions/timeline"
click node_sessionui "https://github.com/anthropics/anthropic-cli/blob/main/internal/sessions/tui/model.go"
click node_completion "https://github.com/anthropics/anthropic-cli/blob/main/internal/autocomplete/autocomplete.go"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_entry,node_commands,node_auth,node_user toneBlue
class node_applycmd,node_loader,node_planner,node_registry,node_remote,node_lockfile,node_planview toneAmber
class node_sessioncmd,node_live,node_sessionweb,node_timeline,node_sessionui,node_platform toneMint
class node_responses,node_completion toneRose
```

## Components

### CLI and API

- [Program entry](https://github.com/anthropics/anthropic-cli/blob/main/cmd/ant/main.go): `cmd/ant/main.go`
- [Resource commands](https://github.com/anthropics/anthropic-cli/tree/main/pkg/cmd): `pkg/cmd`
- [Authentication](https://github.com/anthropics/anthropic-cli/blob/main/pkg/cmd/cmd_auth.go): `pkg/cmd/cmd_auth.go`

### Declarative Apply

- [Apply command](https://github.com/anthropics/anthropic-cli/blob/main/pkg/cmd/apply.go): `pkg/cmd/apply.go`
- [Resource loading](https://github.com/anthropics/anthropic-cli/blob/main/internal/declarative/core/loader.go): `internal/declarative/core/loader.go`
- [Change planning](https://github.com/anthropics/anthropic-cli/blob/main/internal/declarative/core/plan.go): `internal/declarative/core/plan.go`
- [Resource definitions](https://github.com/anthropics/anthropic-cli/tree/main/internal/declarative/claude): `internal/declarative/claude`
- [API reconciliation](https://github.com/anthropics/anthropic-cli/blob/main/internal/declarative/claude/api.go): `internal/declarative/claude/api.go`
- [Resource lockfile](https://github.com/anthropics/anthropic-cli/blob/main/internal/declarative/core/lock.go): `internal/declarative/core/lock.go`
- [Plan preview](https://github.com/anthropics/anthropic-cli/blob/main/internal/declarative/render/render.go): `internal/declarative/render/render.go`

### Managed Sessions

- [Session commands](https://github.com/anthropics/anthropic-cli/blob/main/pkg/cmd/betasession.go): `pkg/cmd/betasession.go`
- [Live session transport](https://github.com/anthropics/anthropic-cli/tree/main/internal/sessions/live): `internal/sessions/live`
- [Session web server](https://github.com/anthropics/anthropic-cli/blob/main/internal/sessions/web/server.go): `internal/sessions/web/server.go`
- [Event timeline](https://github.com/anthropics/anthropic-cli/tree/main/internal/sessions/timeline): `internal/sessions/timeline`
- [Interactive session UI](https://github.com/anthropics/anthropic-cli/blob/main/internal/sessions/tui/model.go): `internal/sessions/tui/model.go`

### Terminal Experience

- [Response display](https://github.com/anthropics/anthropic-cli/tree/main/internal/jsonview): `internal/jsonview`
- [Shell completion](https://github.com/anthropics/anthropic-cli/blob/main/internal/autocomplete/autocomplete.go): `internal/autocomplete/autocomplete.go`

### Other components

- **CLI user**
- **Claude Platform API**

## Connections

- CLI user → Program entry: runs
- Program entry → Resource commands: runs commands (evidence: `cmd/ant/main.go`)
- CLI user → Authentication: authenticates
- Resource commands → Claude Platform API: sends API requests
- Resource commands → Response display: displays results
- CLI user → Apply command: reconciles resources
- Apply command → Resource loading: loads resource files
- Apply command → Change planning: plans changes
- Change planning → Resource lockfile: tracks resources
- Change planning → Resource definitions: resolves resource kinds
- Change planning → API reconciliation: compares remote state
- Apply command → Plan preview: previews plan
- Apply command → Claude Platform API: applies approved changes
- CLI user → Session commands: manages sessions
- Session commands → Claude Platform API: manages session resources
- CLI user → Interactive session UI: interacts live
- Interactive session UI → Live session transport: sends and receives (evidence: `internal/sessions/tui/model.go`)
- Interactive session UI → Event timeline: folds and displays (evidence: `internal/sessions/tui/model.go`)
- Session web server → Live session transport: uses session transport
- CLI user → Shell completion: requests suggestions
