Skip to content

Project Structure

Full directory layout of the Agent Smith repository.

agent-smith/
├── .agentsmith/                    # Agent meta-files (project context)
│   ├── context.yaml                # Project description + phase tracking
│   ├── coding-principles.md        # Detected coding conventions
│   ├── phases/
│   │   ├── done/                   # Completed phase docs (historical)
│   │   ├── active/                 # Currently active phase (max 1)
│   │   └── planned/               # Upcoming phase requirements
│   └── runs/                       # Execution artifacts (r{NN}-slug/)
├── src/
│   ├── AgentSmith.Domain/          # Innermost layer — no dependencies
│   │   ├── Entities/               # Ticket, Repository, Plan, CodeChange, etc.
│   │   ├── Models/                 # Value objects: TicketId, BranchName, FilePath
│   │   └── Exceptions/            # AgentSmithException, ConfigurationException
│   │
│   ├── AgentSmith.Contracts/       # Interfaces + DTOs
│   │   ├── Commands/               # ICommandHandler, ICommandExecutor, PipelineContext
│   │   ├── Decisions/              # IDecisionLogger
│   │   ├── Models/                 # Finding, RunCostSummary, ParsedIntent, OutputContext
│   │   │   └── Configuration/     # AgentSmithConfig, ProjectConfig, ModelRegistryConfig
│   │   ├── Providers/              # IAgentProvider, IContainerRunner, IModelRegistry
│   │   └── Services/              # Service interfaces
│   │
│   ├── AgentSmith.Application/     # Use cases + handlers
│   │   ├── Models/                 # Context records per handler (39 types)
│   │   ├── Services/
│   │   │   ├── Handlers/          # Pipeline step handlers (39 handlers)
│   │   │   ├── Builders/          # Context builders for API/legal pipelines
│   │   │   └── Triggers/         # InboxPollingService
│   │   │   ├── ExecutePipelineUseCase.cs
│   │   │   ├── PipelineExecutor.cs
│   │   │   ├── CommandExecutor.cs
│   │   │   ├── CommandContextFactory.cs
│   │   │   ├── PipelineCostTracker.cs
│   │   │   ├── RegexIntentParser.cs
│   │   │   ├── LlmIntentParser.cs
│   │   │   └── TrackingLlmClient.cs
│   │   └── Extensions/            # DI registration, PipelineContext extensions
│   │
│   ├── AgentSmith.Infrastructure.Core/  # Shared infra (no external SDKs)
│   │   └── Services/
│   │       ├── Configuration/     # YamlConfigurationLoader, SecretsProvider
│   │       ├── Detection/         # Language detectors (.NET, Python, TypeScript)
│   │       ├── ProjectDetector.cs
│   │       ├── ContextGenerator.cs
│   │       ├── CodeMapGenerator.cs
│   │       ├── CodingPrinciplesGenerator.cs
│   │       ├── ProviderRegistry.cs
│   │       ├── RepoSnapshotCollector.cs
│   │       └── YamlSkillLoader.cs
│   │
│   ├── AgentSmith.Infrastructure/  # External integrations
│   │   ├── Models/                 # ToolDefinitions, BusMessage, ScoutResult
│   │   └── Services/
│   │       ├── Providers/
│   │       │   ├── Agent/         # Claude, OpenAI, Gemini, Ollama providers + loops
│   │       │   ├── Source/        # GitHub, AzureRepos, GitLab, Local source providers
│   │       │   └── Tickets/      # GitHub, AzureDevOps, GitLab, Jira ticket providers
│   │       ├── Factories/         # AgentProvider, LlmClient, Source, Ticket factories
│   │       ├── Output/            # Console, SARIF, Markdown, Summary strategies
│   │       ├── Tools/             # DockerToolRunner, ProcessToolRunner
│   │       ├── Bus/               # RedisMessageBus, RedisProgressReporter
│   │       ├── Containers/        # DockerContainerRunner
│   │       ├── Nuclei/            # NucleiSpawner
│   │       └── Spectral/         # SpectralSpawner
│   │
│   ├── AgentSmith.Host/           # CLI + webhook entry point
│   │   ├── Commands/              # Fix, Feature, SecurityScan, ApiScan, Legal, etc.
│   │   ├── Services/
│   │   │   └── Webhooks/         # GitHub, GitLab, AzureDevOps webhook handlers
│   │   ├── Program.cs             # Entry point, System.CommandLine setup
│   │   ├── ConfigDiscovery.cs     # 4-step config file resolution
│   │   └── ServiceProviderFactory.cs  # DI container builder
│   │
│   └── AgentSmith.Dispatcher/     # Chat gateway (separate process)
│       ├── Contracts/              # IJobSpawner, IPlatformAdapter, IMessageBus
│       ├── Models/                 # ChatIntent, JobRequest, ConversationState
│       ├── Services/
│       │   ├── Adapters/          # SlackAdapter, modals, interactions
│       │   ├── Handlers/          # Dispatcher-specific handlers
│       │   ├── IntentEngine.cs
│       │   ├── KubernetesJobSpawner.cs
│       │   ├── DockerJobSpawner.cs
│       │   ├── MessageBusListener.cs
│       │   ├── ConversationStateManager.cs
│       │   ├── OrphanJobDetector.cs
│       │   └── ProjectResolver.cs
│       └── Program.cs             # Dispatcher entry point
├── tests/
│   └── AgentSmith.Tests/          # 567 tests (xUnit + Moq + FluentAssertions)
├── config/                         # Configuration templates
├── prompts/                        # Prompt templates for AI providers
├── k8s/                            # Kubernetes manifests
│   ├── base/                       # Kustomize base
│   │   ├── kustomization.yaml
│   │   ├── namespace.yaml
│   │   ├── configmap/
│   │   ├── dispatcher/
│   │   ├── rbac/
│   │   └── redis/
│   ├── overlays/
│   │   ├── dev/                   # Development overlay
│   │   └── prod/                  # Production overlay
│   └── secret-template.yaml       # Secret template (do not commit values)
├── docs/                           # MkDocs documentation site
├── Dockerfile                      # Agent image (multi-stage, gosu entrypoint)
├── Dockerfile.dispatcher           # Dispatcher image
├── docker-compose.yml              # Full stack: agent, server, redis, dispatcher, ollama
├── docker-entrypoint.sh            # Permission handling via gosu
├── AgentSmith.sln                  # Solution file
├── release-please-config.json      # Automated release configuration
└── version.txt                     # Current version

Solution File

The AgentSmith.sln contains 8 projects:

Project Type Description
AgentSmith.Domain Class Library Entities, value objects, exceptions
AgentSmith.Contracts Class Library Interfaces, DTOs, config models
AgentSmith.Application Class Library Handlers, pipeline, use cases
AgentSmith.Infrastructure.Core Class Library Config, detection, registries
AgentSmith.Infrastructure Class Library AI, Git, tickets, output, tools
AgentSmith.Host Console App CLI entry point + webhook server
AgentSmith.Dispatcher Web App Chat gateway + job spawner
AgentSmith.Tests Test Project 567 tests (xUnit)

Key Files

File Purpose
src/AgentSmith.Host/Program.cs CLI command definitions (18 lines after refactor)
src/AgentSmith.Application/Services/ExecutePipelineUseCase.cs Top-level orchestrator
src/AgentSmith.Application/Services/PipelineExecutor.cs Runs ordered command sequence
src/AgentSmith.Contracts/Commands/PipelinePresets.cs Pipeline step definitions
src/AgentSmith.Host/ConfigDiscovery.cs Config file resolution logic
docker-entrypoint.sh Volume permission handling with gosu
k8s/base/kustomization.yaml Kubernetes base configuration