MILTON

MILTON is an AI-assisted documentation platform. It ingests source code repositories, analyses them, and generates structured technical documents (requirements, test cases, traceability, etc.) that can be edited in a web UI and exported to PDF.

Architecture at a glance

MILTON is orchestrated with .NET Aspire (MILTON.AppHost). The main moving parts:

Project / ResourceRole
MILTONMain backend API (FastEndpoints) + Wolverine; owns the relational domain, EF persistence/migrations, and supporting infrastructure
MILTON.PlatformShared technical-infra library: AI client, S3 repo-file + claim-check stores. No domain/DTOs
MILTON.DocumentGeneratorWorker: AI document/block generation + the saga. Message-only, owns its own docgen-db
MILTON.GitOperationsWorker: clones repositories and uploads them to S3
MILTON.NotificationServiceSignalR hub + live-update consumer
MILTON.ApiMigrationServiceApplies the API’s EF Core migrations to milton-db on startup
MILTON.ReverseProxyYARP gateway (TLS termination, unified routing)
MILTON.ClusteringPython service for repository clustering/analysis
MILTON.ReactClientThe frontend — React 19 + Vite (see its own README)
MILTON.ServiceDefaultsShared OpenTelemetry / health / resilience config

Service isolation: there is no shared domain/contracts library — MILTON.BackendCore and MILTON.Shared have both been folded into the API. Services interoperate over RabbitMQ via per-producer records bound by Wolverine [MessageIdentity], with large payloads passed through an S3 claim-check. The only shared libraries are MILTON.Platform and MILTON.ServiceDefaults.

Backing services (run as containers via Aspire): PostgreSQL, RabbitMQ, Keycloak, RustFS (S3-compatible storage), and Gotenberg (HTML→PDF).

The frontend is React only. The previous Blazor client (MILTON.Client) has been removed. See ARCHITECTURE_REVIEW.md for the current state of the codebase and the refactoring roadmap.

Running locally

The whole system is started through the Aspire AppHost:

aspire run

This builds and launches every .NET service, the React client, and all backing containers, and exposes the Aspire dashboard. See AGENTS.md for more detail on working with the Aspire orchestration.

Repository docs