> ## Documentation Index
> Fetch the complete documentation index at: https://docs.uniac.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Node

> API reference for uniac.Node.

`uniac.Node` is the base class for dependency references. You don't subclass `Node` directly — `uniac install` generates a `Node` subclass for every published Service you depend on, and you import the generated class.

```python theme={null}
from uniac import Node            # base class
from logger import Logger         # generated Node subclass
```

## Construction

`Node` subclasses take **zero arguments**:

```python theme={null}
self.logger = Logger()
```

You initialize Nodes in your `__init__`. The framework asserts (via [`_uniac_validate`](/sdk/nodespec)) that every annotated Node slot is filled with the right type.

## Runtime attributes

After [`load`](/sdk/load) hydrates the spec, each `Node` instance exposes:

| Attribute | Type            | Meaning                                                                       |
| --------- | --------------- | ----------------------------------------------------------------------------- |
| `.url`    | `str` or `None` | Live HTTP URL of the deployed dependency. `None` if accessed before `load()`. |
| `.name`   | `str`           | The published Service identifier.                                             |

In `uniac dev`, `.url` points at the local simulator instance. After `uniac deploy`, it points at the production endpoint of the dep.

## Class-level fields

Each generated `Node` subclass carries:

| Attribute          | Meaning                               |
| ------------------ | ------------------------------------- |
| `_uniac_primitive` | The published lib name.               |
| `_uniac_version`   | Published version (default `latest`). |

These are set by the projection generator; user code does not assign them.
