MiniMe: Your AI's Memory System

Community Version - Free Forever, Private, Self-Hosted


A Practical Guide for Cursor, VSCode & Windsurf Users

What is MiniMe? How do I use it?

You know how your AI assistant forgets everything between sessions? MiniMe fixes that.

Instead of re-explaining your architecture, coding patterns, and decisions every time, your AI:

Think of it as: Your AI gets a persistent memory that survives restarts, context window limits, and new chat sessions. Read about stopping context re-explanation →

Tool Integrations

Installation → | Quick Start → | Search Guide →

MiniMe works with all major AI coding assistants through the Model Context Protocol (MCP). Choose your tool for setup instructions:

Cursor AI Memory

Add persistent memory to Cursor. Never re-explain your codebase. Cross-repo context, semantic search.

Setup Guide for Cursor →

Claude Desktop Memory

Best MCP server for Claude Desktop memory. Persistent context, tribal knowledge capture.

Setup Guide for Claude Desktop →

VS Code AI Memory

Persistent memory for VS Code AI assistants. Works with Copilot, Continue, and more.

Setup Guide for VS Code →

MCP Server Guide

Learn about the Model Context Protocol and how MiniMe works as an MCP server.

MCP Server Documentation →

View complete installation guide →

Getting Started: Your First Interaction

Installation → | Memory Types → | Search Guide →

When Your AI Session Starts

Your AI should automatically load context. You'll see something like:

🤖 "I've loaded 3 rules and found 12 relevant memories for the payment-service project. 

Ready to help! What are we working on?"
Technical: What happened behind the scenes
// AI called these on startup:

get_rules({ project_name: "payment-service" })

search_memories({ query: "project overview", project_name: "payment-service" })

get_insights({ analysis_type: "comprehensive", time_range: "30d" })

Part 1: Talking to Your AI (The Basics)

Memory Types → | Search Guide → | Insights →

Scenario 1: "Remember This Implementation"

See also: Search Guide | Performance Data

You just finished coding. Tell your AI:

You: "Remember this JWT implementation. I added refresh token rotation 
with Redis storage. Access tokens expire in 15 minutes, refresh tokens 
in 7 days. We're storing refresh tokens in HTTP-only cookies."

AI Response:

✓ Got it! I've stored the JWT implementation details with:

   - Type: code-snippet
   - Files: src/auth/jwt.ts, src/middleware/authMiddleware.ts
   - Tags: authentication, jwt, security, redis

This will help me understand our auth system in future sessions.
Technical: Memory storage payload
store_memory({
  content: `# JWT Refresh Token Implementation

## Architecture

- Access tokens: 15min expiry, in-memory only
- Refresh tokens: 7 days, HTTP-only cookies
- Storage: Redis for refresh token registry
- Security: Token rotation on each refresh

## Implementation Details

- RefreshTokenService handles rotation logic
- Axios interceptor triggers silent refresh at 2min before expiry
- Detects token reuse (security) → revokes all sessions
- Rate limiting: 10 refreshes/hour per user

## Files Modified

- src/auth/jwt.ts - Token generation and validation
- src/middleware/authMiddleware.ts - Request authentication
- src/services/refreshTokenService.ts - Rotation logic`,

  project_name: "payment-service",
  memory_type: "code-snippet",
  related_files: [
    "src/auth/jwt.ts",
    "src/middleware/authMiddleware.ts",
    "src/services/refreshTokenService.ts"
  ],
  tags: ["authentication", "jwt", "security", "redis"],
  importance_score: 0.9
})

// Returns: Memory #1234

Scenario 2: "What Did We Decide About X?"

You need to recall a past decision:

You: "What did we decide about database choice for user preferences?"

AI Response:

✓ We chose MongoDB over PostgreSQL for the user preferences service.

Key reasons:
- Schema flexibility for custom user fields
- Nested documents map naturally to preference hierarchies  
- No migrations needed for schema changes
- Team has more MongoDB experience

This was decided after a 2-hour team debate. The vote was 4-1 in favor.

Want me to expand on the technical trade-offs we discussed?
Technical: Search and retrieval
// AI searched with:

search_memories({
  query: "database choice user preferences decision",
  memory_type: "decision",
  project_name: "payment-service",
  search_mode: "semantic"
})

// Found memory #2456, AI read the summary, then used:

expand_memories({
  memory_ids: [2456]
})

// Got full content including rationale, alternatives considered, team vote

Scenario 4: "Find All My Work On X"

You need to review everything related to a feature:

You: "Show me everything we've done on authentication"

AI Response:

Found 8 memories related to authentication:

**Implementations (3)**
- JWT refresh token system with rotation
- OAuth2 integration with Google/GitHub
- Two-factor authentication with TOTP

**Decisions (2)**  
- Chose JWT over session-based auth
- Decided on 15min access token expiry

**Bugs Fixed (2)**
- Race condition in token refresh
- CORS issues with cookie-based auth

**Performance (1)**
- Reduced auth middleware latency from 45ms to 8ms

Want me to expand on any of these?
Technical: Semantic search across types
search_memories({
  query: "authentication implementations decisions bugs",
  project_name: "payment-service",
  search_mode: "semantic"  // Finds related concepts
  // memory_type: "any" (default - searches all types)
})

// Semantic search uses:
// - 60% vector embeddings (conceptual similarity)
// - 25% keywords (exact matches)
// - 15% tags (topic matching)

Part 2: Advanced Workflows

Memory Types → | Search Strategies → | Get Insights → | Performance Benchmarks →

Scenario 5: "What Patterns Have Emerged?"

See also: Search Guide | Benchmark Results | Blog Articles

You want insights across all your work:

You: "What patterns have emerged in our API error handling?"

AI Response:

Analyzing 23 memories across 4 projects...

**Common Patterns Discovered:**

1. **Centralized Error Middleware** (Used in 3 projects)
   - Express middleware catches all errors
   - Transforms exceptions into consistent JSON format
   - Logs with correlation IDs for tracing

2. **Domain-Specific Exceptions** (Strong pattern)
   - Custom error classes: ValidationError, AuthError, NotFoundError
   - Each includes HTTP status code + error code
   - Makes error handling more semantic

3. **Circuit Breaker for External APIs** (Emerging)
   - Using Hystrix/resilience4j
   - Prevents cascade failures
   - Used in 2 recent services

**Recommendation:** Standardize on pattern #1 + #2 across all services.
We've proven this works well and it's familiar to the team.
Technical: Meta-analysis with insights
get_insights({
  analysis_type: "patterns",  // Other types: quality, technical_debt, comprehensive
  topic: "error handling API",  // Semantic filter on clusters
  time_range: "90d",
  project_name: "payment-service"  // Or omit to search ALL projects
})

// Returns:
// - Pre-computed cluster summaries
// - Pattern detection across memories
// - Frequency analysis
// - Recommendations from LLM analysis
// - Memory IDs for each pattern (for drilling down)

Scenario 6: "Why Do We Keep Having This Bug?"

You notice recurring issues:

You: "Analyze our authentication bugs. Why do they keep happening?"

AI Response:

Quality Analysis: Authentication Bugs

**Recurring Root Causes:**

1. **Race Conditions (3 occurrences)** ⚠️
   - Concurrent token refresh requests
   - Multiple tabs triggering simultaneous auth
   - Fix: Request queuing pattern works consistently

2. **Token Expiry Edge Cases (2 occurrences)**
   - Clock skew between servers
   - Tokens expiring mid-request
   - Fix: Add 2-minute buffer for refresh trigger

3. **CORS Misconfigurations (2 occurrences)**
   - Cookie domain settings incorrect
   - SameSite attribute issues
   - Fix: Environment-specific CORS config checklist created

**Recommendation:** Add integration tests specifically for concurrent auth
scenarios. This is our weakest testing area and accounts for 40% of auth bugs.
Technical: Quality analysis
get_insights({
  analysis_type: "quality",  // Focuses on bugs and issues
  topic: "authentication bugs",
  time_range: "180d",
  project_name: "payment-service"
})

// Returns:
// - Root cause analysis (why bugs happen)
// - Fix approaches (what worked)
// - Recurrence patterns (similar bugs)
// - Confidence scores
// - Related memory IDs

Scenario 7: "Help Me Think Through This Problem"

You have a complex design decision:

You: "Help me think through migrating from REST to GraphQL. 
We have 50+ REST endpoints and 3 mobile apps using them."

AI Response:

🤔 Starting structured thinking sequence...

**Initial Assessment:**
- 50+ REST endpoints is significant (migration effort: large)
- 3 mobile apps = breaking changes could impact users
- Need to consider: backwards compatibility, team learning curve, tooling

Let me work through different approaches...

**Branch 1: Big Bang Migration**
- Pros: Clean break, no hybrid maintenance
- Cons: High risk, requires coordinated deployment
- Timeline: 3-4 months
- Risk: HIGH ⚠️

**Branch 2: Gradual Migration (Facade Pattern)**
- Start with GraphQL gateway
- Gateway proxies to existing REST endpoints  
- Migrate endpoints one-by-one
- Mobile apps gradually adopt GraphQL
- Pros: Lower risk, incremental value
- Cons: Temporary complexity, longer timeline
- Timeline: 6-8 months
- Risk: MEDIUM

**Branch 3: New Features Only**
- Keep all existing REST endpoints
- Build only NEW features in GraphQL
- Mobile apps support both (versioned APIs)
- Pros: Minimal disruption, lowest risk
- Cons: Permanent hybrid system, technical debt
- Timeline: Ongoing
- Risk: LOW

**My Recommendation:**
Branch 2 (Gradual Migration) because:
1. Manages risk with incremental rollout
2. Proves value before full commitment
3. Team learns GraphQL while still productive
4. Can pause/pivot if issues arise

Ready to dive deeper into Branch 2 implementation plan?
Technical: Structured thinking
// Start thinking sequence:

start_thinking({
  goal: "Evaluate GraphQL migration strategy for 50+ REST endpoints with 3 mobile apps",
  project_name: "payment-service"
})

// Returns: sequence_id: "seq_abc123"

// Add thoughts (AI does this automatically):

add_thought({
  sequence_id: "seq_abc123",
  thought_type: "observation",
  thought: "50+ REST endpoints is significant migration effort..."
})

// Create alternative branches:

add_thought({
  sequence_id: "seq_abc123",
  thought_type: "branch",  // Creates new thinking branch
  branch_name: "Big Bang Migration",
  thought: "Replace all REST at once..."
})

add_thought({
  sequence_id: "seq_abc123",
  thought_type: "branch",
  branch_name: "Gradual Migration",
  thought: "GraphQL gateway facade pattern..."
})

// Final recommendation:

add_thought({
  sequence_id: "seq_abc123",
  thought_type: "conclusion",  // Saves as decision memory
  thought: "Recommend Branch 2 because..."
})

Scenario 8: "Track This Task"

You need to remember to do something:

You: "Remind me to add rate limiting to the login endpoint. 
This is related to the authentication work we just finished."

AI Response:

Task created: "Add rate limiting to login endpoint"

I've linked this to:
- Memory #1234: JWT implementation
- Memory #1245: Auth bug fix
- Memory #1289: Security enhancements

When you come back to this, you'll have full context!

(View all tasks with: "Show me my pending tasks")
Technical: Task management
// Create task:

tasks({
  action: "create",
  task_description: "Add rate limiting to login endpoint",
  project_name: "payment-service"
})

// Returns: task_id: "task_xyz789"

// Link related memories:

tasks({
  action: "link_memories",
  task_id: "task_xyz789",
  memory_ids: [1234, 1245, 1289],
  project_name: "payment-service"
})

// Later, view tasks:

tasks({
  action: "get",
  project_name: "payment-service",
  include_completed: false  // Show only pending
})

// Complete task:

tasks({
  action: "complete",
  task_id: "task_xyz789",
  project_name: "payment-service"
})

Part 4: Best Practices & Tips

Memory Types → | Search Guide → | Blog Articles →

DO These Things

1. Always Search Before Editing Files

✗ Don't: Just start editing src/auth/jwt.ts

✓ Do: "Check what context we have for src/auth/jwt.ts"

Your AI will find past implementations, warnings, and decisions.

2. Consolidate Work, Don't Fragment

✗ Don't: Save after every small change
   - "Remember I added this function"
   - "Remember I fixed this bug"
   - "Remember I updated the tests"

✓ Do: Save once after completion
   - "Remember the JWT implementation with all the context:
      - Added refresh rotation
      - Fixed race condition
      - Added reuse detection
      - Updated tests"

3. Link Related Content

✓ When creating tasks, link relevant memories
✓ When storing code, include related_files
✓ When splitting large docs, use related_memory_ids

4. Use the Right Memory Type

Code changes? → code-snippet (with related_files!)
Made a choice? → decision
Setting a rule? → rule
Learned something? → learning
Fixed a bug? → debug

5. Load Context at Session Start

Your AI should automatically:

  • Load rules (behavioral guidelines)
  • Search project overview
  • Get recent insights

If it doesn't, ask: "Load context for this project"

DON'T Do These Things

1. Don't Skip File Search Before Editing

✗ Bad: Edit code without checking past context
✓ Good: "What do we know about this file?"

You'll miss warnings, past bugs, and implementation details.

2. Don't Use Projects Tool for Working Notes

✗ Bad: "Create project brief for this bug I found"
✓ Good: "Remember this bug" (stores as memory)

Projects = formal deliverables (PRDs, briefs, plans)

Memories = everything else

3. Don't Store Secrets or Credentials

✗ Never: "Remember our database password is..."
✓ Instead: "Remember we use environment variables for DB credentials"

4. Don't Expand Everything

✗ Bad: Search returns 10 results → expand all 10
✓ Good: Review summaries → expand only 2-3 relevant ones

Saves tokens, keeps AI focused.

5. Don't Forget to Save Important Work

✗ Bad: Solve complex problem → move on
✓ Good: "Remember this solution for next time"

Quick Reference: Common Commands

Memory Types → | Search Guide → | Troubleshooting →

Memory Commands

"Remember this implementation"
"What did we decide about X?"
"Find my work on Y"
"Show me everything about Z"
"What context exists for this file?"
"Search my authentication work"

Insight Commands

"What patterns emerged in our error handling?"
"Why do we keep having auth bugs?"
"Show me best practices from past projects"
"Analyze our API design decisions"

Task Commands

"Remind me to add rate limiting"
"Show my pending tasks"
"Mark task X as complete"

Thinking Commands

"Help me think through migrating to GraphQL"
"Evaluate different database options"
"Let's architect the new payment system"

File Context Commands

"I'm about to edit src/auth/jwt.ts, what should I know?"
"Show me the history of this file"
"What bugs have we fixed in this component?"

Troubleshooting

Basics → | Search Guide → | Blog →

"AI isn't remembering things"

Check:

  1. Is memory system enabled in your IDE?
  2. Did AI actually store the memory? Look for confirmation
  3. Try: "Show me recent memories" to verify storage

Fix:

  • Be explicit: "Remember this" or "Save this for later"
  • Confirm storage: "Did you save that?"

"AI found wrong context"

Probably: Search was too broad or wrong project

Fix:

✗ "Find my work" (too vague)
✓ "Find my authentication work in the payment-service project"

"Search returns nothing"

Check:

  1. Correct project name?
  2. Have you stored anything yet?
  3. Try broader search terms

Fix:

✗ "getUserByIdAndValidateTokenWithRefresh" (too specific)
✓ "user authentication" (broader, finds related concepts)

"Too many search results"

Fix:

  • Use filters: memory_type, recent_only, file_path
  • Review summaries first, don't expand everything
"Find recent authentication work" → focuses last 30 days
"Find authentication decisions" → only decisions
"Find auth work in src/auth/" → specific directory

You're Ready!

You now know how to:

  • Make your AI remember implementations
  • Recall past decisions instantly
  • Search your codebase context
  • Discover patterns across projects
  • Track tasks with full context
  • Think through complex problems

Start Simple

  1. Try: "Remember this authentication code I just wrote"
  2. Try: "What did we decide about the database?"
  3. Try: "Before I edit this file, what should I know?"

Go Advanced

  1. Try: "What patterns emerged in our API design?"
  2. Try: "Why do we keep having race condition bugs?"
  3. Try: "Help me think through this architecture decision"

Need Help?

Ask your AI:

"Show me how to use MiniMe"
"What memory types are available?"
"How do I search for code context?"
"What's the difference between semantic and keyword search?"

Your AI has access to detailed help system and can guide you!