Skip to content
🤷

Forgive us! These docs are a work in progress. Some pages may be incomplete or describe features that aren't quite finished yet. Farkitect is in early development and we don't recommend using it for real work just yet. Feel free to explore — just be aware that things are still being built.

Element Types Reference

All model content in Farkitect is stored as elements with a discriminated kind field. This page describes each element kind.

A container for organising other elements, diagrams, and catalogs.

Field Type Required Description
name String Yes Display name
layer “M3” / “M2” / “M1” Yes MOF layer
packageKind “standard” / “common” No Package classification
isReadOnly Boolean No Prevents modification
imports String[] No Names of imported M2 packages

Package roles (M2 only): elementTypes, elementTypeLayer, relationshipTypes, enumerations, views

The primary element kind — used for both M2 type definitions and M1 instances.

Field Type Required Description
name String Yes Display name
layer “M3” / “M2” / “M1” Yes MOF layer
classifierId Reference M1 only Points to the M2 element type
isAbstract Boolean No M2 only — nothing can be created as this type; it is not offered in the Palette or the type lists, and its name shows in italics
superclasses Reference[] No M2 only — the types this one inherits property types and relationship rules from. Same kind (element or relationship type) and same metamodel
notation Object M2 only Visual appearance definition
palette Object M2 only Palette entry configuration

At M2, a Class defines an element type with notation, properties, and constraints. At M1, a Class is an instance of an M2 type.

A typed field definition owned by a Class (at M2 level).

Field Type Required Description
name String Yes Property name
propertyType String Yes Data type — primitive name or enumeration $id
multiplicity [min, max] Yes [0,1] = optional, [1,1] = required
defaultValue String No Default value for new instances
format String No Format hint: “multiline”, “url”, “email”

A primitive data type definition (at M3 level).

Field Type Required Description
name String Yes Type name (String, Integer, etc.)
primitiveKind String Yes The primitive kind identifier

A type with a fixed set of named literal values.

Field Type Required Description
name String Yes Enumeration name
literals Array Yes List of {name, value} pairs

A directed connection between two elements.

Field Type Required Description
name String Yes Display name / label
sourceId Reference Yes Source element
targetId Reference Yes Target element
classifierId Reference M1 only Points to M2 relationship type

At M2, a Relationship with kind.type = "Relationship" defines a relationship type. At M1, relationships are instances classified by M2 types.

Field Type Description
name String Display name
layer “M3” / “M2” / “M1” MOF layer
packageId Reference Parent package
ownerId Reference Owner element (for owned/subordinate elements)
projectId Reference Project scope (undefined for system M2/M3)
audit {createdAt, updatedAt} Timestamps

Farkitect

Model anything.

“Welcome back — your diagrams have been plotting without you.”


Release 282 · 14 Oct 2026

New video: Exploring the Explorer, a four-minute tour of the Explorer panel

Release
282
Released
14 Oct 2026, 00:03 UTC
Built
14 Oct 2026, 00:03 UTC
Environment
Production
Surface
Docs
Commit
a9ad7d2
Branch
main