Skip to main content
Glama
README.md
# ๐Ÿง  Cortex: Open-Source AI Memory for your Codebase.  Works with Claude CLI and others

### Never Explain Your Codebase Twice.

[![MIT License](https://img.shields.io/badge/License-MIT-22c55e?style=for-the-badge)](LICENSE)
[![GitHub Stars](https://img.shields.io/github/stars/Remskill/Cortex?style=for-the-badge&logo=github&color=yellow)](https://github.com/Remskill/Cortex)
[![Buy Me a Coffee](https://img.shields.io/badge/Support-Buy%20Me%20a%20Coffee-FFDD00?style=for-the-badge&logo=buy-me-a-coffee&logoColor=black)](https://buymeacoffee.com/denys_medvediev)

![100% Local](https://img.shields.io/badge/๐Ÿ”’_100%25_Local-171717?style=flat-square)
![100% Free](https://img.shields.io/badge/๐Ÿ’ฐ_100%25_Free-171717?style=flat-square)
![Zero API Costs](https://img.shields.io/badge/๐Ÿš€_Zero_API_Costs-171717?style=flat-square)

[![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?style=flat-square&logo=typescript&logoColor=white)](https://www.typescriptlang.org/)
[![Node.js](https://img.shields.io/badge/Node.js_18+-339933?style=flat-square&logo=node.js&logoColor=white)](https://nodejs.org/)
[![PostgreSQL](https://img.shields.io/badge/PostgreSQL-4169E1?style=flat-square&logo=postgresql&logoColor=white)](https://www.postgresql.org/)
[![Docker](https://img.shields.io/badge/Docker-2496ED?style=flat-square&logo=docker&logoColor=white)](https://www.docker.com/)
[![MCP](https://img.shields.io/badge/MCP-Protocol-8B5CF6?style=flat-square)](https://modelcontextprotocol.io/)

[๐ŸŽฏ What is Cortex](#-what-is-cortex) ยท [๐Ÿ‘ฅ Who Needs It](#-who-needs-cortex) ยท [โšก How It Works](#-how-it-works) ยท [๐Ÿš€ Quick Start](#-quick-start) ยท [๐Ÿ“– Docs](#๏ธ-mcp-tools-reference) ยท [โ“ FAQ](#-faq)

---

## ๐ŸŽฏ What is Cortex?

Cortex is a **semantic memory layer** for AI coding assistants. It indexes your codebase into a vector database, so AI can find relevant code by meaning โ€” not just keywords.

<table>
<tr>
<td width="50%">

### โŒ Without Cortex

```
You: "Add payment processing"

Claude Code:
  โ†’ Reads CLAUDE.md (if exists)
  โ†’ Reads README.md
  โ†’ Maybe searches some files
  โ†’ Picks random agents (unpredictable)
  โ†’ Misses your PaymentService
  โ†’ Creates duplicate from scratch
```

</td>
<td width="50%">

### โœ… With Cortex

```
You: "Add payment processing"

Claude Code:
  โ†’ Reads CLAUDE.md (finds Cortex instructions)
  โ†’ Loads Cortex memory agent
  โ†’ Queries MCP: "payment processing"
  โ†’ Gets: PaymentService, StripeClient, docs
  โ†’ Extends YOUR existing code
```

</td>
</tr>
</table>

---

## ๐Ÿ‘ฅ Who Needs Cortex?

| You should use Cortex if... | Why it helps |
|----------------------------|--------------|
| ๐Ÿข Your codebase has **20+ files** | AI can't hold everything in context |
| ๐Ÿ”„ You've had AI **rewrite existing code** | Cortex finds it first |
| ๐Ÿ“š You have **docs AI keeps ignoring** | Semantic search surfaces them |
| ๐Ÿค Your team has **established patterns** | AI learns and follows them |
| ๐Ÿ’ธ You want **free, local, private** | No cloud, no API costs |

---

## โšก How It Works

```mermaid
flowchart TB
    subgraph INPUT["๐Ÿ“ Your Codebase"]
        A1[src/services/payment.ts]
        A2[src/utils/logger.ts]
        A3[docs/API.md]
        A4[README.md]
    end

    subgraph CORTEX["๐Ÿง  Cortex Processing"]
        B1[๐Ÿ“„ Chunk Files]
        B2[๐Ÿ”ข Generate Embeddings]
        B3[(๐Ÿ—„๏ธ Vector Database)]
    end

    subgraph QUERY["๐Ÿค– AI Assistant"]
        C1["User: Add email notifications"]
        C2[๐Ÿ” cortex_query]
        C3[๐Ÿ“‹ Results]
        C4[โœ… Writes Code]
    end

    A1 & A2 & A3 & A4 --> B1
    B1 --> B2
    B2 --> B3

    C1 --> C2
    C2 -->|"search: notification"| B3
    B3 -->|"Found: NotificationService, EmailClient, logging patterns"| C3
    C3 --> C4
```

| Step | What Happens |
|:----:|--------------|
| **1๏ธโƒฃ Index** | Cortex chunks your code into ~1024 char pieces and creates semantic embeddings |
| **2๏ธโƒฃ Query** | AI asks natural language questions: "how do we handle notifications?" |
| **3๏ธโƒฃ Build** | AI receives relevant files and patterns, writes consistent code |

---

## ๐Ÿš€ Quick Start

### Step 1 ยท Add Cortex

```bash
cd your-project
git submodule add https://github.com/Remskill/Cortex.git cortex
cd cortex && cp .env.example .env && npm install
```

### Step 2 ยท Configure Ignore Patterns

> โš ๏ธ **Do this BEFORE syncing!** Skips junk to be added to your memory.

```bash
cp docs/.cortexignore.default ../.cortexignore
```

### Step 3 ยท Start Services

```bash
docker-compose up -d
```
Wait for model to be ready
![img.png](docs/img/model.png)

> โฑ๏ธ First run downloads the embedding model (~274MB, 2-5 min)

### Step 4 ยท Initialize

```bash
npm run setup
```

### Step 5 ยท Configure MCP

Create `.mcp.json` in your **project root**:

```json
{
  "mcpServers": {
    "cortex": {
      "command": "npx",
      "args": ["tsx", "cortex/src/server.ts"],
      "env": {
        "DATABASE_URL": "postgres://cortex:cortex-dev-pass-123@localhost:5433/cortex",
        "OLLAMA_URL": "http://localhost:11434"
      }
    }
  }
}
```

### Step 6 ยท Restart Claude Code

Run `/exit` and reopen. Verify with `/mcp` โ†’ should see `cortex: connected`

![MCP Connected](docs/img/mpc.png)

### Step 7 ยท Install Git Hook

> ๐Ÿ”ด **Required** โ€” keeps AI memory in sync with your code

```bash
npm run hook:install
```

### Step 8 ยท Create Cortex Memory Agent (Recommended)

> ๐Ÿ’ก **Why?** Agents ensure Claude Code automatically queries Cortex before implementing features.

**Option A: Using Claude Code CLI** (recommended)
```bash
/agents
# โ†’ Select "Create new agent"
# โ†’ Follow prompts to create an agent for searching codebase patterns
# โ†’ Name it something like "cortex-memory-agent"
```

**Option B: Copy example agent**
```bash
# Copy the pre-built agent definition
cp cortex/docs/cortex-memory-agent.md .claude/agents/cortex-memory-agent.md
```

See [`docs/cortex-memory-agent.md`](docs/cortex-memory-agent.md) for a complete agent example.

### Step 9 ยท Add to CLAUDE.md

Tell Claude cli to always use your Cortex agent:

```markdown
## Cortex Memory
**ALWAYS use the cortex-memory-agent before implementing ANY feature.**
This agent will query Cortex to find existing patterns and prevent code duplication.

Manual query example:
cortex_query("what you're building")
```

### โœ… Done!

```typescript
cortex_query("how we handle API errors")
cortex_query("existing notification system")
cortex_query("database connection patterns")
```

---

## ๐Ÿ”„ Git Auto-Sync

After installing the hook, Cortex syncs automatically on every commit:

```bash
git commit -m "Add new feature"
# ๐Ÿ”„ Syncing changed files...
# โœ… src/feature.ts (12 chunks)
# โœ… docs/FEATURE.md (5 chunks)
```

| Benefit | Description |
|---------|-------------|
| ๐Ÿค– **Zero effort** | Happens automatically |
| โšก **Incremental** | Only changed files |
| ๐ŸŽฏ **Always fresh** | AI never sees stale code |

---

## ๐Ÿ› ๏ธ MCP Tools Reference

| Tool | Purpose |
|------|---------|
| `cortex_query` | Search by meaning |
| `cortex_sync` | Manual file sync |
| `cortex_stats` | Database stats |
| `cortex_init` | Health check |
| `cortex_list_files` | List indexed files |
| `cortex_delete` | Remove from index |

### Query Examples

```typescript
// Find existing implementations
cortex_query("payment processing")
cortex_query("user session management")

// Find patterns
cortex_query("how we handle errors in API routes")
cortex_query("state management approach")

// Find documentation
cortex_query("deployment process")
cortex_query("environment configuration")
```

> ๐Ÿ’ก **Tip**: Be specific. `"how we validate user input in forms"` beats `"validation"`.

---

## ๐Ÿ“ Configuration

### .cortexignore

Controls what gets indexed. Copy the default:

```bash
cp cortex/docs/.cortexignore.default .cortexignore
```

**Auto-excluded**: `node_modules`, `dist`, `build`, `.git`, binary files

### .cortexconfig.json (Optional)

```json
{
  "maxFileSize": 52428800
}
```

> 52428800 = 50MB. Also accepts `"50MB"` string format.

---

## ๐Ÿ’ป System Requirements

| Component | Minimum |
|-----------|---------|
| Docker | Docker Desktop or Engine |
| RAM | 4GB (8GB recommended) |
| Disk | ~2GB for models |
| Node.js | v18+ |

---

## ๐Ÿ”ง Troubleshooting

<details>
<summary><strong>Services won't start</strong></summary>

```bash
docker ps                    # Is Docker running?
docker-compose logs          # Check errors
docker-compose down && docker-compose up -d
```
</details>

<details>
<summary><strong>No results from queries</strong></summary>

```typescript
cortex_stats()      // Check if data exists
cortex_list_files() // List what's indexed
```

If empty, run `npm run db:sync`
</details>

<details>
<summary><strong>Emergency reset</strong></summary>

```bash
docker-compose down -v   # Delete all data
docker-compose up -d     # Fresh start
npm run setup            # Reinitialize
```
</details>

---

## โ“ FAQ

<details>
<summary><strong>Is it really free?</strong></summary>

Yes. MIT licensed, no API costs, no subscriptions. Embeddings run locally via Ollama.
</details>

<details>
<summary><strong>Does my code leave my machine?</strong></summary>

No. Everything runs in local Docker containers. Your code never leaves localhost.
</details>

<details>
<summary><strong>What languages work?</strong></summary>

All of them. Cortex indexes text content โ€” TypeScript, Python, Go, Rust, Java, C++, Markdown, everything.
</details>

<details>
<summary><strong>How is this different from grep?</strong></summary>

Grep finds exact text matches. Cortex finds **meaning**:

- Search `"user authentication"` โ†’ finds login handlers, JWT code, session management
- Even if none of those files contain the words "user authentication"
</details>

---

## ๐Ÿค Contributing

All contributions welcome:

- ๐Ÿ› Bug reports
- ๐Ÿ’ก Feature ideas & suggestions
- ๐Ÿ“ Documentation improvements
- ๐Ÿ”ง Code contributions

**Have an idea?** Open a [GitHub Issue](https://github.com/Remskill/Cortex/issues) โ€” we discuss everything!

Fork โ†’ Branch โ†’ PR โ†’ We'll review and merge together.

---

## ๐Ÿ” Similar Projects

If Cortex isn't the right fit, check out **[Zep](https://www.getzep.com/)** โ€” they solve a similar problem (agent context/memory) with a different approach. We discovered them after building Cortex and found the ideas surprisingly similar. Worth exploring if you need alternatives!

---

## ๐Ÿ’– Support

<a href="https://buymeacoffee.com/denys_medvediev">
  <img src="https://img.shields.io/badge/โ˜•-Buy%20Me%20a%20Coffee-yellow.svg?style=for-the-badge" alt="Buy Me a Coffee">
</a>

---

## ๐Ÿ”— Links

[GitHub](https://github.com/Remskill/Cortex) ยท [Issues](https://github.com/Remskill/Cortex/issues) ยท [LinkedIn](https://www.linkedin.com/in/denysmedvediev/)

---

<div align="center">

**Made with โค๏ธ by [Denys Medvediev](https://buymeacoffee.com/denys_medvediev)**

โญ **Star this repo if it helps you!** โญ

</div>