Docker
Elements (12)
archmeta-kernel (container)archimate:node
deployment.docker-engine.kernel-containerRuns the Kernel daemon, publishing port 7777 and serving the Viewer bundle alongside the API. Stateless: kill it and nothing is lost, because everything it knows was read from the mounted repository and everything it changed was committed back to it.
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-build (job)archimate:node
deployment.docker-engine.builder-containerA one-shot container that runs archmeta build and exits. This is the CI shape: check the repository out, build the site, publish the artifact, tear everything down. Nothing persists between runs, which is safe precisely because the load is a pure function of the commit.
Model Repository Volumearchimate:node
deployment.volumes.model-repoThe 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.
archmeta/kernelarchimate:technologycomponent
deployment.images.kernel-imageMulti-stage image on node:22-alpine. Build stage installs the npm workspace and compiles every package; the runtime stage carries the Kernel, the CLI and the Viewer bundle. Entry point is archmeta daemon; the model repository arrives as a mount, never baked in.
Site Output Volumearchimate:node
deployment.volumes.site-outputWhere the Publisher writes the generated site and the site container reads it from. Disposable: it is derived entirely from the model repository at a given commit.
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.
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.
Viewerc4:container
archmeta.viewerThe single-screen React SPA that is the primary authoring tool: model canvas, BPMN modeler, Markdown editor and Explore in one shell, flanked by a management pane and a docked Inspector. Never reads the whole graph — every instance read is a point read, a search or a bounded neighbourhood — and never touches the filesystem. Edits stage; only a commit sends them to the Kernel.
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.
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.
Git Repositoryc4:externalsystem
git-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 pushes, never pulls and never branches, and is silently inert when the directory is not a Git working tree.
Relationships (17)Relationships (7)
Loads throughc4:uses
archmeta.cli → archmeta.kernelLoads the model through
Usec4:uses
archmeta.kernel → git-repositoryReads on load, commits on write-back — never pushes
REST over HTTPc4:uses
archmeta.viewer → archmeta.kernelREST over HTTP — never IPC, never shared state
Runs archmetaarchimate:assignment
deployment.docker-engine.builder-container → archmeta.cliRuns archmeta build via
Mounts read-onlyarchimate:access
deployment.docker-engine.builder-container → deployment.volumes.model-repoWritesarchimate:access
deployment.docker-engine.builder-container → deployment.volumes.site-outputWrites the generated site to
deployment.docker-engine.kernel-container → archmeta.kernelarchmeta-kernel (container) → Kernelc4:realization
deployment.docker-engine.kernel-container → archmeta.kernelServesarchimate:assignment
deployment.docker-engine.kernel-container → archmeta.viewerServes the bundle for
Mounts read-writearchimate:access
deployment.docker-engine.kernel-container → deployment.volumes.model-repoServesarchimate:assignment
deployment.docker-engine.site-container → archmeta.static-siteReads fromarchimate:access
deployment.docker-engine.site-container → deployment.volumes.site-outputdeployment.images.kernel-image → archmeta.kernelarchmeta/kernel → Kernelarchimate:realization
deployment.images.kernel-image → archmeta.kernelIs instantiated asarchimate:realization
deployment.images.kernel-image → deployment.docker-engine.builder-containerIs instantiated asarchimate:realization
deployment.images.kernel-image → deployment.docker-engine.kernel-containerPackagesarchimate:access
deployment.images.site-image → archmeta.static-siteIs instantiated asarchimate:realization
deployment.images.site-image → deployment.docker-engine.site-containerRealizearchimate:realization
deployment.volumes.model-repo → git-repositoryIs the working tree of