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

# Primitives and Node Demos

The Inworld Agent Runtime provides two ways to interact with Inworld AI modules.

## Primitives

You can use API calls to control these modules directly. This approach suits users who prefer to write code.

For more information about the primitive modules, please check [this page](./primitives/overview)

We've provided demos for each of the following primitives:

<CardGroup cols={2}>
  <Card title="LLM" href="./primitives/llm">
    Interact directly with the Large Language Model (LLM) primitive.
  </Card>

  <Card title="Speech-To-Text (STT)" href="./primitives/stt">
    Transcribe audio input to text using the Speech-to-Text primitive.
  </Card>

  <Card title="Text-To-Speech (TTS)" href="./primitives/tts">
    Generate audio from text via the Text-to-Speech primitive.
  </Card>

  <Card title="AEC" href="./primitives/aec">
    Try out Acoustic Echo Cancellation with the AEC module.
  </Card>

  <Card title="Knowledge" href="./primitives/knowledge">
    Query and interact with the Knowledge primitive.
  </Card>

  <Card title="Character Interaction Demo" href="./primitives/character">
    Combine primitives to build an interactive character demo.
  </Card>
</CardGroup>

## Nodes

You can also use Inworld's Graph system to compose nodes and send or receive data in the `InworldBaseData` format via the graph.

We provide demos for node-based integrations.

For more information about the Graph/Node System, please check [this page](./nodes/overview)

<Note>
  Some features are only supported in the node-based form.
</Note>

<CardGroup cols={2}>
  <Card title="LLM Node Demo" href="./nodes/llm">
    See a demonstration of the LLM node working within a graph workflow.
  </Card>

  <Card title="STT Node Demo" href="./nodes/stt">
    Try out Speech-to-Text node integration in a graph.
  </Card>

  <Card title="TTS Node Demo" href="./nodes/tts">
    Explore Text-to-Speech node usage in a sample graph.
  </Card>

  <Card title="Intent Node Demo" href="./nodes/intent">
    See how the Intent node processes and routes input data.
  </Card>

  <Card title="Safety Node Demo" href="./nodes/safety">
    Experiment with safety checks using the Safety node.
  </Card>

  <Card title="Custom Node Demo" href="./nodes/custom">
    Learn how to use and implement a custom node in the graph system.
  </Card>

  <Card title="Edge Demo" href="./nodes/edge">
    Inspect data flow in graphs by examining edges between nodes.
  </Card>

  <Card title="Edge Loop Demo" href="./nodes/loop">
    See how to create loops and iterative processes using edges.
  </Card>
</CardGroup>

<CardGroup cols={2}>
  <Card title="Character Interaction Node Template" href="./nodes/character">
    Experience a full conversation pipeline using node-based character interaction.
  </Card>

  <Card title="Character Interaction Node Template with JSON" href="./nodes/json">
    Try the JSON-based character graph template for cross-platform sharing.
  </Card>
</CardGroup>

They behave the same at runtime.

The difference is that using the compiled JSON makes it easier to share graphs across platforms (Node.js/Unreal).
