diff --git a/packages/components/credentials/MomentoCacheApi.credential.ts b/packages/components/credentials/MomentoCacheApi.credential.ts
new file mode 100644
index 000000000..038f826d9
--- /dev/null
+++ b/packages/components/credentials/MomentoCacheApi.credential.ts
@@ -0,0 +1,36 @@
+import { INodeParams, INodeCredential } from '../src/Interface'
+
+class MomentoCacheApi implements INodeCredential {
+ label: string
+ name: string
+ version: number
+ description: string
+ inputs: INodeParams[]
+
+ constructor() {
+ this.label = 'Momento Cache API'
+ this.name = 'momentoCacheApi'
+ this.version = 1.0
+ this.description =
+ 'Refer to official guide on how to get API key on Momento'
+ this.inputs = [
+ {
+ label: 'Cache',
+ name: 'momentoCache',
+ type: 'string'
+ },
+ {
+ label: 'API Key',
+ name: 'momentoApiKey',
+ type: 'password'
+ },
+ {
+ label: 'Endpoint',
+ name: 'momentoEndpoint',
+ type: 'string'
+ }
+ ]
+ }
+}
+
+module.exports = { credClass: MomentoCacheApi }
diff --git a/packages/components/nodes/llmcache/LLMMomentoCache/LLMMomentoCache.ts b/packages/components/nodes/llmcache/LLMMomentoCache/LLMMomentoCache.ts
new file mode 100644
index 000000000..82267c24a
--- /dev/null
+++ b/packages/components/nodes/llmcache/LLMMomentoCache/LLMMomentoCache.ts
@@ -0,0 +1,75 @@
+import {
+ getBaseClasses,
+ getCredentialData,
+ getCredentialParam,
+ ICommonObject,
+ INode,
+ INodeData,
+ INodeOutputsValue,
+ INodeParams
+} from '../../../src'
+import { MomentoCache } from 'langchain/cache/momento'
+import { CacheClient, Configurations, CredentialProvider } from '@gomomento/sdk'
+
+class LLMMomentoCache implements INode {
+ label: string
+ name: string
+ version: number
+ description: string
+ type: string
+ icon: string
+ category: string
+ baseClasses: string[]
+ inputs: INodeParams[]
+ outputs: INodeOutputsValue[]
+ credential: INodeParams
+
+ constructor() {
+ this.label = 'Momento Cache'
+ this.name = 'momentoCache'
+ this.version = 1.0
+ this.type = 'LLMCache'
+ this.icon = 'momento.png'
+ this.category = 'LLM Cache'
+ this.baseClasses = [this.type, 'LLMCacheBase']
+ this.credential = {
+ label: 'Connect Credential',
+ name: 'credential',
+ type: 'credential',
+ optional: true,
+ credentialNames: ['momentoCacheApi']
+ }
+ this.inputs = []
+ this.outputs = [
+ {
+ label: 'LLM Cache',
+ name: 'cache',
+ baseClasses: [this.type, ...getBaseClasses(MomentoCache)]
+ }
+ ]
+ }
+
+ async init(nodeData: INodeData, _: string, options: ICommonObject): Promise {
+ const credentialData = await getCredentialData(nodeData.credential ?? '', options)
+ const apiKey = getCredentialParam('momentoApiKey', credentialData, nodeData)
+ const cacheName = getCredentialParam('momentoCache', credentialData, nodeData)
+ const endPoint = getCredentialParam('momentoEndpoint', credentialData, nodeData)
+
+ // See https://github.com/momentohq/client-sdk-javascript for connection options
+ const client = new CacheClient({
+ configuration: Configurations.Laptop.v1(),
+ credentialProvider: CredentialProvider.fromString({
+ apiKey: apiKey
+ }),
+ defaultTtlSeconds: 60 * 60 * 24
+ })
+
+ let momentoCache = await MomentoCache.fromProps({
+ client,
+ cacheName: cacheName
+ })
+ return momentoCache
+ }
+}
+
+module.exports = { nodeClass: LLMMomentoCache }
diff --git a/packages/components/nodes/llmcache/LLMMomentoCache/momento.png b/packages/components/nodes/llmcache/LLMMomentoCache/momento.png
new file mode 100644
index 000000000..0f2b54b6a
Binary files /dev/null and b/packages/components/nodes/llmcache/LLMMomentoCache/momento.png differ
diff --git a/packages/components/package.json b/packages/components/package.json
index f8498e314..18bf8e6ad 100644
--- a/packages/components/package.json
+++ b/packages/components/package.json
@@ -19,6 +19,7 @@
"@aws-sdk/client-dynamodb": "^3.360.0",
"@dqbd/tiktoken": "^1.0.7",
"@getzep/zep-js": "^0.6.3",
+ "@gomomento/sdk": "^1.40.2",
"@google-ai/generativelanguage": "^0.2.1",
"@huggingface/inference": "^2.6.1",
"@notionhq/client": "^2.2.8",