> ## 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.

# Inworld Node.js Agent Runtime Reference

> Complete API reference for the Inworld Node.js Agent Runtime

Inworld's Node.js Agent Runtime SDK is a comprehensive toolkit for building AI-powered applications.

## Graphs

At the core of the SDK is the Graph system, an interface to construct complete AI pipelines, from input to final output.

### Core Classes

Import core graph classes from `@inworld/runtime/graph`:

```javascript theme={"system"}
import { 
  Graph, 
  GraphBuilder, 
  SubgraphBuilder, 
  SequentialGraphBuilder
} from '@inworld/runtime/graph';
```

* [Graph](/node/runtime-reference/classes/graph_graph.Graph) - Main graph execution engine
* [GraphBuilder](/node/runtime-reference/classes/graph_dsl_graph_builder.GraphBuilder) - Builder for creating graph configurations
* [SubgraphBuilder](/node/runtime-reference/classes/graph_dsl_subgraph_builder.SubgraphBuilder) - Builder for creating reusable subgraphs
* [SequentialGraphBuilder](/node/runtime-reference/classes/graph_dsl_sequential_graph_builder.SequentialGraphBuilder) - Builder for creating sequential graphs

### Nodes

Import nodes from `@inworld/runtime/graph` or `@inworld/runtime/graph/nodes`:

```javascript theme={"system"}
import { 
  RemoteLLMChatNode,
  RemoteTTSNode,
  RemoteSTTNode,
  SubgraphNode
  // ... and other nodes ...
} from '@inworld/runtime/graph';
```

#### Built-in Nodes

| **Node**                                                                                                             | **Description**                                                              | **Input Type(s)**                                                                                                      | **Output Type(s)**                                                                                                           |
| -------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| [KeywordMatcherNode](/node/runtime-reference/classes/graph_dsl_nodes_keyword_matcher_node.KeywordMatcherNode)        | Matches keywords in text input                                               | String                                                                                                                 | [GraphTypes.​​MatchedKeywords](/node/runtime-reference/classes/common_data_types_api_matched_keywords.MatchedKeywords)       |
| [KnowledgeNode](/node/runtime-reference/classes/graph_dsl_nodes_knowledge_node.KnowledgeNode)                        | Retrieves relevant knowledge based on input text                             | String                                                                                                                 | [GraphTypes.​KnowledgeRecords](/node/runtime-reference/classes/common_data_types_api_knowledge_records.KnowledgeRecords)     |
| [LLMPromptBuilderNode](/node/runtime-reference/classes/graph_dsl_nodes_llm_prompt_builder_node.LLMPromptBuilderNode) | Generates formatted prompts using prompt templates populated with JSON input | Object                                                                                                                 | String                                                                                                                       |
| [MCPCallToolNode](/node/runtime-reference/classes/graph_dsl_nodes_mcp_call_tool_node.MCPCallToolNode)                | Calls multiple tools on an MCP server in parallel                            | [GraphTypes.​ToolCallRequest](/node/runtime-reference/classes/common_data_types_api_tool_call_request.ToolCallRequest) | [GraphTypes.​ToolCallResponse](/node/runtime-reference/classes/common_data_types_api_tool_call_response.ToolCallResponse)    |
| [MCPListToolsNode](/node/runtime-reference/classes/graph_dsl_nodes_mcp_list_tools_node.MCPListToolsNode)             | Lists available tools from an MCP server                                     | any                                                                                                                    | [GraphTypes.​ListToolsResponse](/node/runtime-reference/classes/common_data_types_api_list_tools_response.ListToolsResponse) |
| [ProxyNode](/node/runtime-reference/classes/graph_dsl_nodes_proxy_node.ProxyNode)                                    | Simple data passing node for forwarding input to output                      | any                                                                                                                    | any                                                                                                                          |
| [RandomCannedTextNode](/node/runtime-reference/classes/graph_dsl_nodes_random_canned_text_node.RandomCannedTextNode) | Selects a random text from a list of predefined phrases                      | any                                                                                                                    | String                                                                                                                       |
| [RemoteLLMChatNode](/node/runtime-reference/classes/graph_dsl_nodes_remote_llm_chat_node.RemoteLLMChatNode)          | Generates a response using a large language model                            | [GraphTypes.​LLMChatRequest](/node/runtime-reference/classes/common_data_types_api_llm_chat_request.LLMChatRequest)    | GraphTypes.​LLMChatResponse                                                                                                  |

\| [RemoteSTTNode](/node/runtime-reference/classes/graph_dsl_nodes_remote_stt_node.RemoteSTTNode) | Converts speech audio to text using a speech-to-text (STT) model | [GraphTypes.​Audio](/node/runtime-reference/classes/common_data_types_api_audio.Audio) | String |
\| [RemoteTTSNode](/node/runtime-reference/classes/graph_dsl_nodes_remote_tts_node.RemoteTTSNode) | Converts text-to-speech audio using a text-to-speech (TTS) model | String <br /> GraphTypes.​TextStream <br /> [GraphTypes.​TTSRequest](/node/runtime-reference/classes/common_data_types_api_tts_request.TTSRequest) | GraphTypes.​TTSOutputStream |
\| [SubgraphNode](/node/runtime-reference/classes/graph_dsl_nodes_subgraph_node.SubgraphNode) | Executes a compiled subgraph as a node | any | any |
\| [TextAggregatorNode](/node/runtime-reference/classes/graph_dsl_nodes_text_aggregator_node.TextAggregatorNode) | Combines text streams (chunks) into a single string | String <br /> GraphTypes.​TextStream <br /> GraphTypes.​LLMChatResponse | String |
\| [TextChunkingNode](/node/runtime-reference/classes/graph_dsl_nodes_text_chunking_node.TextChunkingNode) | Splits text into smaller chunks | GraphTypes.​TextStream <br /> GraphTypes.​ContentStream | GraphTypes.​TextStream |
\| [TextClassifierNode](/node/runtime-reference/classes/graph_dsl_nodes_text_classifier_node.TextClassifierNode) | Analyzes text and classifies it into predefined categories using ML models | String | [GraphTypes.​ClassificationResult](/node/runtime-reference/classes/common_data_types_api_classification_result.ClassificationResult) |

#### Built-in Subgraphs

<Note> Subgraphs with an asterisk (\*) are experimental and subject to change. </Note>

| **Subgraph**      | **Description**                                                | **Input Type(s)** | **Output Type(s)**                                                                                                |
| ----------------- | -------------------------------------------------------------- | ----------------- | ----------------------------------------------------------------------------------------------------------------- |
| Intent Subgraph\* | Detects the intent of the text input using a built-in subgraph | String            | [GraphTypes.MatchedIntents](/node/runtime-reference/classes/common_data_types_api_matched_intents.MatchedIntents) |

#### Custom Nodes

You can create your own nodes by extending the [CustomNode](/node/runtime-reference/classes/graph_dsl_nodes_custom_node.CustomNode) base class.

### Components

Import components from `@inworld/runtime/graph` or `@inworld/runtime/graph/components`:

```javascript theme={"system"}
import { 
  RemoteLLMComponent,
  RemoteKnowledgeComponent,
  RemoteEmbedderComponent,
  RemoteSTTComponent,
  RemoteTTSComponent,
  MCPClientComponent
} from '@inworld/runtime/graph';
```

Components are reusable configurations that can be shared across multiple nodes:

* [RemoteLLMComponent](/node/runtime-reference/classes/graph_dsl_components_remote_llm_component.RemoteLLMComponent) - LLM provider configuration
* [RemoteKnowledgeComponent](/node/runtime-reference/classes/graph_dsl_components_remote_knowledge_component.RemoteKnowledgeComponent) - Knowledge base configuration
* [RemoteEmbedderComponent](/node/runtime-reference/classes/graph_dsl_components_remote_embedder_component.RemoteEmbedderComponent) - Text embedding configuration
* [RemoteSTTComponent](/node/runtime-reference/classes/graph_dsl_components_remote_stt_component.RemoteSTTComponent) - Speech-to-text configuration
* [RemoteTTSComponent](/node/runtime-reference/classes/graph_dsl_components_remote_tts_component.RemoteTTSComponent) - Text-to-speech configuration
* [MCPClientComponent](/node/runtime-reference/classes/graph_dsl_components_mcp_client_component.MCPClientComponent) - MCP server configuration

## Key Features

* 🚀 **High Performance** - Optimized graph execution
* 🧠 **AI-First** - Built-in LLM, memory, and knowledge systems
* 🔧 **Extensible** - Custom nodes and components
* 📊 **Observable** - Comprehensive telemetry and logging
* 🌊 **Streaming** - Real-time audio and text processing
