Agent Memory Setup
One install, one licence, memory in every agent you run. Pick the tab for how you work — MCP client or raw API — and follow the steps. Everything below runs on the same local VEKTOR engine: one SQLite file, zero embedding API calls, zero cloud round-trips.
Preferences, decisions, and project state persist across every conversation and every restart.
Local INT8 embedding model. No per-call API charges for storing or recalling memory.
SQLite on your own disk. Memory never has to leave your machine to be useful.
Recall against a warm index runs in single-digit milliseconds — no network hop, no cold start.
Choose your setup
Claude Desktop & Claude Code (MCP)
VEKTOR connects to Claude over the Model Context Protocol. Claude gets native memory tools it can call on its own — vektor_store, vektor_recall, vektor_graph, vektor_delta, and more — no code required on your end.
Install
Download the package from the Downloads page and install it globally:
npm install -g ./vektor-slipstream-1.8.0.tgz
Activate your licence
Your key is emailed on purchase. Activating launches the setup wizard automatically:
vektor activate YOUR-LICENCE-KEY-HERE
Run the setup wizard
If you skipped it, or need to re-run it later:
vektor setup
The wizard detects Claude Desktop on your machine and writes the MCP config for you — the same wizard also configures Cursor, Windsurf, VS Code, Continue, and Groq Desktop in one pass. Pick an AI provider (Ollama, Claude, OpenAI, Groq, Gemini, Mistral, xAI, or OpenRouter) when prompted; this is the model VEKTOR itself uses internally for background memory work, separate from whatever model Claude Desktop is running.
Restart Claude Desktop and check for the tools
Quit Claude completely and reopen it. Look for “vektor” in the MCP tools list at the bottom of a conversation.
Manual config (if the wizard didn't detect your install)
Find your config file — macOS: ~/Library/Application Support/Claude/claude_desktop_config.json, Windows: %APPDATA%\\Claude\\claude_desktop_config.json, Linux: ~/.config/Claude/claude_desktop_config.json — and add VEKTOR to mcpServers:
{
"mcpServers": {
"vektor": {
"command": "vektor",
"args": ["mcp"],
"env": {
"VEKTOR_LICENCE_KEY": "YOUR-LICENCE-KEY-HERE",
"SLIPSTREAM_AGENT_ID": "claude-desktop"
}
}
}
}
Available memory tools
vektor_storeSave something to memory with an importance score.
vektor_recallSemantic search against everything stored.
vektor_graphTraverse connections between related memories.
vektor_deltaSee what changed on a topic recently.
vektor_statusHealth check — db path, size, last write.
Try it
Ask Claude to remember something:
"Store this: I prefer TypeScript over Python, use VS Code, and want concise answers. Mark it important."Then, in a later conversation:
"What do you remember about my tooling preferences?"Cursor & Windsurf
Both are MCP clients, so the setup mirrors Claude Desktop — same package, same licence, same vektor setup wizard, different config file.
Install and activate
npm install -g ./vektor-slipstream-1.8.0.tgz vektor activate YOUR-LICENCE-KEY-HERE
Run the wizard
The same wizard that configures Claude Desktop detects Cursor and Windsurf on your machine and writes each app's MCP config for you:
vektor setup
Both editors read MCP config from a project or user-level mcp.json. The wizard picks the right path for whichever IDE it finds — you don't need to know it.
Manual config, if needed
Add to your mcp.json (Cursor: Settings → MCP; Windsurf: Windsurf Settings → MCP Servers):
{
"mcpServers": {
"vektor": {
"command": "vektor",
"args": ["mcp"],
"env": {
"VEKTOR_LICENCE_KEY": "YOUR-LICENCE-KEY-HERE",
"SLIPSTREAM_AGENT_ID": "cursor"
}
}
}
}
Swap "cursor" for "windsurf" in SLIPSTREAM_AGENT_ID if you're configuring Windsurf — each editor gets its own agent id so you can tell which one wrote a given memory.
dbPath and Cursor and Windsurf read and write the same memory graph — useful if you switch between them on the same codebase.Coding-specific patterns
For IDE agents, store architectural decisions and conventions, not code itself:
"Remember: this repo uses Zod for all API validation, not manual type guards. Tests live next to source files, not in a separate /tests folder."Next time you open the project, ask the agent to check memory before it proposes a pattern that conflicts with an established one.
OpenAI Agents SDK
If you're building with the OpenAI Agents SDK (or the raw Chat Completions API) rather than an MCP client, you use VEKTOR's programmatic createMemory() interface directly in your code.
Install and activate
npm install -g ./vektor-slipstream-1.8.0.tgz vektor activate YOUR-LICENCE-KEY-HERE
The SDK path doesn't require the setup wizard's MCP config — you're calling the memory engine directly from code, so skip straight to writing it.
Wrap your agent loop
Recall before the model call, store after it:
import OpenAI from 'openai'; import { createMemory } from 'vektor-slipstream'; const memory = await createMemory({ agentId: 'my-openai-agent', licenceKey: process.env.VEKTOR_LICENCE_KEY, }); const client = new OpenAI(); async function respond(userMessage) { // Recall relevant context before calling the model const memories = await memory.recall(userMessage, 5); const context = memories.map(m => m.content).join('\ '); const response = await client.chat.completions.create({ model: 'gpt-4.1', messages: [ { role: 'system', content: `Relevant context:\ ${context}` }, { role: 'user', content: userMessage }, ], }); const reply = response.choices[0].message.content; // Store anything worth remembering from this exchange await memory.store({ content: `User asked: ${userMessage}`, importance: 5, tags: ['conversation'], }); return reply; }
Agents SDK function-tool pattern
If you're using the Agents SDK's tool-calling loop, expose recall and store as tools the model can call itself, mirroring how Claude's MCP tools work:
const tools = [ { type: 'function', function: { name: 'recall_memory', description: 'Search long-term memory for relevant context', parameters: { type: 'object', properties: { query: { type: 'string' } } }, }, }, ]; // route calls to tools[i] into memory.recall() / memory.store()
createMemory() is model-agnostic — the same SQLite graph works whether the calling model is GPT, Claude, or a local Ollama model. Give agents from different providers the same dbPath to share memory between them.OpenRouter
OpenRouter agents follow the same programmatic pattern as OpenAI — VEKTOR doesn't care which backend model OpenRouter routes to, since memory sits outside the model call entirely.
Install and activate
npm install -g ./vektor-slipstream-1.8.0.tgz vektor activate YOUR-LICENCE-KEY-HERE
Point the OpenAI SDK client at OpenRouter
OpenRouter is OpenAI-compatible, so the same client works with a different base URL:
import OpenAI from 'openai'; import { createMemory } from 'vektor-slipstream'; const memory = await createMemory({ agentId: 'my-openrouter-agent', licenceKey: process.env.VEKTOR_LICENCE_KEY, }); const client = new OpenAI({ baseURL: 'https://openrouter.ai/api/v1', apiKey: process.env.OPENROUTER_API_KEY, }); async function respond(userMessage, model = 'anthropic/claude-3.5-sonnet') { const memories = await memory.recall(userMessage, 5); const context = memories.map(m => m.content).join('\ '); const response = await client.chat.completions.create({ model, messages: [ { role: 'system', content: `Relevant context:\ ${context}` }, { role: 'user', content: userMessage }, ], }); await memory.store({ content: `User asked: ${userMessage}`, importance: 5 }); return response.choices[0].message.content; }
Multi-model, one memory
Route different queries to different backend models through OpenRouter while every request reads from and writes to the same memory graph — a coding query might go to Claude, a fast classification query to a smaller open model, both sharing context:
await respond('Refactor this function', 'anthropic/claude-3.5-sonnet'); await respond('Classify this ticket', 'meta-llama/llama-3.1-8b-instruct'); // both calls recall from and store to the same memory.db
Troubleshooting
- Re-run
vektor setupand confirm it detected the right app - Check
vektor status— confirms the licence is valid and the MCP server is reachable - Fully quit and reopen the app — closing the window isn't enough
- Check logs: macOS Claude logs live at
~/Library/Logs/Claude/
- Run
vektor statusto confirm the db path and size - Check
SLIPSTREAM_AGENT_IDmatches across every config that should share memory - Confirm disk space and file permissions on the machine running the engine
- Confirm the global npm bin directory is on your
PATH:npm config get prefix - Re-run the install:
npm install -g ./vektor-slipstream-1.8.0.tgz --force
Best practices
Rate importance honestly
9–10 for constraints and core preferences that should almost never be forgotten, 6–8 for recent decisions, 1–5 for anything that's likely to change soon.
Tag for precision recall
Tags narrow what a recall query matches against — use a handful of consistent tags rather than one-off labels per memory.
Update instead of duplicating
VEKTOR deduplicates automatically, but an explicit update when a preference changes is clearer than letting two versions coexist.
Don't store secrets
Memory lives in local SQLite, not a secrets manager. Keep API keys, passwords, and other credentials out of it entirely.