# Nodes and Connections

## Node Palette

These nodes map your workflow visually. Each one represents an actor in your app or agentic system.

<table data-header-hidden data-full-width="false"><thead><tr><th width="154.14453125">Node</th><th width="202.70703125">Description</th><th width="194.58984375">When to use</th><th>Example</th></tr></thead><tbody><tr><td><img src="/files/U0CxkeHH4gMbRkeW0gb7" alt=""></td><td><p><i class="fa-user">:user:</i> <strong>Person</strong><br>People or </p><p>stakeholders</p></td><td>You want to model people's actions, permissions, or decision points.</td><td><mark style="color:$info;">A person logging into an admin dashboard, approving a workflow, or sending a secure message.</mark></td></tr><tr><td><p><img src="/files/I5xfzK2hPxCA3arejQ7F" alt="" data-size="original"></p><p></p></td><td><i class="fa-head-side-circuit">:head-side-circuit:</i> <strong>AI Agent</strong><br>AI Agent</td><td>You want to model automated reasoning, decision-making, or actions performed by an AI system.</td><td><mark style="color:$info;">An AI agent triaging support tickets, summarizing documents, or autonomously executing a multi-step workflow</mark></td></tr><tr><td><img src="/files/NGZvTKcPCtJtnZfl7hwA" alt=""></td><td><p><i class="fa-diamond">:diamond:</i> <strong>Entity</strong></p><p>Businesses, groups of people, etc.</p></td><td>You need access for companies, tenants, departments, identity domains.</td><td><mark style="color:$info;">A healthcare provider, an insurance company, or a tenant account applying its own access rules.</mark></td></tr><tr><td><img src="/files/XkHjnplCi6bjDcp4eWUa" alt=""></td><td><p><i class="fa-cube">:cube:</i> <strong>Thing</strong></p><p>Physical or digital objects/devices</p></td><td>You’re modelling hardware, IoT devices, sensors, servers, or edge components.</td><td><mark style="color:$info;">A smart meter sending readings, a kiosk receiving updates, or a server reporting health status.</mark></td></tr><tr><td><img src="/files/C6onnNDLuwIXtGdZnSjL" alt=""></td><td><i class="fa-gear">:gear:</i> <strong>Process</strong><br>Anything that processes, runs, or executes: an app, service, or workflow</td><td>You want to show business logic, transformations, or background tasks.</td><td><mark style="color:$info;">A data validation step, a policy enforcement engine, or a message-routing workflow.</mark></td></tr><tr><td><img src="/files/Iuz4PdVeFuGqBo2XhpNd" alt=""></td><td><i class="fa-rectangle">:rectangle:</i> <strong>API</strong><br>External systems or platform integrations</td><td>You’re integrating with third-party services or exposing functionality programmatically.</td><td><mark style="color:$info;">A payment processor API, mapping service, or internal microservice endpoint.</mark></td></tr><tr><td><img src="/files/o1IPZr8XpLSsjxBQJdHn" alt=""></td><td><i class="fa-plus">:plus:</i> <strong>Other</strong><br>Custom node type for anything else</td><td>You need to include concepts like storage, policies, models, or abstract systems.</td><td><mark style="color:$info;">A policy store, encryption module, AI model, or logging system.</mark></td></tr></tbody></table>

## Connection Types

These define how the nodes communicate with each other.

<table data-header-hidden><thead><tr><th width="152.171875">Connection</th><th width="271.23828125">Description</th><th width="169.0625">When to use</th><th>Example</th></tr></thead><tbody><tr><td><p><strong>Default</strong></p><p><img src="/files/xPyIavplmqGvZquZmC7C" alt="" data-size="original"></p></td><td><p>Unsure? </p><p>Let the LLM decide.</p></td><td>You're unsure which communication pattern fits, or the interaction doesn't clearly map to a specific type.</td><td><em><mark style="color:$info;">The LLM infers the best pattern based on context and intent</mark></em></td></tr><tr><td><p><strong>Async Comms</strong></p><p><img src="/files/aCr5SkO5MKV2qyKnJAS6" alt="" data-size="original"></p></td><td><p>Asynchronous, non-blocking communication where the sender does not wait for a response and the receiver does not need to be online.</p><p></p><p>Uses <code>Get/Put</code>  semantics.<br><a href="https://docs.atsign.com/tutorials/atsdk-tutorial/put-and-get-data-asynchronously">Read more here</a>.</p></td><td>Really handy if you cannot guarantee both the sender/ receiver will be online at the same time.</td><td><mark style="color:$info;">A device uploads data that is processed later, or a message is delivered when the recipient comes online.</mark></td></tr><tr><td><p><strong>Sync Comms</strong></p><p><img src="/files/I5Qh3BgBFnx7bblXqJw0" alt="" data-size="original"></p></td><td><p>Synchronous communication where the sender waits for an immediate response. <br></p><p>Uses <code>Notification</code>  (<a href="https://docs.atsign.com/tutorials/atsdk-tutorial/send-and-receive-data-synchronously#sending-and-receiving-data-in-near-real-time">Read more here</a>) semantics and/or <code>Get/Put</code>  (<a href="https://docs.atsign.com/tutorials/atsdk-tutorial/put-and-get-data-asynchronously">Read more here</a>) semantics.</p></td><td>You need real-time interaction or confirmation.</td><td><mark style="color:$info;">A user request that must return a result immediately, like fetching account details</mark><sub><mark style="color:$info;">.</mark></sub></td></tr><tr><td><p><strong>Notifications</strong></p><p><img src="/files/sSsevD3a4hCC52PgDGdq" alt=""></p></td><td><p>One-way signals used to alert or inform.</p><p></p><p>Uses <code>Notification</code>  semantics <a href="https://docs.atsign.com/tutorials/atsdk-tutorial/send-and-receive-data-synchronously#sending-and-receiving-data-in-near-real-time">Read more here</a>.</p></td><td><br>You need to notify without requiring a response.</td><td><mark style="color:$info;">Push notifications, system alerts, or status updates sent to users or services.</mark></td></tr><tr><td><h4><strong>RPC</strong></h4><p><img src="/files/h1amQ8mNRw7pLbixAeY0" alt=""></p><p></p></td><td><p>Structured request/response interactions between systems.<br>Ideal for complex operations where the other party may not be online at the time of execution (especially useful for policy-driven workflows).</p><p></p><p>Supported in the <code>SDK</code> semantics.<br><a href="https://docs.atsign.com/tutorials/atsdk-tutorial">Read more here</a>.</p></td><td>You want function-like calls across services with clear inputs and outputs.</td><td><mark style="color:$info;">Calling a billing service to calculate charges or a policy engine to validate access.</mark></td></tr><tr><td><p><strong>Data Stream</strong></p><p><img src="/files/E0RLIWMEPCnGWkwNo5Fn" alt=""></p></td><td>Ideal for long-running processes (such as LLM generation) where completion time is uncertain and results may need to stream incrementally.<br><br>Uses the <code>stream</code> (<a href="https://docs.atsign.com/sdk/events#monitor">Read more here</a>) semantics<br>or <code>notifications</code> (<a href="https://docs.atsign.com/tutorials/atsdk-tutorial/send-and-receive-data-synchronously#sending-and-receiving-data-in-near-real-time">Read more here</a>) semantics.</td><td>You’re handling live, ongoing data rather than discrete messages</td><td><mark style="color:$info;">Telemetry feeds, sensor data, logs, or real-time analytics pipelines.</mark></td></tr><tr><td><p><strong>TCP</strong></p><p><img src="/files/wgtvRAUeSmUkEDPcjD8a" alt=""></p></td><td><p>Low-level, persistent network connections that enable lower latency communication (e.g., NoPorts SSH, MCP servers).</p><p><br>Uses <code>Noports_Core</code> (<a href="https://pub.dev/packages/noports_core">Read more here</a>) semantics.</p></td><td>You need a fast end-to-end encrypted TCP connection with raw network speed.</td><td><mark style="color:$info;">A custom protocol, legacy integration, or long-lived secure connection.</mark></td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.atsign.com/ai-architect/ai-architect-overview/nodes-and-connections.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
