Skip to content
CAI
Software that uses CAICheck a score

ninjarobot/FsCloudInit

63.2

Adequate · 3 October 2026

681

lines of production code

F#

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

FsCloudInit is an F\# library that generates cloud-init configuration files for infrastructure provisioning. It provides a builder-based API to define directives such as package installation, file management, repository setup, and user configuration, serializing them into valid YAML. The system is designed to integrate with tools like Farmer for deploying virtual machines, as demonstrated by included examples for Azure VM setup.

Features

Expanded cloud-init configuration support with builders and new modules

FsCloudInit now supports a broader range of cloud-init directives, including Yum repository configuration, file permissions, deferred file writes, gzip-compressed content, and snap commands. New F\# builder syntax (WriteFileBuilder, AptSourceBuilder, YumRepoBuilder) simplifies constructing these configurations, while the underlying data models have been updated to include fields like Permissions, Append, Defer, and GzipBase64 encoding. The serialization logic has also been adjusted to serialize the ConfigModel property directly.

FsCloudInit · high confidence

New notebook demonstrating VM provisioning with Farmer and FsCloudInit

Added a new interactive notebook that demonstrates how to use the Farmer and FsCloudInit libraries to define and deploy an Azure Virtual Machine. The notebook includes a complete example of configuring cloud-init to install the .NET SDK, deploy an ASP.NET Core MVC application via a bootstrap script, and manage the app as a systemd service.

notebooks · high confidence

Test coverage

Expanded test coverage for cloud-init configuration generation

Added comprehensive tests for the FsCloudInit library's configuration generation capabilities, including package installation (with specific versions), file embedding (plain, gzipped, and with permissions/defer), APT and YUM repository setup, hostname configuration, final messages, power state management, command execution, and user creation. The test suite now validates generated YAML against expected files and includes cross-architecture fixes for gzip handling.

FsCloudInitTests · high confidence

Dependencies

Library targets .NET Standard 2.0 with updated dependencies and NuGet metadata

The FsCloudInit library has changed its target framework from .NET 5.0 to .NET Standard 2.0, allowing it to run on a wider range of .NET implementations. This change is accompanied by an update to YamlDotNet from version 9.1.4 to 12.0.0 and the explicit pinning of FSharp.Core to version 5.0.0. Additionally, the NuGet package metadata has been enriched with author, copyright, description, and repository details, and the package now includes the LICENSE and README.md files. The test project has been upgraded to .NET 10.0, with Expecto updated to 10.2.3, YoloDev.Expecto.TestSdk to 0.15.5, and Microsoft.NET.Test.Sdk to 18.0.1.

(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 64 → 63 (-0.4)
  • Rubric changed (rubric-2026.09.15 → rubric-2026.10.1) — scores are not directly comparable.

Lenses

  • Code Health 100 → 100 (+0.0)
  • Architecture 90 → 92 (+1.8)
  • Maturity 55 → 55 (+0.0)
  • Readiness 55 → 55 (+0.0)
  • Security 81 → 77 (-3.9)

Resolved (1)

  • Documentation: no usage examples (README.md)

New (1)

  • Documentation: no installation or build instructions (README.md)

Changes since last survey

  • 1 commits — 1 feature/other, 0 fixes

By area

  • (root) — 1 commit

Notable commits

  • change: Use latestFeature for SDK resolution (#17)

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

ninjarobot/FsCloudInit 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 3 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit a3661681ac4e74266b1728890d7b399e7dc85370 — the exact code this score is about.
  • Scored under rubric-2026.10.1 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-4f4226d619ea.