Here is a quick overview of each concept before we dive in:

Component
A building block of your architecture — a service, database, frontend app, queue, or any logical unit. Rendered as a 3D shape on the canvas.
Layer
A logical group that colors components by responsibility. Each layer has its own color, making it easy to identify components at a glance.
Connection
A directed or bidirectional link between two components. It represents communication, data flow, or dependency, and carries a protocol label.
Subgraph
A nested architecture inside a component. Double-click to zoom in and discover the internal structure, then navigate back with breadcrumbs.

Components

A component is the fundamental unit. It represents any discrete part of your system: a microservice, a database, a load balancer, a frontend app, a message queue, etc.

Properties

Every component carries these properties:

Visual appearance

Each component's 3D shape and look are determined by its type in the Component Library. The component is also color-coded by its layer and displays a label above it with its name and type.

Press L to toggle label visibility if the canvas feels cluttered.

Layers

Layers organize components into logical groups. Each layer has its own color, making it easy to see at a glance which tier each component belongs to in the 3D scene.

Every new project starts with four default layers:

LayerTypical use
Frontend Web apps, SPAs, mobile clients
API Gateways, REST/GraphQL servers
Services Business logic, microservices
Data Databases, caches, object storage

When you assign a component to a layer, it takes on that layer's color, making it immediately identifiable on the canvas.

The Layer Legend in the top-left corner of the editor shows all layers with their colors. Pro users can double-click the legend to open the Layer Editor and customize layers: rename, change colors, reorder, add new layers, or delete existing ones. Renaming or deleting a layer automatically updates all components that use it. See Editor Interface for details.

Layers are defined per architecture graph. A subgraph can have its own set of layers, independent from its parent.

Connections

A connection is a link between two components. It represents communication (HTTP, gRPC, WebSocket), data flow, or a dependency relationship.

Properties

Visual representation

Connections appear as lines between the centers of two component blocks. A small text label at the midpoint shows the protocol. An arrow indicates direction, unless the connection is bidirectional.

Connections follow their components automatically when you drag them to a new position. If a component is deleted, all its connections are removed as well.

Connections can link components from different layers (e.g. a frontend app calling an API gateway), making dependencies visible at a glance.

Subgraphs

Any component can contain a nested architecture inside it, called a subgraph. This is how Tesseract supports multi-level, hierarchical system design.

How it works

  1. Double-click a component to zoom into its subgraph
  2. Inside, you see a new canvas with its own components, connections, and layers
  3. A breadcrumb bar at the top shows your current path (e.g. / > API Gateway > Auth Module)
  4. Click any breadcrumb, press Escape / Backspace, or double-click the ground to navigate back up
API Gateway double-click / > API Gateway Auth Router Rate Limiter
Double-click a component to reveal its internal architecture

Subgraphs can be nested to any depth. A top-level system overview can zoom into a service cluster, which itself contains individual microservices, each with their own internal modules.

You can use subgraphs to progressively detail your architecture: start with a high-level overview, then zoom into each area to add implementation-level detail.

The Architecture Graph

Components, connections, and subgraphs form the Architecture Graph — the data structure that holds your entire design:

Architecture Graph structure
components     // list of all components at this level
connections    // links between components
subgraphs      // nested architectures inside components (via children)
flows          // saved data flow paths (optional)

Each component's optional children field holds another Architecture Graph — the subgraph. This recursive structure is what makes multi-level navigation possible.

The whole graph is persisted as a single .tesseract.json file.

Flows

A flow is an optional overlay that highlights a specific data path through your architecture. Flows let you visualize how a request travels from one component to another, step by step.

Each flow contains one or more paths, each with its own color. A path is a sequence of segments that follow existing connections. When activated, the segments light up on the canvas, making it easy to trace the journey of a request or event through your system.

Flows are especially useful for:

Learn more about creating and using flows in the Data Flows guide.