1

Install Archy

Open VS Code and install the extension:

  1. Press Cmd+Shift+X (Mac) or Ctrl+Shift+X (Windows/Linux)
  2. Search for Archy
  3. Click Install

Or from the terminal:

code --install-extension nischalon10.archy
2

Create your first file

Create a new file anywhere in your workspace and name it with a .archy extension — for example, architecture.archy.

Paste this to start:

{
  "version": "2",
  "name": "My First Diagram",
  "nodes": [
    { "id": "frontend", "type": "frontend", "name": "Web App" },
    { "id": "api",      "type": "service",  "name": "API Service" },
    { "id": "db",       "type": "database", "name": "Database" }
  ],
  "edges": [
    { "id": "e1", "from": "frontend", "to": "api", "type": "calls",  "label": "HTTPS" },
    { "id": "e2", "from": "api",      "to": "db",  "type": "writes", "label": "SQL" }
  ]
}

Save the file. Archy opens it as a diagram automatically.

3

Explore the canvas

Navigate the canvas:

  • Scroll or trackpad pinch to zoom
  • Click and drag the background to pan
  • Drag any node to reposition it

Toolbar buttons (top-left):

  • Fit — fit the diagram to the window
  • Lock — prevent nodes from being dragged
  • Edit / View — switch between edit and view mode

Click a node or edge — the Detail Panel opens on the right, showing the element's type, description, metadata, and notes.

Activity Bar (Archy icon on the left):

  • Minimap — thumbnail of the whole diagram; click to navigate
  • Elements — list of all nodes and edges; click any to focus it on the canvas
  • Settings — toggle display options and switch modes
4

Add more nodes and edges

Add a message queue to the diagram. Edit the JSON directly:

{
  "version": "2",
  "name": "My First Diagram",
  "nodes": [
    { "id": "frontend",   "type": "frontend",  "name": "Web App" },
    { "id": "api",        "type": "service",   "name": "API Service" },
    { "id": "task-queue", "type": "queue",     "name": "Task Queue" },
    { "id": "worker",     "type": "batch-job", "name": "Background Worker" },
    { "id": "db",         "type": "database",  "name": "Database" }
  ],
  "edges": [
    { "id": "e1", "from": "frontend", "to": "api",        "type": "calls",     "label": "HTTPS" },
    { "id": "e2", "from": "api",      "to": "task-queue", "type": "publishes", "label": "AMQP" },
    { "id": "e3", "from": "worker",   "to": "task-queue", "type": "consumes" },
    { "id": "e4", "from": "worker",   "to": "db",         "type": "writes",    "label": "SQL" }
  ]
}

Save. The diagram updates instantly.

5

Add descriptions and metadata

Enrich nodes with context. This appears in the detail panel when you click a node:

{
  "id": "api",
  "type": "service",
  "name": "API Service",
  "description": "Handles authentication and request routing.",
  "_meta": {
    "technology": "Node.js / Express",
    "team": "platform-team",
    "port": 3000
  },
  "notes": "Rate limited at 1000 req/min per client. See runbook for override procedure."
}
  • description — shown in the node card on the canvas
  • _meta — key-value table in the detail panel (infrastructure detail, not rendered on canvas)
  • notes — markdown, shown in the Notes section of the detail panel; click "Edit in editor" to open a full VS Code markdown editor
6

Group related nodes

Use groups to draw team or network boundaries:

{
  "version": "2",
  "nodes": [ ... ],
  "edges": [ ... ],
  "groups": [
    {
      "id": "internal",
      "label": "Internal VPC",
      "type": "zone",
      "nodes": ["api", "task-queue", "worker", "db"]
    }
  ]
}

Groups render as shaded regions on the canvas. "type": "zone" gives a dashed indigo border (network boundary). "type": "logical" gives a solid teal border (domain or team boundary).

All node types

Type Use for
serviceMicroservice, backend application
apiNamed API surface (REST, GraphQL, gRPC)
kafka-topicA specific Kafka topic (not the cluster)
queueMessage queue (RabbitMQ, SQS, Service Bus)
databaseAny data store (PostgreSQL, Redis, S3)
frontendWeb SPA, mobile app, desktop client
batch-jobScheduled job, ETL, cron task
externalThird-party service, external SaaS
actorHuman user, team, external persona
gatewayAPI gateway, load balancer, reverse proxy
brokerMessage broker platform (Kafka cluster, etc.)
datastoreData lake, warehouse, data platform

All edge types

Type Use for Style
callsSynchronous HTTP/RPC/gRPCSolid arrow
publishesProducing events to a topic/queueSolid arrow
consumesConsuming events from a topic/queueDashed, reversed arrow
writesWriting data to a storeSolid arrow
readsReading data from a storeDashed, reversed arrow
streamsContinuous/streaming data flowThick solid arrow
triggersWebhook, scheduler, event-driven executionDashed arrow
usesCatch-all for non-specific dependenciesSolid arrow

The reads and consumes arrow points at the data source — visually showing data flowing toward the consumer.

Edit mode

Switch to Edit mode in the Archy Settings sidebar (Activity Bar → Archy → Settings → Edit button).

In Edit mode:

All changes auto-save to the .archy file within half a second.

Tips

Keep IDs kebab-case. order-service, user-db, charge-topic. Short and readable.

Use edge labels for protocols. "label": "HTTPS", "label": "gRPC", "label": "AMQP". These show as small chips on the edge.

Put infrastructure details in _meta. Technology stack, team owner, compliance tier, port numbers. Not on the canvas — in the detail panel.

Commit the x-archy section. After arranging your diagram, the positions are in x-archy.positions. Committing this means teammates see the same layout when they open the file.

Let AI draft the initial file. See Using AI with Archy — a language model can turn a text description of your system into a complete .archy file in seconds.