# abhishek1345/devopsagent architecture

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

- Interactive diagram: https://gitdiagram.com/abhishek1345/devopsagent
- Repository: https://github.com/abhishek1345/devopsagent

## Overview

Devopsagent scans a repository, identifies its applications and deployment metadata, then generates missing Dockerfiles, a Compose file, and a GitHub Actions deployment workflow. The CLI is the entry point; `main.py` invokes the scanner and then the LangGraph workflow. The graph iterates over applications for Docker-related steps before Compose and workflow generation, then writes accumulated files. Generation agents call Gemini. The README contains no usable architecture details; the scanner excerpt is partial, and DockerIgnoreAgent’s implementation was not sampled, so its behavior is not inferred.

Main entry points: [`graph/Graph.py`](https://github.com/abhishek1345/devopsagent/blob/master/graph/Graph.py) (Workflow graph), [`main.py`](https://github.com/abhishek1345/devopsagent/blob/master/main.py) (Run agent), [`scanner/scanner.py`](https://github.com/abhishek1345/devopsagent/blob/master/scanner/scanner.py) (Repository scanner), [`llm/llm.py`](https://github.com/abhishek1345/devopsagent/blob/master/llm/llm.py) (Gemini model)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["CLI and orchestration"]
  node_cli["CLI<br/>[cli.py]"]
  node_main["Run agent<br/>[main.py]"]
  node_graph["Workflow graph<br/>[Graph.py]"]
  node_state["Workflow state<br/>[state.py]"]
end

subgraph group_discovery["Repository discovery"]
  node_scanner["Repository scanner<br/>[scanner.py]"]
  node_project_info["Project metadata<br/>[project_info.py]"]
end

subgraph group_generation["Deployment generation"]
  node_docker["Dockerfile agent<br/>[DockerAgent.py]"]
  node_dockerignore["Docker ignore agent"]
  node_compose["Compose agent<br/>[ComposeAgent.py]"]
  node_workflow["Workflow agent<br/>[WorkflowAgent.py]"]
  node_writer["File writer<br/>[writer.py]"]
end

subgraph group_runtime["Shared runtime"]
  node_llm["Gemini model<br/>[llm.py]"]
end

node_user(("Engineer"))
node_repo["Target repository"]
node_filesystem["Repository filesystem"]

node_user -->|"runs"| node_cli
node_cli -->|"starts"| node_main
node_main -->|"scans"| node_scanner
node_scanner -->|"reads"| node_repo
node_scanner -->|"builds metadata"| node_project_info
node_main -->|"invokes"| node_graph
node_main -->|"passes"| node_project_info
node_graph -->|"tracks"| node_state
node_graph -->|"dispatches"| node_docker
node_graph -->|"dispatches"| node_dockerignore
node_graph -->|"dispatches"| node_compose
node_graph -->|"dispatches"| node_workflow
node_graph -->|"dispatches"| node_writer
node_docker -->|"requests generation"| node_llm
node_compose -->|"requests generation"| node_llm
node_workflow -->|"requests generation"| node_llm
node_writer -->|"writes files"| node_filesystem

click node_cli "https://github.com/abhishek1345/devopsagent/blob/master/cli.py"
click node_main "https://github.com/abhishek1345/devopsagent/blob/master/main.py"
click node_scanner "https://github.com/abhishek1345/devopsagent/blob/master/scanner/scanner.py"
click node_project_info "https://github.com/abhishek1345/devopsagent/blob/master/models/project_info.py"
click node_graph "https://github.com/abhishek1345/devopsagent/blob/master/graph/Graph.py"
click node_state "https://github.com/abhishek1345/devopsagent/blob/master/graph/state.py"
click node_docker "https://github.com/abhishek1345/devopsagent/blob/master/agents/DockerAgent.py"
click node_dockerignore "https://github.com/abhishek1345/devopsagent/blob/master/agents/DockerIgnoreAgent.py"
click node_compose "https://github.com/abhishek1345/devopsagent/blob/master/agents/ComposeAgent.py"
click node_workflow "https://github.com/abhishek1345/devopsagent/blob/master/agents/WorkflowAgent.py"
click node_writer "https://github.com/abhishek1345/devopsagent/blob/master/graph/writer.py"
click node_llm "https://github.com/abhishek1345/devopsagent/blob/master/llm/llm.py"

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_cli,node_main,node_graph,node_state toneBlue
class node_scanner,node_project_info toneAmber
class node_docker,node_dockerignore,node_compose,node_workflow,node_writer toneMint
class node_llm toneRose
class node_user,node_repo,node_filesystem toneIndigo
```

## Components

### CLI and orchestration

- [CLI](https://github.com/abhishek1345/devopsagent/blob/master/cli.py): `cli.py`
- [Run agent](https://github.com/abhishek1345/devopsagent/blob/master/main.py): `main.py`
- [Workflow graph](https://github.com/abhishek1345/devopsagent/blob/master/graph/Graph.py): `graph/Graph.py`
- [Workflow state](https://github.com/abhishek1345/devopsagent/blob/master/graph/state.py): `graph/state.py`

### Repository discovery

- [Repository scanner](https://github.com/abhishek1345/devopsagent/blob/master/scanner/scanner.py): `scanner/scanner.py`
- [Project metadata](https://github.com/abhishek1345/devopsagent/blob/master/models/project_info.py): `models/project_info.py`

### Deployment generation

- [Dockerfile agent](https://github.com/abhishek1345/devopsagent/blob/master/agents/DockerAgent.py): `agents/DockerAgent.py`
- [Docker ignore agent](https://github.com/abhishek1345/devopsagent/blob/master/agents/DockerIgnoreAgent.py): `agents/DockerIgnoreAgent.py`
- [Compose agent](https://github.com/abhishek1345/devopsagent/blob/master/agents/ComposeAgent.py): `agents/ComposeAgent.py`
- [Workflow agent](https://github.com/abhishek1345/devopsagent/blob/master/agents/WorkflowAgent.py): `agents/WorkflowAgent.py`
- [File writer](https://github.com/abhishek1345/devopsagent/blob/master/graph/writer.py): `graph/writer.py`

### Shared runtime

- [Gemini model](https://github.com/abhishek1345/devopsagent/blob/master/llm/llm.py): `llm/llm.py`

### Other components

- **Engineer**
- **Target repository**
- **Repository filesystem**

## Connections

- Engineer → CLI: runs
- CLI → Run agent: starts
- Run agent → Repository scanner: scans
- Repository scanner → Target repository: reads
- Repository scanner → Project metadata: builds metadata
- Run agent → Workflow graph: invokes
- Run agent → Project metadata: passes
- Workflow graph → Workflow state: tracks
- Workflow graph → Dockerfile agent: dispatches
- Workflow graph → Docker ignore agent: dispatches
- Workflow graph → Compose agent: dispatches
- Workflow graph → Workflow agent: dispatches
- Workflow graph → File writer: dispatches
- Dockerfile agent → Gemini model: requests generation
- Compose agent → Gemini model: requests generation
- Workflow agent → Gemini model: requests generation
- File writer → Repository filesystem: writes files
