Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
173 changes: 131 additions & 42 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,88 +1,126 @@
<p align="center">
<!-- Logo placeholder - replace with actual logo -->
<h1 align="center">OpenCodeIntel</h1>
<img src="docs/assets/OpenCodeIntel_Fav.png" alt="OpenCodeIntel" width="80" />
</p>

<h1 align="center">OpenCodeIntel</h1>

<p align="center">
<strong>Stop feeling lost in unfamiliar codebases.</strong><br/>
Semantic code search powered by AI. Find anything, instantly.
</p>

<p align="center">
<strong>Finally understand your codebase</strong>
<a href="https://opencodeintel.com"><strong>Try it Free</strong></a>
&nbsp;&nbsp;·&nbsp;&nbsp;
<a href="#quick-start">Self-Host</a>
&nbsp;&nbsp;·&nbsp;&nbsp;
<a href="./docs">Docs</a>
&nbsp;&nbsp;·&nbsp;&nbsp;
<a href="./CONTRIBUTING.md">Contribute</a>
</p>

<p align="center">
<a href="https://github.com/OpenCodeIntel/opencodeintel/actions/workflows/ci.yml">
<img src="https://github.com/OpenCodeIntel/opencodeintel/actions/workflows/ci.yml/badge.svg" alt="CI Status" />
<img src="https://github.com/OpenCodeIntel/opencodeintel/actions/workflows/ci.yml/badge.svg" alt="CI" />
</a>
<a href="https://github.com/OpenCodeIntel/opencodeintel/blob/main/LICENSE">
<img src="https://img.shields.io/github/license/OpenCodeIntel/opencodeintel" alt="License" />
</a>
<a href="https://github.com/OpenCodeIntel/opencodeintel/releases">
<img src="https://img.shields.io/github/v/release/OpenCodeIntel/opencodeintel?include_prereleases" alt="Release" />
<a href="https://github.com/OpenCodeIntel/opencodeintel/stargazers">
<img src="https://img.shields.io/github/stars/OpenCodeIntel/opencodeintel?style=social" alt="Stars" />
</a>
</p>

<br/>

<p align="center">
<a href="#quick-start">Quick Start</a> •
<a href="./docs/deployment.md">Docs</a> •
<a href="./CONTRIBUTING.md">Contributing</a>
<img src="docs/assets/hero.png" alt="OpenCodeIntel Demo" width="800" />
</p>

---

You know that mass of code you inherited? The one where you spend 20 minutes grep-ing just to find where authentication happens? Where you're scared to change anything because you don't know what might break?
## The Problem

You know the feeling. Day one on a new codebase. Deadline in two weeks.

**OpenCodeIntel fixes that.**
You need to find "where authentication happens" but the function is called `validateSessionToken()`. Grep for "auth" and you get nothing. You spend 20 minutes clicking through files, afraid to touch anything because you don't know what might break.

Search your code by what it *does*, not what it's named. Ask for "error handling" and find it—even when the function is called `processFailure()`.
Traditional code search matches text, not meaning. You have to already know what you're looking for to find it.

<!-- Demo screenshot placeholder -->
<!-- <p align="center">
<img src="docs/assets/demo.png" alt="OpenCodeIntel Demo" width="800" />
</p> -->
---

## See it in action
## The Solution

| You search for... | It finds... |
|-------------------|-------------|
| `"authentication logic"` | `validateJWT()`, `checkSession()`, `authMiddleware.ts` |
| `"where we handle payments"` | `stripe/checkout.ts`, `processRefund()`, `PaymentService` |
| `"error handling"` | `processFailure()`, `onError()`, `catch` blocks across the codebase |
OpenCodeIntel understands your code the way you do. Search by what code *does*, not what it's named.

```text
You search: "authentication logic"
It finds: validateSessionToken(), checkJWT(), authMiddleware.ts
```

```text
You search: "where we handle payments"
It finds: stripe/checkout.ts, processRefund(), PaymentService
```

```text
You search: "error handling"
It finds: catch blocks, onError(), processFailure()
```

No regex. No exact matches. Just describe what you're looking for.

## What else?
---

## Features

### Semantic Code Search
Search by meaning, not keywords. Find that function even when you don't know its name.

**Dependency Graph** — See how your files connect. One glance shows you the architecture.
### Dependency Graph
Visualize how your files connect. Understand the architecture at a glance.

**Impact Analysis** — About to change `auth.ts`? Know exactly what breaks before you touch it.
### Impact Analysis
About to change `auth.ts`? Know exactly what breaks before you touch it.

**Code Style** — Understand your team's patterns. snake_case or camelCase? How are errors handled?
### Code Style Intelligence
Understand your team's patterns. snake_case or camelCase? How are errors handled? Match conventions instantly.

**Works with Claude** — Connects as an MCP server. Your AI assistant finally understands your codebase.
### Works with Claude (MCP)
Connect as an MCP server. Your AI assistant gets real context about your codebase, not just the file you have open.

---

## Quick Start

### Hosted (Fastest)

Go to [opencodeintel.com](https://opencodeintel.com), connect your GitHub, and start searching in under a minute.

### Self-Hosted

```bash
git clone https://github.com/OpenCodeIntel/opencodeintel.git
cd opencodeintel

cp .env.example .env
# Add your API keys
# Add your OpenAI + Pinecone API keys

docker compose up -d
```

Open http://localhost:3000. That's it.
Open [localhost:3000](http://localhost:3000). Done.

<details>
<summary><strong>Manual setup (without Docker)</strong></summary>

**Requirements:** Python 3.11+, Node.js 20+
**Requirements:** Python 3.11+, Node.js 20+, Redis

```bash
# Backend
cd backend
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
python main.py

# Frontend (new terminal)
Expand All @@ -95,7 +133,7 @@ npm install && npm run dev
<details>
<summary><strong>Connect to Claude Desktop (MCP)</strong></summary>

Add to your Claude Desktop config:
Add to your Claude Desktop config (`~/Library/Application Support/Claude/claude_desktop_config.json`):

```json
{
Expand All @@ -112,38 +150,89 @@ Add to your Claude Desktop config:
}
```

See [full MCP setup guide](./docs/mcp-setup.md).
See [full MCP setup guide](./docs/mcp-setup.md)

</details>

---

## Why I Built This

I got tired of grep.

Every time I joined a new project or inherited a codebase, I spent hours just figuring out where things lived. The original authors were gone. The docs were outdated. And I was scared to change anything because I couldn't see what depended on what.

I wanted code search that actually understood what code does. Not pattern matching on text. Something that could answer "where do we handle user sessions?" without me already knowing the answer.

OpenCodeIntel is the tool I wish I had. It's open source because I think every developer deserves to understand their code, not just those at companies with dedicated platform teams.

---

## Architecture

```
```text
┌─────────────────────────────────────────┐
│ Frontend (React)
│ Frontend (React + Vite)
└─────────────────┬───────────────────────┘
┌─────────────────▼───────────────────────┐
│ Backend (FastAPI) │
│ • Semantic indexing with OpenAI │
│ • Dependency graph analysis │
│ • Real-time WebSocket updates │
└───────┬─────────┬─────────┬─────────────┘
│ │ │
┌────▼───┐ ┌───▼────┐ ┌──▼───┐
│Pinecone│ │Supabase│ │Redis │
│vectors │ │database│ │cache │
│vectors │ │metadata│ │cache │
└────────┘ └────────┘ └──────┘
```

## Docs
---

## Roadmap

- [x] Semantic code search
- [x] GitHub OAuth integration
- [x] Dependency graph visualization
- [x] Impact analysis
- [x] MCP server for Claude
- [ ] VS Code extension
- [ ] Team workspaces
- [ ] Self-hosted Ollama support (no OpenAI required)
- [ ] GitLab / Bitbucket support

- [Docker Quickstart](./docs/docker-quickstart.md) — Running in 5 minutes
- [Deployment Guide](./docs/deployment.md) — Production setup
- [MCP Integration](./docs/mcp-setup.md) — Claude Desktop setup
- [Troubleshooting](./docs/docker-troubleshooting.md) — Common fixes
Want to influence the roadmap? [Open an issue](https://github.com/OpenCodeIntel/opencodeintel/issues).

---

## Contributing

We'd love your help. See [CONTRIBUTING.md](./CONTRIBUTING.md).
Found a bug? [Open an issue](https://github.com/OpenCodeIntel/opencodeintel/issues/new?template=bug_report.yml)

Have an idea? [Request a feature](https://github.com/OpenCodeIntel/opencodeintel/issues/new?template=feature_request.yml)

Want to contribute code? See [CONTRIBUTING.md](./CONTRIBUTING.md)

---

## Documentation

- [Docker Quickstart](./docs/docker-quickstart.md)
- [Deployment Guide](./docs/deployment.md)
- [MCP Integration](./docs/mcp-setup.md)
- [Troubleshooting](./docs/docker-troubleshooting.md)

---

## License

[MIT](./LICENSE)

---

<p align="center">
<a href="https://opencodeintel.com">Website</a>
&nbsp;&nbsp;·&nbsp;&nbsp;
<a href="https://github.com/OpenCodeIntel/opencodeintel">GitHub</a>
</p>
Binary file added docs/assets/OpenCodeIntel_Fav.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/hero.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
7 changes: 5 additions & 2 deletions frontend/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,15 @@
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<link rel="icon" type="image/png" href="/favicon.png" />
<link rel="apple-touch-icon" href="/favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Stop feeling lost in unfamiliar codebases. Semantic code search powered by AI." />
<meta name="theme-color" content="#0a0a0f" />
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
<title>CodeIntel - MCP Codebase Intelligence</title>
<title>OpenCodeIntel – Understand Any Codebase</title>
</head>
<body>
<div id="root"></div>
Expand Down
Binary file added frontend/public/favicon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 0 additions & 1 deletion frontend/public/vite.svg

This file was deleted.

9 changes: 5 additions & 4 deletions frontend/src/components/dashboard/TopNav.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,12 @@ export function TopNav({ onToggleSidebar, sidebarCollapsed, onOpenCommandPalette
</button>

<Link to="/dashboard" className="flex items-center gap-3">
<div className="w-8 h-8 rounded-lg bg-primary flex items-center justify-center">
<span className="text-primary-foreground font-bold text-xs">OCI</span>
</div>
<img
src="/favicon.png"
alt="OpenCodeIntel"
className="w-8 h-8 rounded-lg"
/>
<span className="font-semibold text-foreground hidden sm:block">OpenCodeIntel</span>
<span className="text-xs text-muted-foreground hidden md:block">MCP Server</span>
</Link>
</div>

Expand Down
8 changes: 5 additions & 3 deletions frontend/src/components/landing/Navbar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,11 @@ export function Navbar({ minimal }: NavbarProps) {
<div className="max-w-6xl mx-auto px-4 sm:px-6 py-4 flex items-center justify-between">
{/* Logo */}
<a href="/" className="flex items-center gap-2.5 group">
<div className="w-8 h-8 rounded-lg bg-gradient-to-br from-accent to-blue-600 flex items-center justify-center shadow-lg shadow-accent/20">
<span className="text-white font-bold text-xs">OCI</span>
</div>
<img
src="/favicon.png"
alt="OpenCodeIntel"
className="w-8 h-8 rounded-lg"
/>
<span className="font-semibold text-foreground">OpenCodeIntel</span>
</a>

Expand Down
8 changes: 5 additions & 3 deletions frontend/src/pages/Playground.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -98,9 +98,11 @@ export function Playground({ onSignupClick }: PlaygroundProps) {
<nav className="border-b border-gray-100 bg-white/80 backdrop-blur-sm sticky top-0 z-50">
<div className="max-w-6xl mx-auto px-6 h-14 flex items-center justify-between">
<div className="flex items-center gap-2">
<div className="w-7 h-7 rounded-lg bg-blue-600 flex items-center justify-center">
<span className="text-white font-bold text-xs">CI</span>
</div>
<img
src="/favicon.png"
alt="OpenCodeIntel"
className="w-7 h-7 rounded-lg"
/>
<span className="font-semibold text-gray-900">OpenCodeIntel</span>
</div>
<div className="flex items-center gap-3">
Expand Down