CompositionalIT/farmer
52.7
Weak · 23 September 2026
39.5k
lines of production code
F#
primary language
3
measurements over time
What this system is
Farmer is an Infrastructure-as-Code library for .NET that enables developers to define Azure resources using a type-safe F\# domain-specific language. It provides a comprehensive set of builders for provisioning and configuring a wide variety of Azure services, ranging from compute and networking to monitoring and security. The system translates these F\# definitions into standard ARM templates for deployment, supported by extensive sample scripts and tutorials for common infrastructure patterns.
Features
Expanded sample scripts for Azure resource provisioning
The samples/scripts directory has been significantly expanded with new F\# scripts demonstrating how to provision a wide variety of Azure resources using the Farmer library. These include examples for Container Apps with ACR workflows, AKS on VNets, Application Gateway with NSGs, Azure Bastion, CDN, Container Groups (including GPU support), Key Vault (keys and secrets), Event Grid, Event Hubs, IoT Hubs, PostgreSQL Flexible Server, Redis, Logic Apps, Sentinel, and more. The samples also cover advanced scenarios like VM delete options, multi-NIC VMs with ultra disks, and nested resource groups, providing users with comprehensive reference implementations for common infrastructure patterns.
samples/scripts · high confidence
Initial ARM resource builders for AVS, Action Groups, Alerts, Container Apps, and Application Gateway
This release introduces new builder modules for several Azure resource types, allowing users to define and deploy them via Farmer. The changes add support for Azure VMware Solution (AVS) private clouds and script packages, comprehensive Action Group configurations (including ARM role, automation runbook, email, SMS, and ITSM receivers), and metric-based alert rules. It also introduces builders for Container Apps (including managed environments, Dapr components, and storage mounts) and a full suite of Application Gateway components (such as SSL certificates, backend pools, and routing rules). Additionally, stubs for Automation Accounts and Prometheus rule groups are included to support monitoring and automation workflows.
src/Farmer/Arm · high confidence
Initial project scaffolding and repository structure
Establishes the foundational structure for the Farmer project, including the solution file (Farmer.sln) with main, test, and sample projects, and configures the build environment with global.json targeting the .NET 10 SDK. Adds standard repository metadata such as the MIT License, contributing guidelines, and a pull request template, while updating the README to reflect a stable, production-ready status. Configures CI/CD via Azure Pipelines for building, testing, and publishing NuGet packages, and sets up code formatting enforcement using Fantomas through an .editorconfig file.
(repo-wide) · high confidence
Initial release of the Farmer IaC library
This entry marks the initial commit of the Farmer project, introducing the core domain model and builder infrastructure for defining Azure resources. The diff establishes foundational types such as ResourceId, ResourceType, and ArmExpression, alongside a new Result-based error handling module (FarmerException) and deployment utilities for the Azure CLI. It also includes the first set of builder extensions for private endpoints and a comprehensive list of Azure RBAC roles, providing the base layer upon which specific resource builders (like WebApp, Storage, and VMs) are constructed.
src/Farmer · high confidence
New F\# tutorial samples for Azure Container Instances, Key Vault, and Web Apps
Added a collection of new F\# script samples in the tutorials directory demonstrating how to deploy and configure Azure resources using Farmer. These include tutorials for running F\# scripts in Azure Container Instances (ACI), integrating Web Apps with Key Vault for secrets, deploying Web Apps with ZIP deployment, creating Cosmos DB-backed applications, configuring custom ARM outputs, managing Key Vault certificates with deployment scripts, hosting a Minecraft server on ACI, deploying multiple Web Apps, and setting up serverless ETL pipelines with Azure Functions.
samples/scripts/tutorials · high confidence
New builders for Azure Monitor, Action Groups, and Application Gateway
Added new builder modules for Azure Monitor (Prometheus rules and rule groups), Action Groups (with support for various receiver types like email, SMS, and webhooks), Application Gateway (including frontend IP configurations, listeners, and backend pools), and Autoscale Settings. These additions allow users to define and deploy monitoring alerts, notification channels, and application gateway configurations directly through the Farmer DSL.
src/Farmer/Builders · high confidence
Restored SampleApp starter template
The SampleApp starter template has been restored to provide a basic entry point for users. The Program.fs file now initializes an ARM deployment targeting North Europe and includes placeholders for resource definition and deployment execution, allowing users to begin building their infrastructure-as-code projects.
samples/SampleApp · high confidence
Removals
Removal of legacy F\# sample scripts
The sample scripts safe-template.fsx, webapp-appinsights.fsx, and webapp-storage.fsx have been removed from the src/Samples directory. These files previously demonstrated how to define Azure resources such as storage accounts and web apps with Application Insights using the Farmer library and write ARM templates to disk. Their deletion indicates that these specific usage patterns or examples are no longer maintained or supported in the current version.
src/Samples · high confidence
Test coverage
Added unit tests for Action Groups, Alerts, and Application Gateway builders
Added new unit tests in src/Tests to validate the generation of ARM templates for Action Groups, Alerts, and Application Gateways. The Action Group tests verify the correct serialization of various receiver types (ARM Role, Automation Runbook, Azure Function, Logic App, etc.) and their resource IDs. The Alert tests ensure that metric-based alerts for VMs, SQL Databases, and custom Application Insights metrics are correctly configured with the right criteria, frequencies, and target resource types. The Application Gateway tests confirm that complex configurations, including NSGs, subnets, managed identities, backend pools, and routing rules, are correctly translated into the expected ARM JSON structure.
src/Tests · high confidence
Dependencies
Farmer library upgraded to .NET 8/10 SDK with FSharp.Core 5.0 and System.Text.Json
The Farmer library and its test project have been updated to target modern .NET SDKs (net8.0 for the sample app and net10.0 for tests), replacing the previous netstandard2.0-only constraint for the test harness. The core library now depends on FSharp.Core version 5.0.0 and System.Text.Json version 5.0.0, moving away from Newtonsoft.Json for JSON handling. This change aligns the project with current .NET standards and improves performance and compatibility for users authoring ARM templates.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 54 → 53 (-1.6)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 79 → 79 (-0.1)
- Architecture 100 → 99 (-1.1)
- Maturity 47 → 47 (-0.3)
- Readiness 49 → 37 (-12.0)
- Security 62 → 81 (+19.3)
- Domain Modelling 100 (new)
Resolved (46)
- Dormant codebase
- Duplicated block (10 lines × 2) (src/Farmer/Arm/DataLakeStore.fs)
- Duplicated block (11 lines × 2) (src/Farmer/Arm/Compute.fs)
- Duplicated block (11 lines × 2) (src/Farmer/Arm/Compute.fs)
- Duplicated block (11 lines × 2) (src/Farmer/Arm/NetworkManager.fs)
- Duplicated block (11 lines × 2) (src/Farmer/Builders/Builders.WebApp.fs)
- Duplicated block (12 lines × 2) (src/Farmer/Builders/Builders.WebApp.fs)
- Duplicated block (12 lines × 2) (src/Farmer/Builders/Builders.WebApp.fs)
- Duplicated block (13 lines × 2) (src/Farmer/Arm/Dns.fs)
- Duplicated block (14 lines × 2) (src/Farmer/Builders/Builders.DnsResolver.fs)
- Duplicated block (14 lines × 2) (src/Farmer/Builders/Builders.Gallery.fs)
- Duplicated block (14 lines × 2) (src/Farmer/Builders/Builders.LoadBalancer.fs)
- Duplicated block (15 lines × 2) (src/Farmer/Builders/Builders.WebApp.fs)
- Duplicated block (16 lines × 2) (src/Farmer/Arm/ContainerService.fs)
- Duplicated block (16 lines × 2) (src/Farmer/Arm/Gallery.fs)
- Duplicated block (16 lines × 2) (src/Farmer/Builders/Builders.WebApp.fs)
- Duplicated block (16 lines × 3) (src/Farmer/Arm/ContainerInstance.fs)
- Duplicated block (17 lines × 2) (src/Farmer/DiagnosticLogCategories.fs)
- Duplicated block (18 lines × 2) (src/Farmer/Arm/Compute.fs)
- Duplicated block (21 lines × 2) (src/Farmer/Builders/Builders.Storage.fs)
- …and 26 more
New (176)
- Concentrated knowledge decay
- Documentation: no installation or build instructions (README.md)
- Documentation: no installation or build instructions (docs/content/quickstarts/quickstart-3.md)
- Documentation: no licence statement (docs/content/support/_index.md)
- Documentation: written for insiders (docs/content/tutorials/keyvault-certs.md)
- Duplicated block (10–11 lines × 2) (src/Farmer/Arm/DataLakeStore.fs)
- Duplicated block (10–11 lines × 2) (src/Farmer/Builders/Builders.Functions.fs)
- Duplicated block (11 lines × 2) (src/Farmer/Arm/NetworkManager.fs)
- Duplicated block (11 lines × 2) (src/Farmer/Builders/Builders.NetworkManager.fs)
- Duplicated block (11–12 lines × 2) (src/Farmer/Arm/Compute.fs)
- Duplicated block (11–12 lines × 2) (src/Farmer/Arm/Compute.fs)
- Duplicated block (12 lines × 2) (src/Farmer/Arm/Compute.fs)
- Duplicated block (12–13 lines × 2) (src/Farmer/Arm/Dns.fs)
- Duplicated block (14 lines × 2) (src/Farmer/Arm/Gallery.fs)
- Duplicated block (14 lines × 2) (src/Farmer/Builders/Builders.Functions.fs)
- Duplicated block (15 lines × 2) (src/Farmer/Arm/App.fs)
- Duplicated block (15 lines × 2) (src/Farmer/Builders/Builders.DnsResolver.fs)
- Duplicated block (15 lines × 2) (src/Farmer/Builders/Builders.Functions.fs)
- Duplicated block (15 lines × 3) (src/Farmer/Builders/Builders.VmScaleSet.fs)
- Duplicated block (16 lines × 2) (src/Farmer/Builders/Builders.ApplicationGateway.fs)
- …and 156 more
Changes since last survey
- 4 commits — 4 feature/other, 0 fixes
By area
- src/Farmer — 2 commits
- (repo) — 1 commit
- docs/content — 1 commit
Notable commits
- change: Bump version from 1.9.27 to 1.9.28
- change: Merge pull request #1257 from nricciar/azure-overlay
- change: azure cni network overlay for managed aks clusters
- change: update doc
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
CompositionalIT/farmer was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 23 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 3365a8d6b5b81c3361a7242d3b59afe00282921c — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-955b9cee9818.