---
title: "Nodebox (asset type)"
description: "A nodebox is a namespace folder that groups related .procNode/ children, the way a toolbox groups .tool/ children."
section: "Types"
slug: "types-nodebox"
canonical: "https://origozero.ai/docs/types-nodebox"
updated: "2026-10-10T16:24:25.517889005+00:00"
tags: ["asset-type", "reference"]
---

# Nodebox (asset type)

## Where it lives

- Source: `<anywhere>/<family>.nodebox/`, usually inside a `.package`, an effect or a world's content.
- Identity: `<family>` (the `.nodebox` suffix strips).
- Folder shape (open child set):
  - `README.md`: what the family is for. Required.
  - `.metadata`: description and tags. Required.
  - `<node>.procNode/`: any number of nodes.

## How a graph reaches a node

`g.<family>.<node>(args)` resolves the node by its asset identity: the box and the folder name together
(`g.points.disc`), a path (`g["/zero/source/fx/ring.procNode"]`), `~` (the nearest enclosing package,
effect or world root: `g["~/ring"]`) or a short name the asset system resolves (`g.disc`). A name that
matches two nodes is an error naming both; a name that matches none is an error naming the closest nodes.
Each call is recorded in the graph's reference table by the node's guid.

## How to create one

```luau
asset.create("nodebox", "points", { folder = "fx" })
local box = asset.resolve("points.nodebox")
asset.create("procNode", "disc", { into = box })
```

## Discovery

- `asset.list("nodebox")`: every box.
- `asset.inspect("points")`: the nodes in it and what each does.
- `asset.list("procNode")`: every node, in or out of a box.

## In the Inspector

Nodes: how many nodes the box holds, each node's full name and what it does, and a link to each.
