06

Building the tree

Plant your project's nodes and watch them grow as you go.

The five layers

  • Trunk — a domain (an app or service)
  • Limb — a feature / workstream
  • Twig — a module or a group of related info
  • Leaf — an object (class, file, component)
  • Vein — an action inside an object (method, function)

The layers grow in this order, from the center of the tree out to its thinnest branches. Treat the list as a reference: the hierarchy guides placement, it isn’t a strict rule. You can set your own conventions inside a ground to fit the project.

Adding a trunk

Add a trunk from the Trunks panel or from the prompt on an empty ground. A trunk is the base of the tree — a main strand or domain of the project — and it defines the color used across the tree and on bug badges. Let Umtri match a color automatically, or pick your own.

A trunk is the basic frame that other nodes grow from, so it is added as committed from the start.

Plan mode

In Plan mode you lay out how the project should grow. Nodes added in Plan mode appear as plan nodes: a draft structure, not yet part of the real project. They leave no growth record and you can change them freely.

Plan nodes are not committed growth, so they are hidden when you leave Plan mode.

Adding child nodes

Select a parent node and use Add Plan Node to add a child. Click a trunk to add a limb under it; click a limb to add a twig under it. Add nodes to match the shape of your project.

Committing growth

Once a plan node is actually built, commit it. Committed nodes count as growth, and the project grows.

Editing nodes through an AI agent

If your AI agent is connected to your codebase, you can have it add and edit nodes for you.

Connect your AI agent and let it read your plan nodes directly. — Connect · MCP & API

Talking to your agent through Plan mode

  • Draw the plan yourself in Plan mode, then ask your agent to read it. Handing over a whole plan as plan nodes gives the agent the overall shape of the project in a way a prompt alone doesn’t, and leads to more cohesive development.
  • Or have the agent draw what it intends to build as plan nodes first, and review the plan. The drawn plan shows whether the agent understood you, so gaps surface before any code is written.

Adding dependencies (edges) and APIs

Relations between nodes are recorded in two kinds. Both are added from the menu that opens when you select a node, and both have a direction — which side points to which carries meaning.

  • Dependency (edge) — one node is built on another. Add it with Add Dependency. There are two types:
    • dependency — Source is built on Target. If Target breaks, Source is affected.
    • data_flow — data moves from Source to Target.
  • API — a call between nodes. Draw a relation where one node calls another, like an external integration or a call between services, as From → To. Add it with Add API Connection.

A dependency records structure that already exists, so it is committed right away with no plan step. An API, on the other hand, can only be added in Plan mode; like a plan node, it is saved as a plan and must be committed to become final.

Checking the blast radius (Show impact)

Select a node and press Show impact to keep only the nodes affected if that node breaks, dimming the rest. Impact travels along recorded connections — for a dependency from Target to Source, for a data flow in the direction it flows, and for an API from the callee to the caller.

Nodes with no recorded connections don’t show up in the blast radius. An empty result doesn’t mean nothing is affected; it means no connections have been recorded yet. A bug’s blast radius is computed from the same connections, so record the links between your key nodes.