# sayandeep-coder/agentforge architecture

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

- Interactive diagram: https://gitdiagram.com/sayandeep-coder/agentforge
- Repository: https://github.com/sayandeep-coder/agentforge

## Overview

AgentForge is agent-execution infrastructure, not a chat application. Its main workflow accepts task requests through versioned REST routes, persists task state and queues work, then a worker invokes the agent runtime to execute workflow steps using tools or an LLM; clients retrieve task status and results through the API. Separate capabilities manage agents, workflows, memory, and schedules. The sampled code shows cron scheduling as a trigger-callback abstraction, but not its wiring to task submission; the graph therefore leaves that connection out.

Main entry points: [`internal/api/router.go`](https://github.com/sayandeep-coder/agentforge/blob/main/internal/api/router.go) (REST Router), [`internal/agent/runtime.go`](https://github.com/sayandeep-coder/agentforge/blob/main/internal/agent/runtime.go) (Agent Runtime), [`internal/service/task.go`](https://github.com/sayandeep-coder/agentforge/blob/main/internal/service/task.go) (Task Service), [`internal/workflow/engine.go`](https://github.com/sayandeep-coder/agentforge/blob/main/internal/workflow/engine.go) (Workflow Engine)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["HTTP API"]
  node_router["REST Router<br/>[router.go]"]
end

subgraph group_application["Application Services"]
  node_agent_service["Agent Service<br/>[agent.go]"]
  node_workflow_service["Workflow Service<br/>[workflow.go]"]
  node_task_service["Task Service<br/>[task.go]"]
  node_memory_service["Memory Service<br/>[memory.go]"]
  node_schedule_service["Schedule Service<br/>[schedule.go]"]
end

subgraph group_execution["Execution Plane"]
  node_publisher["Task Publisher<br/>[publisher.go]"]
  node_queue["Task Queue<br/>[queue.go]"]
  node_worker_pool["Worker Pool<br/>[pool.go]"]
  node_runtime["Agent Runtime<br/>[runtime.go]"]
  node_workflow_engine["Workflow Engine<br/>[engine.go]"]
  node_tool_registry["Tool Registry<br/>[registry.go]"]
  node_llm_provider["LLM Provider Port<br/>[provider.go]"]
  node_scheduler["Cron Scheduler<br/>[scheduler.go]"]
end

subgraph group_persistence["Persistence"]
  node_agent_repo["Agent Repository<br/>[agent.go]"]
  node_workflow_repo["Workflow Repository<br/>[workflow.go]"]
  node_task_repo["Task Repository<br/>[task.go]"]
  node_memory_repo["Memory Repository<br/>[memory.go]"]
  node_schedule_repo["Schedule Repository<br/>[schedule.go]"]
  node_postgres[("PostgreSQL")]
end

node_client(("API Client"))
node_schedule_trigger(("Trigger Callback"))

node_client -->|"sends requests"| node_router
node_router -->|"calls"| node_agent_service
node_router -->|"calls"| node_workflow_service
node_router -->|"calls"| node_task_service
node_router -->|"calls"| node_memory_service
node_router -->|"calls"| node_schedule_service
node_agent_service -->|"reads and writes"| node_agent_repo
node_workflow_service -->|"reads and writes"| node_workflow_repo
node_task_service -->|"reads and writes"| node_task_repo
node_task_service -->|"publishes task"| node_publisher
node_memory_service -->|"reads and writes"| node_memory_repo
node_schedule_service -->|"reads and writes"| node_schedule_repo
node_agent_repo -->|"queries"| node_postgres
node_workflow_repo -->|"queries"| node_postgres
node_task_repo -->|"queries"| node_postgres
node_memory_repo -->|"queries"| node_postgres
node_schedule_repo -->|"queries"| node_postgres
node_publisher -->|"enqueues task"| node_queue
node_worker_pool -->|"dequeues tasks"| node_queue
node_worker_pool -->|"executes task"| node_runtime
node_runtime -->|"loads and updates"| node_task_repo
node_runtime -->|"loads agent"| node_agent_repo
node_runtime -->|"loads workflow"| node_workflow_repo
node_runtime -->|"executes workflow"| node_workflow_engine
node_workflow_engine -->|"executes tool"| node_tool_registry
node_workflow_engine -->|"generates response"| node_llm_provider
node_scheduler -->|"invokes callback"| node_schedule_trigger

click node_router "https://github.com/sayandeep-coder/agentforge/blob/main/internal/api/router.go"
click node_agent_service "https://github.com/sayandeep-coder/agentforge/blob/main/internal/service/agent.go"
click node_workflow_service "https://github.com/sayandeep-coder/agentforge/blob/main/internal/service/workflow.go"
click node_task_service "https://github.com/sayandeep-coder/agentforge/blob/main/internal/service/task.go"
click node_memory_service "https://github.com/sayandeep-coder/agentforge/blob/main/internal/service/memory.go"
click node_schedule_service "https://github.com/sayandeep-coder/agentforge/blob/main/internal/service/schedule.go"
click node_agent_repo "https://github.com/sayandeep-coder/agentforge/blob/main/internal/repository/agent.go"
click node_workflow_repo "https://github.com/sayandeep-coder/agentforge/blob/main/internal/repository/workflow.go"
click node_task_repo "https://github.com/sayandeep-coder/agentforge/blob/main/internal/repository/task.go"
click node_memory_repo "https://github.com/sayandeep-coder/agentforge/blob/main/internal/repository/memory.go"
click node_schedule_repo "https://github.com/sayandeep-coder/agentforge/blob/main/internal/repository/schedule.go"
click node_publisher "https://github.com/sayandeep-coder/agentforge/blob/main/internal/queue/publisher.go"
click node_queue "https://github.com/sayandeep-coder/agentforge/blob/main/internal/queue/queue.go"
click node_worker_pool "https://github.com/sayandeep-coder/agentforge/blob/main/internal/worker/pool.go"
click node_runtime "https://github.com/sayandeep-coder/agentforge/blob/main/internal/agent/runtime.go"
click node_workflow_engine "https://github.com/sayandeep-coder/agentforge/blob/main/internal/workflow/engine.go"
click node_tool_registry "https://github.com/sayandeep-coder/agentforge/blob/main/internal/tools/registry.go"
click node_llm_provider "https://github.com/sayandeep-coder/agentforge/blob/main/internal/llm/provider.go"
click node_scheduler "https://github.com/sayandeep-coder/agentforge/blob/main/internal/scheduler/scheduler.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_router,node_client toneBlue
class node_agent_service,node_workflow_service,node_task_service,node_memory_service,node_schedule_service toneAmber
class node_publisher,node_queue,node_worker_pool,node_runtime,node_workflow_engine,node_tool_registry,node_llm_provider,node_scheduler toneMint
class node_agent_repo,node_workflow_repo,node_task_repo,node_memory_repo,node_schedule_repo,node_postgres toneRose
class node_schedule_trigger toneIndigo
```

## Components

### HTTP API

- [REST Router](https://github.com/sayandeep-coder/agentforge/blob/main/internal/api/router.go): `internal/api/router.go`

### Application Services

- [Agent Service](https://github.com/sayandeep-coder/agentforge/blob/main/internal/service/agent.go): `internal/service/agent.go`
- [Workflow Service](https://github.com/sayandeep-coder/agentforge/blob/main/internal/service/workflow.go): `internal/service/workflow.go`
- [Task Service](https://github.com/sayandeep-coder/agentforge/blob/main/internal/service/task.go): `internal/service/task.go`
- [Memory Service](https://github.com/sayandeep-coder/agentforge/blob/main/internal/service/memory.go): `internal/service/memory.go`
- [Schedule Service](https://github.com/sayandeep-coder/agentforge/blob/main/internal/service/schedule.go): `internal/service/schedule.go`

### Execution Plane

- [Task Publisher](https://github.com/sayandeep-coder/agentforge/blob/main/internal/queue/publisher.go): `internal/queue/publisher.go`
- [Task Queue](https://github.com/sayandeep-coder/agentforge/blob/main/internal/queue/queue.go): `internal/queue/queue.go`
- [Worker Pool](https://github.com/sayandeep-coder/agentforge/blob/main/internal/worker/pool.go): `internal/worker/pool.go`
- [Agent Runtime](https://github.com/sayandeep-coder/agentforge/blob/main/internal/agent/runtime.go): `internal/agent/runtime.go`
- [Workflow Engine](https://github.com/sayandeep-coder/agentforge/blob/main/internal/workflow/engine.go): `internal/workflow/engine.go`
- [Tool Registry](https://github.com/sayandeep-coder/agentforge/blob/main/internal/tools/registry.go): `internal/tools/registry.go`
- [LLM Provider Port](https://github.com/sayandeep-coder/agentforge/blob/main/internal/llm/provider.go): `internal/llm/provider.go`
- [Cron Scheduler](https://github.com/sayandeep-coder/agentforge/blob/main/internal/scheduler/scheduler.go): `internal/scheduler/scheduler.go`

### Persistence

- [Agent Repository](https://github.com/sayandeep-coder/agentforge/blob/main/internal/repository/agent.go): `internal/repository/agent.go`
- [Workflow Repository](https://github.com/sayandeep-coder/agentforge/blob/main/internal/repository/workflow.go): `internal/repository/workflow.go`
- [Task Repository](https://github.com/sayandeep-coder/agentforge/blob/main/internal/repository/task.go): `internal/repository/task.go`
- [Memory Repository](https://github.com/sayandeep-coder/agentforge/blob/main/internal/repository/memory.go): `internal/repository/memory.go`
- [Schedule Repository](https://github.com/sayandeep-coder/agentforge/blob/main/internal/repository/schedule.go): `internal/repository/schedule.go`
- **PostgreSQL**

### Other components

- **API Client**
- **Trigger Callback**

## Connections

- API Client → REST Router: sends requests
- REST Router → Agent Service: calls
- REST Router → Workflow Service: calls
- REST Router → Task Service: calls
- REST Router → Memory Service: calls
- REST Router → Schedule Service: calls
- Agent Service → Agent Repository: reads and writes
- Workflow Service → Workflow Repository: reads and writes
- Task Service → Task Repository: reads and writes
- Task Service → Task Publisher: publishes task
- Memory Service → Memory Repository: reads and writes
- Schedule Service → Schedule Repository: reads and writes
- Agent Repository → PostgreSQL: queries
- Workflow Repository → PostgreSQL: queries
- Task Repository → PostgreSQL: queries
- Memory Repository → PostgreSQL: queries
- Schedule Repository → PostgreSQL: queries
- Task Publisher → Task Queue: enqueues task
- Worker Pool → Task Queue: dequeues tasks
- Worker Pool → Agent Runtime: executes task
- Agent Runtime → Task Repository: loads and updates
- Agent Runtime → Agent Repository: loads agent
- Agent Runtime → Workflow Repository: loads workflow
- Agent Runtime → Workflow Engine: executes workflow
- Workflow Engine → Tool Registry: executes tool
- Workflow Engine → LLM Provider Port: generates response
- Cron Scheduler → Trigger Callback: invokes callback
