Define your solution in one socotra.yaml. Preview every change with plan. Apply with confidence. Inspired by Terraform, built for .NET developers.
socotra:
version: "1.1"
solution:
name: "EcommerceApp"
dotnetVersion: "net9.0"
modules:
- name: "Orders"
layers:
- name: "Domain"
type: ClassLib
templates: ["base-entity", "aggregate-root"]
- name: "Application"
references: ["Orders.Domain"]
- name: "Api"
type: WebApi$ socotra plan
+ Create solution 'EcommerceApp.sln'
+ Add project 'Orders.Domain' (ClassLib)
+ Add project 'Orders.Application'
+ Add project 'Orders.Api' (WebApi)
+ Apply template 'base-entity' to Orders.Domain
+ Apply template 'aggregate-root' to Orders.Domain
Plan: 6 to add, 0 to modify, 0 to destroy.One command. Requires the .NET SDK 10.0 or later.
dotnet tool install -g EssaLab.SocotraSocotra CLI transforms .NET project setup from a series of manual dotnet new, dotnet add and dotnet sln commands into a single declarative workflow. You describe the solution you want — modules, layers, packages, references, templates — and Socotra reconciles the filesystem to match.
socotra.yaml— Desired state↓socotra plan— Preview↓socotra apply— Execute↓.NET solution— Actual stateSolutions, modules, layers, packages, references, and templates — all in one YAML file.
plan / apply cycle with automatic drift detection between desired and actual state.
Modular components with single responsibility and no circular dependencies.
11 built-in DDD templates (base-entity, value-object, aggregate-root, …) plus GitHub and local custom templates.
Non-destructive writes, automatic rollback on failure, atomic file operations, pre-existing file protection.
--output json for machine-readable output and --detailed-exit-codes for automation pipelines.
Author socotra.yaml: solution, modules, layers, packages, templates.
socotra initVerify schema, namespaces, references, and architecture constraints.
socotra validateColour-coded preview of every add, modify, and destroy. No writes.
socotra planAtomic execution with automatic rollback on failure.
socotra applySocotra’s execution plan shows every step with a risk indicator: low adds, medium updates, and high removals. Use --output json for machine-readable output and --detailed-exit-codes to gate downstream CI steps.
{
"summary": { "toAdd": 3, "toModify": 1, "toDestroy": 0 },
"steps": [
{
"type": "AddProject",
"risk": "Low",
"description": "Create project 'MyApp.Orders.Domain' as ClassLib"
},
{
"type": "AddPackage",
"risk": "Low",
"description": "Add FluentValidation v11.9.2 to MyApp.Orders.Application"
},
{
"type": "UpdateTargetFramework",
"risk": "Medium",
"description": "Change net8.0 → net9.0 in MyApp.Orders.Api"
}
]
}Each stage is an independent .NET project with a single responsibility and no circular dependencies. Data flows through the Result<T> monad.
Install the tool and ship your first state-managed .NET solution in five minutes.