Archmeta Application C4 L2 Web Generation
Elements (9)
Publisherc4:container
archmeta.publisherGenerates the static site from a loaded model: element pages, view pages with interactive SVG diagrams, the BPMN gallery and the search index. The output has no back end and carries no diagnostic data — what an architect needs to fix the model is not what a stakeholder should read.
ArchMetac4:softwaresystem
archmetaA 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.
Kernelc4:container
archmeta.kernelReads 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.
Diagram Renderc4:container
archmeta.diagram-renderThe rendering primitives both renderers share: geometry, element shapes, orthogonal routing, status styling, relationship chips and the link indicator. One implementation per render boundary is an enforced rule — a diagram must look the same on the canvas and on the published site, and the only way to guarantee that is to give them one function.
Generated Sitec4:container
archmeta.static-siteThe deliverable: static HTML, CSS and JavaScript with a prebuilt search index. No server, no database, no API — it can be served from object storage, a CDN, an nginx container or a filesystem, which is the point.
CLIc4:container
archmeta.cliThe command surface: archmeta init scaffolds a repository with its metamodel profiles, archmeta load reports the model and its diagnostics, archmeta build generates the site, archmeta daemon serves the Kernel and the Viewer. The only entry point in a CI pipeline.
Stakeholderc4:person
stakeholderReads the published site. Never installs anything, never sees the DSL, and cannot change the model — the site is static HTML with no back end, so there is nothing to give them access to.
archmeta-site (container)archimate:node
deployment.docker-engine.site-containerAn nginx image serving the generated static site. It has no connection to the Kernel and no back end of its own — once the site is built, this container is interchangeable with any static host.
archmeta/sitearchimate:technologycomponent
deployment.images.site-imagenginx:alpine with the generated site copied into the web root. Built per model repository rather than per product release, because its content is the customer's architecture, not ArchMeta's code.
Relationships (15)Relationships (1)
Loads throughc4:uses
archmeta.cli → archmeta.kernelLoads the model through
Invokes for archmeta buildc4:uses
archmeta.cli → archmeta.publisherSame primitives as the Viewer, so the two cannot driftc4:dependson
archmeta.publisher → archmeta.diagram-renderReads the loaded model fromc4:uses
archmeta.publisher → archmeta.kernelEmitsc4:sendsto
archmeta.publisher → archmeta.static-sitearchmeta → archmeta.cliArchMeta → CLIarchimate:composition
archmeta → archmeta.cliarchmeta → archmeta.diagram-renderArchMeta → Diagram Renderarchimate:composition
archmeta → archmeta.diagram-renderarchmeta → archmeta.kernelArchMeta → Kernelarchimate:composition
archmeta → archmeta.kernelarchmeta → archmeta.publisherArchMeta → Publisherarchimate:composition
archmeta → archmeta.publisherarchmeta → archmeta.static-siteArchMeta → Generated Sitearchimate:composition
archmeta → archmeta.static-siteServesarchimate:assignment
deployment.docker-engine.site-container → archmeta.static-sitePackagesarchimate:access
deployment.images.site-image → archmeta.static-siteIs instantiated asarchimate:realization
deployment.images.site-image → deployment.docker-engine.site-containerBrowsesc4:uses
stakeholder → archmeta.static-siteReads the published sitec4:uses
stakeholder → archmeta