Skip to main content


Data Modeling Language and Tools


Easy to Use

Designed from the ground up to be easy to learn, for both newcomers and data modeling pros.


Powerful Tools

Import your existing models, or convert Concerto models to 14+ output formats.


Built for the Web

Import models from URLs. Lightweight browser compatible runtime.

Schemas, for People too

Business and product teams are the domain experts, and we believe that they should own domain models too.

Popular schema languages are designed to be machine readable, but are not accessible for non-technical people.

Concerto strives for the expressiveness of UML, but with compatibility to modern technology stacks.
  concept Address {
o String street
o String city
o String postCode
o Country country

concept Person identified by name {
o String name
o Address address optional
@description("Height (cm)")
o Double height range=[0.0,]
o DateTime dateOfBirth

enum Country {
o UK

Platform Neutral, but Runtime Compatible

Concerto's code generation capabilities let you use models across multiple platforms. Supported targets include: Apache Avro, C# (.NET), Go, GraphQL, Java, JSON Schema, Markdown, Mermaid UML, OData (EDM), OpenAPI, PlantUML, Protocol Buffers, Rust, TypeScript, XML Schema, & custom formats.

Bootstrap your models from existing OpenAPI specifications, JSON Schema models, or natural language text such as agreements.
classDiagram class ServiceType { << enumeration>> + GOLD + SILVER + BRONZE } class ServiceLevel { << enumeration>> + BASIC + STANDARD + PREMIUM } class Service { << concept>> + ServiceType serviceType + ServiceLevel serviceLevel + Double price } Service "1" *-- "1" ServiceType Service "1" *-- "1" ServiceLevel class Organization { << concept>> + String name + String address + String contactName + String contactEmail } class ServiceLevelAgreement { << concept>> + Organization customer + Organization provider + Service service + DateTime startDate + DateTime endDate + Double penaltyPercentage + Boolean autoRenewal } ServiceLevelAgreement "1" *-- "1" Organization ServiceLevelAgreement "1" *-- "1" Organization ServiceLevelAgreement "1" *-- "1" Service

Give it a try

  1. Run this

    npm i -g @accordproject/concerto-cli
  2. Read these

    Quick Start Tutorial