# shrisuha/agentic-ai-deck architecture

> Architecture diagram of the GitHub repository shrisuha/agentic-ai-deck, 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/shrisuha/agentic-ai-deck
- Repository: https://github.com/shrisuha/agentic-ai-deck

## Overview

This small CrewAI starter runs a topic through a researcher and then a writer, printing the resulting brief. The main entry point checks the selected provider, then launches the crew; the crew selects a local model and can expose an optional word-count tool. A separate setup command finds or starts Ollama and downloads the configured model. The README documents the YAML-driven agent/task wiring and an OpenAI-compatible local-server option; unsampled YAML is represented from that documentation, not inspected directly.

Main entry points: [`starter/crew.py`](https://github.com/shrisuha/agentic-ai-deck/blob/main/starter/crew.py) (Crew Orchestrator), [`starter/main.py`](https://github.com/shrisuha/agentic-ai-deck/blob/main/starter/main.py) (CLI Entry), [`starter/llm.py`](https://github.com/shrisuha/agentic-ai-deck/blob/main/starter/llm.py) (Model Selection), [`starter/ollama_server.py`](https://github.com/shrisuha/agentic-ai-deck/blob/main/starter/ollama_server.py) (Server Discovery)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Brief Runtime"]
  node_main["CLI Entry<br/>[main.py]"]
  node_crew["Crew Orchestrator<br/>[crew.py]"]
  node_llm["Model Selection<br/>[llm.py]"]
  node_word_count["Word Count Tool<br/>[example_tool.py]"]
end

subgraph group_configuration["Crew Configuration"]
  node_researcher["Research Agent<br/>[agents.yaml]"]
  node_writer["Writer Agent<br/>[agents.yaml]"]
  node_tasks["Task Definitions<br/>[tasks.yaml]"]
end

subgraph group_local_models["Local Models"]
  node_setup["Model Setup<br/>[setup.py]"]
  node_server_helpers["Server Discovery<br/>[ollama_server.py]"]
end

node_user(("User"))
node_ollama["Ollama Server"]
node_compatible_server["Compatible Server"]

node_user -->|"runs topic"| node_main
node_main -->|"checks server"| node_server_helpers
node_main -->|"starts crew"| node_crew
node_crew -->|"configures agent"| node_researcher
node_crew -->|"configures agent"| node_writer
node_crew -->|"loads tasks"| node_tasks
node_researcher -->|"passes notes"| node_writer
node_crew -->|"selects model"| node_llm
node_llm -->|"targets model"| node_ollama
node_llm -.->|"targets model"| node_compatible_server
node_crew -->|"exposes tool"| node_word_count
node_setup -->|"ensures server"| node_server_helpers
node_server_helpers -->|"probes and pulls"| node_ollama

click node_main "https://github.com/shrisuha/agentic-ai-deck/blob/main/starter/main.py"
click node_crew "https://github.com/shrisuha/agentic-ai-deck/blob/main/starter/crew.py"
click node_researcher "https://github.com/shrisuha/agentic-ai-deck/blob/main/starter/config/agents.yaml"
click node_writer "https://github.com/shrisuha/agentic-ai-deck/blob/main/starter/config/agents.yaml"
click node_tasks "https://github.com/shrisuha/agentic-ai-deck/blob/main/starter/config/tasks.yaml"
click node_llm "https://github.com/shrisuha/agentic-ai-deck/blob/main/starter/llm.py"
click node_word_count "https://github.com/shrisuha/agentic-ai-deck/blob/main/starter/tools/example_tool.py"
click node_setup "https://github.com/shrisuha/agentic-ai-deck/blob/main/starter/setup.py"
click node_server_helpers "https://github.com/shrisuha/agentic-ai-deck/blob/main/starter/ollama_server.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_crew,node_llm,node_word_count,node_user toneBlue
class node_researcher,node_writer,node_tasks toneAmber
class node_setup,node_server_helpers,node_ollama,node_compatible_server toneMint
```

## Components

### Brief Runtime

- [CLI Entry](https://github.com/shrisuha/agentic-ai-deck/blob/main/starter/main.py): `starter/main.py`
- [Crew Orchestrator](https://github.com/shrisuha/agentic-ai-deck/blob/main/starter/crew.py): `starter/crew.py`
- [Model Selection](https://github.com/shrisuha/agentic-ai-deck/blob/main/starter/llm.py): `starter/llm.py`
- [Word Count Tool](https://github.com/shrisuha/agentic-ai-deck/blob/main/starter/tools/example_tool.py): `starter/tools/example_tool.py`

### Crew Configuration

- [Research Agent](https://github.com/shrisuha/agentic-ai-deck/blob/main/starter/config/agents.yaml): `starter/config/agents.yaml`
- [Writer Agent](https://github.com/shrisuha/agentic-ai-deck/blob/main/starter/config/agents.yaml): `starter/config/agents.yaml`
- [Task Definitions](https://github.com/shrisuha/agentic-ai-deck/blob/main/starter/config/tasks.yaml): `starter/config/tasks.yaml`

### Local Models

- [Model Setup](https://github.com/shrisuha/agentic-ai-deck/blob/main/starter/setup.py): `starter/setup.py`
- [Server Discovery](https://github.com/shrisuha/agentic-ai-deck/blob/main/starter/ollama_server.py): `starter/ollama_server.py`

### Other components

- **User**
- **Ollama Server**
- **Compatible Server**

## Connections

- User → CLI Entry: runs topic (evidence: `README.md`)
- CLI Entry → Server Discovery: checks server (evidence: `starter/main.py`)
- CLI Entry → Crew Orchestrator: starts crew (evidence: `starter/main.py`)
- Crew Orchestrator → Research Agent: configures agent (evidence: `README.md`)
- Crew Orchestrator → Writer Agent: configures agent (evidence: `README.md`)
- Crew Orchestrator → Task Definitions: loads tasks (evidence: `README.md`)
- Research Agent → Writer Agent: passes notes (evidence: `README.md`)
- Crew Orchestrator → Model Selection: selects model (evidence: `starter/crew.py`)
- Model Selection → Ollama Server: targets model (evidence: `starter/llm.py`)
- Model Selection → Compatible Server: targets model (evidence: `README.md`)
- Crew Orchestrator → Word Count Tool: exposes tool (evidence: `README.md`)
- Model Setup → Server Discovery: ensures server (evidence: `starter/setup.py`)
- Server Discovery → Ollama Server: probes and pulls (evidence: `starter/ollama_server.py`)
