ArchMeta · Built 2026-09-09T17:39:23.802Z

Archmeta Application C4 L2 Kernel

Software SystemArchMetaA platform for managing architecture documentation as code. Architects describe their organisation in a textual DSL stored in Git; the Kernel reads that repository into an in-memory graph and serves it over REST, the Viewer authors it, and the Publisher turns it into a static site. There is no database — Git is the source of truth, and the same commit always produces the same model. External SystemGit RepositoryThe model repository: .arch, .data, .view, .cascade, .metamodel, .bpmn and .md files. This IS the database. The Kernel reads it on load and commits to it on write-back; it never … External SystemLLM (Claude)Where .arch files come from in practice. The authoring loop is AI-first, which is why the DSL keeps uniform, predictable shapes a model can emit reliably and why the diagnostics … Kernel Model Repository Volume ContainerGrammarThe Langium grammars for .arch, .data, .view, .cascade and .metamodel, plus the generated parsers and TextMate syntaxes. Depends on nothing else in the product — deliberately, so the language can be reasoned about without the Kernel. ComponentCascade EnginePropagates authored data points through architect-declared hierarchies until nothing changes. Relationship edges and containment edges are interleaved rather than run in fixed phases, and both merge rules are monotone, so the sweep provably reaches a fixed point. Also computes the requirement-versus-capability gap report. ComponentDiagnosticsCollects everything wrong with the model without stopping the load, and is the feedback channel the AI-first authoring loop depends on. Written to the report files and served over the API; deliberately absent from the generated site. ComponentLoaderWalks the repository, parses every source file and builds the graph. Deterministic in ordering as well as in content, so two loads of one commit produce byte-identical output. A syntax error costs the statement, not the file. ComponentMetamodel RegistryResolves the metamodel profiles the repository declares — C4, ArchiMate, custom, side by side. Profiles are repository files scaffolded by archmeta init, never built into the Kernel, so a customer can ship a vocabulary the product has never seen. ComponentModel GraphThe in-memory graph: elements and relationships, two universal node kinds and nothing else. All ontology lives in metamodel profiles rather than in syntax. A child has exactly one parent, and dotted-path containment always wins over a relationship-derived one. ComponentREST APIThe only way in. Point reads by id, search, and bounded neighbourhood fetches — there is no endpoint that returns the whole graph, because a client that could ask for it would eventually be built to. ComponentWrite-BackTurns a batch of staged edits into file changes and one Git commit. Persists the authored string rather than the resolved path; regenerates .arch, .data and .view as projections of the model while treating .bpmn and .md as authoritative and never rewriting them. A round-trip guard compares what it wrote against what it meant to write. BuildsReports every problem toPOST /api/editsWrites files and commitsParses every source file withUseReads the modelWrites generated .arch files intoRealize

Elements (13)

Cascade Enginec4:component

archmeta.kernel.cascade-engine

Propagates authored data points through architect-declared hierarchies until nothing changes. Relationship edges and containment edges are interleaved rather than run in fixed phases, and both merge rules are monotone, so the sweep provably reaches a fixed point. Also computes the requirement-versus-capability gap report.

Diagnosticsc4:component

archmeta.kernel.diagnostics

Collects everything wrong with the model without stopping the load, and is the feedback channel the AI-first authoring loop depends on. Written to the report files and served over the API; deliberately absent from the generated site.

Loaderc4:component

archmeta.kernel.loader

Walks the repository, parses every source file and builds the graph. Deterministic in ordering as well as in content, so two loads of one commit produce byte-identical output. A syntax error costs the statement, not the file.

Metamodel Registryc4:component

archmeta.kernel.metamodel-registry

Resolves the metamodel profiles the repository declares — C4, ArchiMate, custom, side by side. Profiles are repository files scaffolded by archmeta init, never built into the Kernel, so a customer can ship a vocabulary the product has never seen.

Model Graphc4:component

archmeta.kernel.model-graph

The in-memory graph: elements and relationships, two universal node kinds and nothing else. All ontology lives in metamodel profiles rather than in syntax. A child has exactly one parent, and dotted-path containment always wins over a relationship-derived one.

REST APIc4:component

archmeta.kernel.rest-api

The only way in. Point reads by id, search, and bounded neighbourhood fetches — there is no endpoint that returns the whole graph, because a client that could ask for it would eventually be built to.

Write-Backc4:component

archmeta.kernel.write-back

Turns a batch of staged edits into file changes and one Git commit. Persists the authored string rather than the resolved path; regenerates .arch, .data and .view as projections of the model while treating .bpmn and .md as authoritative and never rewriting them. A round-trip guard compares what it wrote against what it meant to write.

Kernelc4:container

archmeta.kernel

Reads the repository into an in-memory graph and serves it over REST on port 7777. Never throws on model content: unresolved references, malformed attributes and rule violations become diagnostics, and the load always completes. A pure function of the repository — no clock, no randomness, no network during a load — so the same commit produces the same model and the same diagnostics forever.

Also in:docker

ArchMetac4:softwaresystem

archmeta

A platform for managing architecture documentation as code. Architects describe their organisation in a textual DSL stored in Git; the Kernel reads that repository into an in-memory graph and serves it over REST, the Viewer authors it, and the Publisher turns it into a static site. There is no database — Git is the source of truth, and the same commit always produces the same model.

Git Repositoryc4:externalsystem

git-repository

The model repository: .arch, .data, .view, .cascade, .metamodel, .bpmn and .md files. This IS the database. The Kernel reads it on load and commits to it on write-back; it never pushes, never pulls and never branches, and is silently inert when the directory is not a Git working tree.

LLM (Claude)c4:externalsystem

llm

Where .arch files come from in practice. The authoring loop is AI-first, which is why the DSL keeps uniform, predictable shapes a model can emit reliably and why the diagnostics and report files matter — they are the feedback channel back to the generator.

Model Repository Volumearchimate:node

deployment.volumes.model-repo

The Git working tree holding the .arch, .data, .view, .cascade, .metamodel, .bpmn and .md files, mounted read-write so the Kernel can commit. This is the database, and it is a directory.

Grammarc4:container

archmeta.grammar

The Langium grammars for .arch, .data, .view, .cascade and .metamodel, plus the generated parsers and TextMate syntaxes. Depends on nothing else in the product — deliberately, so the language can be reasoned about without the Kernel.

Relationships (22)Relationships (2)

archmeta.kernel.cascade-engine → archmeta.kernel.model-graphCascade Engine → Model Graphc4:uses

archmeta.kernel.cascade-engine → archmeta.kernel.model-graph

archmeta.kernel.loader → archmeta.grammarLoader → Grammarc4:dependson

archmeta.kernel.loader → archmeta.grammar

Reports every problem toc4:sendsto

archmeta.kernel.loader → archmeta.kernel.diagnostics

archmeta.kernel.loader → archmeta.kernel.metamodel-registryLoader → Metamodel Registryc4:uses

archmeta.kernel.loader → archmeta.kernel.metamodel-registry

Buildsc4:sendsto

archmeta.kernel.loader → archmeta.kernel.model-graph

archmeta.kernel.rest-api → archmeta.kernel.model-graphREST API → Model Graphc4:uses

archmeta.kernel.rest-api → archmeta.kernel.model-graph

POST /api/editsc4:uses

archmeta.kernel.rest-api → archmeta.kernel.write-back

Writes files and commitsc4:sendsto

archmeta.kernel.write-back → git-repository

Parses every source file withc4:dependson

archmeta.kernel → archmeta.grammar

archmeta.kernel → archmeta.kernel.cascade-engineKernel → Cascade Enginearchimate:composition

archmeta.kernel → archmeta.kernel.cascade-engine

archmeta.kernel → archmeta.kernel.diagnosticsKernel → Diagnosticsarchimate:composition

archmeta.kernel → archmeta.kernel.diagnostics

archmeta.kernel → archmeta.kernel.loaderKernel → Loaderarchimate:composition

archmeta.kernel → archmeta.kernel.loader

archmeta.kernel → archmeta.kernel.metamodel-registryKernel → Metamodel Registryarchimate:composition

archmeta.kernel → archmeta.kernel.metamodel-registry

archmeta.kernel → archmeta.kernel.model-graphKernel → Model Grapharchimate:composition

archmeta.kernel → archmeta.kernel.model-graph

archmeta.kernel → archmeta.kernel.rest-apiKernel → REST APIarchimate:composition

archmeta.kernel → archmeta.kernel.rest-api

archmeta.kernel → archmeta.kernel.write-backKernel → Write-Backarchimate:composition

archmeta.kernel → archmeta.kernel.write-back

Usec4:uses

archmeta.kernel → git-repository

Reads on load, commits on write-back — never pushes

archmeta → archmeta.grammarArchMeta → Grammararchimate:composition

archmeta → archmeta.grammar

archmeta → archmeta.kernelArchMeta → Kernelarchimate:composition

archmeta → archmeta.kernel

Reads the modelc4:uses

archmeta → git-repository

Realizearchimate:realization

deployment.volumes.model-repo → git-repository

Is the working tree of

Writes generated .arch files intoc4:sendsto

llm → git-repository

← Home