One model can produce interactive, static, and agent-readable views
LikeC4 starts with text files that describe systems, people, components, relationships, deployment nodes, and views. The language borrows the useful idea behind C4, then drops the requirement to stay within fixed levels. Teams define their own element kinds and notation, nest elements as deeply as the model calls for, and select different slices for different readers. That flexibility is the main reason to choose it over a pile of hand-maintained diagrams.
The likec4 package combines a language server, React components, a Vite plugin, a model API, and the CLI. It can serve diagrams with hot updates, build a static site, or export PNG, JPEG, JSON, Mermaid, Dot, D2, PlantUML, and Draw.io output. Generated React or Web Components put the same views inside another application. One model can therefore feed documentation, code review, an internal portal, and occasional static files without four separate drawing sources.
What happened when we ran it
Our sandbox installed 1,608 pnpm packages in 68 seconds and used 1,664 MB on disk. The build then succeeded in 148 seconds, followed by a successful 71-second test step. We ran commit 84ff665 in an unprivileged Node 22 container with 3 CPUs and 8 GB of RAM. Nothing in the supplied lab result showed an install, compiler, or test failure.
The repository is much larger than the npx likec4 start introduction suggests. Our checkout contained 7,337 files, roughly 361,011 lines of source, and 45.7 MB before dependencies. It is a workspace monorepo with a Dockerfile, a tests directory, and 19 CI workflow files. That machinery supports several products, but contributors pay for it in install size and a combined 219 seconds of build and test time after dependencies arrive. Consumers installing only the published CLI should not assume the full source checkout describes their final disk use.
Node 20 gets a diagram running without an account
The user path is straightforward. LikeC4 requires Node.js 20 or newer, and npx likec4 start recursively finds .c4 and .likec4 files, opens a local server, and refreshes views after edits. A project can install the package as a development dependency and place likec4 build in its existing scripts. Preview listens on 127.0.0.1 by default, which is the safe choice; containers can bind to 0.0.0.0 explicitly.
Static output needs no LikeC4 service. The build command writes files for any ordinary host, supports hash navigation, and can produce one self-contained HTML file. The chosen base path matters because the output is bound to it unless you use --base "./" for relocatable files. PNG and JPEG export add Playwright because the CLI launches a local site and captures rendered pages. That is a reasonable implementation, though CI images need browser dependencies that a text-only exporter would avoid.
The editor and model API make diagrams enforceable
The official VS Code extension supplies preview, navigation, validation, completion, renames, and live editing. The standalone language server extends much of that to Neovim, Emacs, and other clients, while community plugins cover more editors. This matters because architecture as code becomes miserable when every identifier change is a search-and-replace exercise. Language-aware renames and source locations give the DSL enough tooling to behave like maintained code.
The JavaScript API can parse a workspace or source string, return errors, traverse incoming and outgoing relationships, and compute laid-out views. The docs show Vitest rules that require metadata on selected element types. That turns a modeling convention into a failing check instead of a paragraph in an architecture handbook. Our 71-second repository test pass says the upstream suite worked in the lab; it does not prove that a team's own model rules are complete. Those remain local policy expressed through the API.
MCP exposes the resolved graph, not just diagram pictures
LikeC4 includes an MCP server over stdio or streamable HTTP, with port 33335 as the documented HTTP default. Its tools search elements, read views and deployments, trace incoming or outgoing graphs, filter metadata and tags, compare elements, and find relationship paths. VS Code can register the server when the extension activates. Claude Code, Cursor, and other clients can run the smaller @likec4/mcp package against a workspace.
This is a better agent boundary than asking a model to interpret screenshots. The server returns the resolved architecture model and source locations, so an answer can point back to an element the team owns. It does not run every adjacent integration: the MCP README says LeanIX sync and Draw.io export with the LeanIX profile remain CLI jobs. LikeC4 also publishes a DSL skill for agents that edit source files. Querying and editing are separate capabilities, and teams should grant them separately.
Multi-project support stops at the workspace boundary
Large models can be split by placing likec4.config.json files in different folders. Projects may be nested, share specification files through relative include paths, and import elements from one another. Current limits are concrete: referenced projects must be loaded in the same workspace, and imports only expose top-level model elements. Include scanning defaults to a depth of 3 and warns after 30 files unless configured otherwise.
Those constraints are manageable in a monorepo and awkward across independently released services. Open issue 3195 identifies another enterprise friction point: the website documents only the latest LikeC4 version, so teams that delay upgrades must inspect release notes or old source to find matching syntax. GitHub showed 193 combined issues and pull requests, 5,548 stars, and a last push on August 23, 2026. Release v1.59.2 fixed imported elements in dynamic views and missing MCP runtime dependencies, evidence that both multi-project and agent paths are being exercised.
LikeC4 is worth adopting when diagrams are an output of an owned architecture model. The source install is heavy, yet the 148-second build and passing 71-second tests make that weight easier to accept. It suits teams that review model diffs, enforce conventions, and query the graph. For a few static boxes, D2 or C4-PlantUML asks less of everyone.

