This guide provides instructions for creating complete CALM architecture documents that comply with the FINOS CALM v1.0 schema.
Every CALM architecture MUST include:
{
"$schema": "https://calm.finos.org/release/1.1/meta/calm.json",
"unique-id": "string",
"name": "string",
"description": "string"
}{
"metadata": [],
"nodes": [],
"relationships": [],
"flows": [],
"controls": {}
}- Include required $schema reference to CALM v1.0
- Provide unique-id (kebab-case recommended)
- Add descriptive name and description
- Name file with
.architecture.jsonsuffix - Add nodes array (even if empty initially)
- Add relationships array to connect nodes
- Include metadata array for operational info 🚨 MANDATORY VALIDATION (Do not skip):
- Verify calm-cli is installed:
which calm - Run CALM validation:
calm validate -a <filename>.architecture.json - Review output for errors:
jsonSchemaValidationOutputs,spectralSchemaValidationOutputs - Fix ALL errors before proceeding - Do not assume JSON validity equals CALM validity
- Confirm output shows:
"hasErrors": false, "hasWarnings": false - Document any warnings addressed
- Naming: Use descriptive, business-friendly names
- IDs: Use kebab-case for unique-id values
- File Naming: Architecture files should be suffixed with
.architecture.json(e.g.,trading-system.architecture.json) - Modularity: Consider using detailed-architecture for complex subsystems
- Validation: Always validate before committing changes
- Documentation: Include comprehensive descriptions
{
"$schema": "https://calm.finos.org/release/1.1/meta/calm.json",
"unique-id": "example-trading-system",
"name": "Example Trading System",
"description": "A simple trading system architecture",
"metadata": [
{
"version": "1.0.0",
"created-by": "Architecture Team",
"environment": "production"
}
],
"nodes": [],
"relationships": []
}