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.

.farki File Format

The .farki format is Farkitect’s native interchange format — human-readable JSON for importing and exporting models.

{
"$format": "farki/1.1",
"scope": "package",
"metadata": { ... },
"package": { ... }
}
FieldRequiredDescription
$formatYesFormat version identifier. Current: "farki/1.1"
scopeYes"package" (single package tree) or "project" (complete project)
metadataYesFile metadata including creation timestamp and content summary
packagePackage scopeThe root package (when scope = “package”)
packagesProject scopeArray of root packages (when scope = “project”)
"metadata": {
"createdAt": "2026-03-15T00:00:00.000Z",
"summary": [
{
"name": "M2 ArchiMate 3.2",
"layer": "M2",
"elementCount": 61
}
]
}

Project-scope files may also include name, description, and sourceProject.

{
"name": "M1 Farquind Applications",
"layer": "M1",
"imports": ["M2 ArchiMate 3.2"],
"elements": [ ... ],
"diagrams": [ ... ],
"catalogs": [ ... ]
}
FieldRequiredDescription
nameYesPackage name
notesNoMarkdown description
layerYes"M3", "M2", or "M1"
packageKindM2 only"standard" or "common"
isReadOnlyNotrue to prevent modification
importsNoArray of M2 package names this package uses
elementsNoArray of child elements
diagramsNoArray of diagrams
catalogsNoArray of catalogs
{
"name": "FQ Vessels",
"type": "Class",
"$id": "fq-vessels",
"classifier": "M2 ArchiMate 3.2:Application Component",
"notes": "Fleet telemetry and diagnostics platform.",
"propertyValues": {
"Lifecycle Status": "active"
}
}
{
"name": "Customer Systems",
"type": "Package",
"$id": "customer-systems",
"elements": [ ... ]
}
{
"name": "FQ Orders serves Fleet Dashboard",
"type": "Relationship",
"source": "fq-orders",
"target": "fleet-dashboard",
"$id": "fq-orders-serves-fleet-dashboard",
"classifier": "M2 ArchiMate 3.2:Serving"
}
{
"name": "Entity",
"type": "Class",
"$id": "entity",
"nestedElements": [
{
"name": "customerId",
"type": "Class",
"$id": "customer-id",
"classifier": "M2 Logical Data Model:Attribute",
"propertyValues": {
"Data Type": "integer",
"Is Primary Key": "true"
}
}
]
}

Every element has a $id — a unique, human-readable identifier within the file.

RuleExample
Unique within the fileNo two elements share a $id
Kebab-casefq-vessels, customer-segment
Used for cross-referencesRelationships reference source/target by $id
StableRenaming in the UI doesn’t change $id

M1 elements reference their M2 type using Package Name:Type Name:

"classifier": "M2 Business Model Canvas:Customer Segment"

Flat object mapping property names to values:

"propertyValues": {
"Lifecycle Status": "active",
"Start Date": "2025-06-15",
"Is Required": "true"
}

Enumeration values use the machine value, not the display name.

{
"name": "Application Overview",
"notation": "M2 ArchiMate 3.2",
"viewport": { "panX": 0, "panY": 0, "zoom": 1.0 },
"nodes": [
{ "element": "fq-vessels", "x": 100, "y": 200, "width": 160, "height": 80 }
],
"edges": [
{ "source": "fq-orders-node", "target": "fq-vessels-node", "relationship": "orders-serves-vessels" }
]
}

M2 element types include additional fields:

FieldDescription
notationVisual appearance (shape, colour, icon, compartments)
palettePalette configuration (usually {})
propertiesArray of Property definitions
constraintsRelationship constraints (validPairs)
packageRoleSub-package role (elementTypes, relationshipTypes, etc.)