Graphiti temporal knowledge graph memory for n8n AI agents
npm install n8n-nodes-graphiti!Graphiti Memory Node
!npm version
!License: MIT
> š§ Temporal Knowledge Graph Memory for n8n AI Agents
This node requires Graphiti Awesome Memory backend to be running.
Graphiti Awesome Memory is a FastAPI-based adapter that provides REST API endpoints for Graphiti temporal knowledge graph. It handles:
- User session management
- Message persistence
- Semantic fact extraction
- Episode (conversation history) storage
- Knowledge graph querying
š Setup Graphiti Awesome Memory Backend ā
---
- Short-term Memory: Recent conversation episodes from database (persistent across restarts)
- Long-term Memory: Extracted facts stored in temporal knowledge graph
- Semantic Search: Intelligent fact retrieval based on query relevance
- ā
AI Agent node compatible
- ā
Session-based memory per user
- ā
Configurable context windows
- ā
Graceful error handling with fallbacks
- ā
Comprehensive logging
- ā±ļø 180-second timeout for slow LLM processing
- š Network resilience with automatic fallbacks
- š Structured memory formatting for optimal LLM consumption
- š Memory source tracking - AI knows if facts come from files or conversation
- šÆ Version 1.0.17 with grouped query support
---
1. Open your n8n instance
2. Go to Settings ā Community Nodes
3. Click Install
4. Enter: n8n-nodes-graphiti
5. Click Install
6. Restart n8n
``bash`
npm install n8n-nodes-graphiti
---
Follow the setup instructions at Graphiti Awesome Memory
Quick start:
`bashClone and configure
git clone https://github.com/GoGoButters/Graphiti_Awesome_Memory.git
cd Graphiti_Awesome_Memory
Services will be available at:
- Adapter API: http://localhost:8000/docs
- Admin UI: http://localhost:3000
- Neo4j Browser: http://localhost:7474
$3
1. Go to Credentials ā New
2. Search for "Graphiti API"
3. Fill in:
- API URL: Your Graphiti server URL (e.g.,
http://192.168.1.98:8000)
- API Key: Your authentication key
4. Test and save---
šÆ Usage
$3
`
[Webhook/Chat Trigger]
ā
[Settings Node] ā Define chatId/userId
ā
[Graphiti Memory] ā Load context (before agent)
ā
[AI Agent] ā Uses enriched memory
ā
[Graphiti Memory] ā Save conversation (after agent)
ā
[Respond to User]
`$3
| Parameter | Default | Description |
|-----------|---------|-------------|
| Session ID Type |
fromInput | How to determine session ID |
| Session Key | ={{ $json.sessionId }} | Expression to extract user/session ID |
| Context Window Length | 5 | Number of recent episodes to fetch from database |
| Search Limit | 10 | Maximum facts retrieved from knowledge graph |$3
When AI Agent requests memory, the node performs 2 API calls:
1. Grouped Semantic Search (
POST /memory/query/grouped)
- Searches knowledge graph for relevant facts
- Groups results by source (files vs conversation)
- Returns facts with source attribution and confidence scores2. Episode Retrieval (
GET /memory/users/{userId}/episodes)
- Fetches last N conversation messages from database
- Persistent across n8n restarts
- Returns actual user/assistant dialogue$3
`
=== Relevant Facts from Long-term Memory ===š From file: medical_records.pdf
1. Patient has hypertension history (confidence: 0.95)
2. Last checkup was in November 2024 (confidence: 0.89)
š From file: lab_results.pdf
1. Blood pressure: 120/80 (confidence: 0.92)
š¬ From conversation:
1. User's name is Alice (confidence: 0.95)
2. Alice prefers morning appointments (confidence: 0.87)
=== Recent Conversation ===
User: Hi, how are you?
Assistant: I'm doing well, thanks for asking!
User: What's my name?
`> Note: The š and š¬ icons help AI agents understand and cite where each fact originated.
---
š API Reference
$3
POST /memory/append - Save conversation message
`json
{
"user_id": "35145416",
"text": "User message content",
"metadata": {
"role": "user",
"source": "n8n",
"session_id": "35145416",
"timestamp": "2025-12-01T12:00:00Z"
}
}
`POST /memory/query/grouped - Grouped semantic fact search
`json
{
"user_id": "35145416",
"query": "What do I like?",
"limit": 10
}
`Response:
`json
{
"groups": [
{
"source_type": "file",
"source_name": "interests.pdf",
"facts": [{"fact": "User likes robotics", "score": 0.95}]
},
{
"source_type": "conversation",
"source_name": null,
"facts": [{"fact": "User mentioned hiking", "score": 0.85}]
}
],
"total_facts": 2
}
`GET /memory/users/{userId}/episodes - Retrieve conversation history
`http
GET /memory/users/35145416/episodes?limit=5
`---
š ļø Development
$3
- Node.js 18+
- n8n installed locally
- Graphiti Awesome Memory backend running
$3
`bash
Clone repository
git clone https://github.com/GoGoButters/Graphiti_n8n_node.git
cd Graphiti_n8n_nodeInstall dependencies
npm installBuild
npm run buildLink for local n8n development
npm link
cd ~/.n8n/nodes
npm link n8n-nodes-graphiti
`$3
-
npm run build - Compile TypeScript and copy assets
- npm run dev - Watch mode for development
- npm run format - Format code with Prettier
- npm run lint - Lint code with ESLint
- npm run lintfix - Auto-fix linting issues---
š Troubleshooting
$3
- ā
Check Graphiti Awesome Memory backend is running
- ā
Verify API credentials are correct
- ā
Check Session Key expression resolves correctly
- ā
Look at n8n server logs for detailed error messages
Server Logs Location:
`bash
Docker
docker logs n8n-container --tail 100PM2
pm2 logs n8n
`$3
- ā
Ensure Graphiti server is reachable from n8n
- ā
Check firewall/network settings
- ā
Verify API URL format (no trailing slash)
- ā
Consider increasing timeout if processing is slow
$3
- ā
Set Session ID Type to
Define Below
- ā
Use expression: ={{ $('Settings').first().json.chatId }}
- ā
Ensure Settings node passes chatId/userId
- ā
Check logs for [Graphiti Node] FINAL sessionId$3
Node automatically falls back to in-memory
chatHistory if episodes endpoint is unavailable. Check logs:
`
[Graphiti] Error fetching episodes: ...
[Graphiti] Falling back to chatHistory...
`---
š¤ Contributing
Contributions are welcome! Please:
1. Fork the repository
2. Create a feature branch (
git checkout -b feature/amazing-feature)
3. Make your changes with tests
4. Ensure linting passes (npm run lint)
5. Commit changes (git commit -m 'feat: Add amazing feature')
6. Push to branch (git push origin feature/amazing-feature)
7. Open a Pull Request---
š° Support the Project
If you find this project valuable, consider supporting its development:
$3
- USDT (ERC20):
0xd91e775b3636f2be35d85252d8a17550c0f869a6
- Bitcoin (BTC): 3Eaa654UHa7GZnKTpYr5Nt2UG5XoUcKXgx
- Ethereum (ETH): 0x4dbf76b16b9de343ff17b88963d114f8155a2df0
- Tron (TRX): TT9gPkor4QoR9c12x8HLbvCLeNcS9KDutc`Your support helps maintain and improve this project! š
---
MIT Ā© GoGoButters
---
- GitHub Repository
- npm Package
- Graphiti Awesome Memory Backend
- Graphiti Project
- n8n Documentation
---
- š Report Issues
- š¬ n8n Community Forum
- š§ Create an issue on GitHub for questions
---

---
Made with ā¤ļø for the n8n and Graphiti communities