# ramzygirgis/cli-coding-agent architecture

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

- Interactive diagram: https://gitdiagram.com/ramzygirgis/cli-coding-agent
- Repository: https://github.com/ramzygirgis/cli-coding-agent

## Overview

This is an in-terminal Gemini coding agent. A user prompt enters the loop in `main.py`; the agent sends it to Gemini, executes requested filesystem or Python tools, returns tool results to Gemini, and prints the final response. The tools operate within the configured `calculator/` working directory, which is the sample project the README describes. The graph reflects the documented inspect-edit-run workflow; wiring beyond the sampled tool implementations is limited to what the README and visible dispatch code support.

Main entry points: [`main.py`](https://github.com/ramzygirgis/cli-coding-agent/blob/main/main.py) (Agent loop), [`call_function.py`](https://github.com/ramzygirgis/cli-coding-agent/blob/main/call_function.py) (Tool dispatcher), [`calculator`](https://github.com/ramzygirgis/cli-coding-agent/tree/main/calculator) (Working directory), [`calculator/main.py`](https://github.com/ramzygirgis/cli-coding-agent/blob/main/calculator/main.py) (Calculator CLI)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_agent["Agent loop"]
  node_main["Agent loop<br/>[main.py]"]
  node_config["Agent config<br/>[config.py]"]
  node_prompts["System prompt<br/>[prompts.py]"]
end

subgraph group_integration["Model integration"]
  node_gemini{{"Gemini API"}}
end

subgraph group_tools["Workspace tools"]
  node_dispatcher["Tool dispatcher<br/>[call_function.py]"]
  node_list["List files<br/>[get_files_info.py]"]
  node_read["Read file"]
  node_write["Write file<br/>[write_file.py]"]
  node_run["Run Python<br/>[run_python_file.py]"]
end

subgraph group_sample["Sample project"]
  node_workspace["Working directory"]
  node_calculator_cli["Calculator CLI<br/>[main.py]"]
  node_calculator_engine["Calculator engine<br/>[calculator.py]"]
  node_calculator_render["JSON renderer<br/>[render.py]"]
end

node_user(("User"))

node_user -->|"submits prompt"| node_main
node_main -->|"reads settings"| node_config
node_main -->|"loads instructions"| node_prompts
node_main -->|"sends prompt"| node_gemini
node_gemini -->|"returns response"| node_main
node_main -->|"dispatches calls"| node_dispatcher
node_dispatcher -->|"invokes tool"| node_list
node_dispatcher -->|"invokes tool"| node_read
node_dispatcher -->|"invokes tool"| node_write
node_dispatcher -->|"invokes tool"| node_run
node_list -->|"lists entries"| node_workspace
node_read -->|"reads files"| node_workspace
node_write -->|"writes files"| node_workspace
node_run -->|"executes within"| node_workspace
node_main -->|"prints answer"| node_user
node_calculator_cli -->|"evaluates expression"| node_calculator_engine
node_calculator_cli -->|"formats result"| node_calculator_render

click node_main "https://github.com/ramzygirgis/cli-coding-agent/blob/main/main.py"
click node_config "https://github.com/ramzygirgis/cli-coding-agent/blob/main/config.py"
click node_prompts "https://github.com/ramzygirgis/cli-coding-agent/blob/main/prompts.py"
click node_dispatcher "https://github.com/ramzygirgis/cli-coding-agent/blob/main/call_function.py"
click node_list "https://github.com/ramzygirgis/cli-coding-agent/blob/main/functions/get_files_info.py"
click node_read "https://github.com/ramzygirgis/cli-coding-agent/blob/main/functions/get_file_content.py"
click node_write "https://github.com/ramzygirgis/cli-coding-agent/blob/main/functions/write_file.py"
click node_run "https://github.com/ramzygirgis/cli-coding-agent/blob/main/functions/run_python_file.py"
click node_workspace "https://github.com/ramzygirgis/cli-coding-agent/tree/main/calculator"
click node_calculator_cli "https://github.com/ramzygirgis/cli-coding-agent/blob/main/calculator/main.py"
click node_calculator_engine "https://github.com/ramzygirgis/cli-coding-agent/blob/main/calculator/pkg/calculator.py"
click node_calculator_render "https://github.com/ramzygirgis/cli-coding-agent/blob/main/calculator/pkg/render.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_main,node_config,node_prompts,node_user toneBlue
class node_gemini toneAmber
class node_dispatcher,node_list,node_read,node_write,node_run toneMint
class node_workspace,node_calculator_cli,node_calculator_engine,node_calculator_render toneRose
```

## Components

### Agent loop

- [Agent loop](https://github.com/ramzygirgis/cli-coding-agent/blob/main/main.py): `main.py`
- [Agent config](https://github.com/ramzygirgis/cli-coding-agent/blob/main/config.py): `config.py`
- [System prompt](https://github.com/ramzygirgis/cli-coding-agent/blob/main/prompts.py): `prompts.py`

### Model integration

- **Gemini API**

### Workspace tools

- [Tool dispatcher](https://github.com/ramzygirgis/cli-coding-agent/blob/main/call_function.py): `call_function.py`
- [List files](https://github.com/ramzygirgis/cli-coding-agent/blob/main/functions/get_files_info.py): `functions/get_files_info.py`
- [Read file](https://github.com/ramzygirgis/cli-coding-agent/blob/main/functions/get_file_content.py): `functions/get_file_content.py`
- [Write file](https://github.com/ramzygirgis/cli-coding-agent/blob/main/functions/write_file.py): `functions/write_file.py`
- [Run Python](https://github.com/ramzygirgis/cli-coding-agent/blob/main/functions/run_python_file.py): `functions/run_python_file.py`

### Sample project

- [Working directory](https://github.com/ramzygirgis/cli-coding-agent/tree/main/calculator): `calculator`
- [Calculator CLI](https://github.com/ramzygirgis/cli-coding-agent/blob/main/calculator/main.py): `calculator/main.py`
- [Calculator engine](https://github.com/ramzygirgis/cli-coding-agent/blob/main/calculator/pkg/calculator.py): `calculator/pkg/calculator.py`
- [JSON renderer](https://github.com/ramzygirgis/cli-coding-agent/blob/main/calculator/pkg/render.py): `calculator/pkg/render.py`

### Other components

- **User**

## Connections

- User → Agent loop: submits prompt
- Agent loop → Agent config: reads settings
- Agent loop → System prompt: loads instructions
- Agent loop → Gemini API: sends prompt
- Gemini API → Agent loop: returns response
- Agent loop → Tool dispatcher: dispatches calls
- Tool dispatcher → List files: invokes tool
- Tool dispatcher → Read file: invokes tool
- Tool dispatcher → Write file: invokes tool
- Tool dispatcher → Run Python: invokes tool
- List files → Working directory: lists entries
- Read file → Working directory: reads files
- Write file → Working directory: writes files
- Run Python → Working directory: executes within
- Agent loop → User: prints answer
- Calculator CLI → Calculator engine: evaluates expression
- Calculator CLI → JSON renderer: formats result
