Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Go-Wardley - Wardley maps generator

Wardley Maps Generator written in Golang. The generator takes an HCL based map description and generates a map in SVG format. If viewed on a browser, the SVG will have hover over functionality to get additional details on node descriptions.


$ ./go-wardley -f examples/map.hcl
Updated file: examples/map.svg

$ ./go-wardley -f examples/map.hcl -o examples/map.svg
Updated file: examples/map.svg

# Watch for file changes and update the file automatically.
$ ./go-wardley -f examples/map.hcl --watch
Starting watcher on: examples
Updated file: examples/map.svg
Updated file: examples/map.svg

# Serve the file on a webserver in localhost:8080 by default
# Update the drawing by refreshing the page.
$ ./go-wardley -f examples/map.hcl --serve
Serving content on: http://localhost:8080
$ ./go-wardley -f examples/map.hcl --serve 6060
Serving content on: http://localhost:6060

Element types


size {
	width     = 1280
	height    = 768
	margin    = 40
	font_size = 9


node user {
	label       = "User"        # Required
	visibility  = 1             # Required
	evolution   = "custom"      # Required
	x           = 1             # Required
	description = "Description"
	fill        = "black"
	color       = "black"

genesis, custom, product or commodity.


connector {
	from  = "user"        # Required
	to    = "vcs"         # Required
	label = "Description"
	color = "black"
	type  = "normal"

normal, bold, change or change-inertia.

Example input

A more extensive example can be found in ./examples/map.hcl.

# Anchor
node user {
	label       = "User"
	visibility  = 1
	evolution   = "custom"
	x           = 1
	description = "User Description"
	fill        = "black"

node vcs {
	label       = "On Prem VCS"
	visibility  = node.user.visibility + 1
	evolution   = "product"
	x           = 1
	description = "On prem VCS"
	fill        = "black"

node code_commit {
	label       = "Code Commit Mirror"
	visibility  = node.vcs.visibility
	evolution   = "commodity"
	x           = 1
	description = "Allows Code Pipeline to access the code."
	color       = "red"

connector {
	from = "user"
	to   = "vcs"

connector {
	from = "vcs"
	to   = "code_commit"
	color = "red"
	type = "change-inertia"


  • Make the node label optional, read the node ID if not present and title case it (configurable?).

  • Add an optional leyend box indicating the types of elements used in the map.

  • Better looks overall. Cleaner code.

  • Allow specifying node, connector and grid font sizes independently.

  • Arch type connector.


This file is part of go-wardley.

Copyright © 2019-2020 David Gamba Rios

This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at