MCPcopy Index your code
hub / github.com/Eshaan-Nair/ArcRift

github.com/Eshaan-Nair/ArcRift @v1.6.3

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.6.3 ↗ · + Follow
389 symbols 969 edges 107 files 8 documented · 2%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

ArcRift — Persistent Memory for AI Coding Tools

Your AI forgets everything between sessions. ArcRift fixes that.

Memory saved in a browser chat is instantly available in your coding tool, and vice versa.

A local-first memory layer that captures your conversations, builds a searchable knowledge graph, and automatically injects the right context into every new prompt — no cloud, no subscriptions, no re-explaining yourself.

Stars Forks Issues Version License: MIT

Browser Extension: Claude · ChatGPT · Gemini · DeepSeek · Grok · Copilot · Mistral

MCP (AI Coding Tools): Claude Code · Cursor · Windsurf · Claude Desktop

https://github.com/user-attachments/assets/f77a865a-cee9-4f7c-b0fa-4fb4d1cee7be

Youtube Link

The Demo only showcases the main function of ArcRift, there are a lot of features for you to Explore!

One Command Setup

npx arcrift-setup

Historical NPM Downloads (Legacy Brands)

Due to rebranding, the total historical download count is split across our three NPM packages:

Package Name Downloads
arcrift-setup (Current) Downloads
glia-ai-setup (Legacy) Downloads
synq-setup (Legacy) Downloads

The Problem

You are deep in a complex project. You have had 30 conversations with Claude about your auth flow, database schema, and deployment strategy. You open a new chat — and it is all gone. You spend 10 minutes re-explaining context you have already covered, and the AI gives you advice that contradicts decisions you made two weeks ago.

ArcRift stops the cycle. It captures your AI conversations, extracts structured facts into a knowledge graph, embeds them as searchable vectors, and automatically prepends the most relevant context to every new prompt — before you even finish typing.


Table of Contents


Installation

For Users (The Easy Way)

[!IMPORTANT] ArcRift is a powerful AI developer tool. Before installing the .exe, you must have Node.js and Ollama installed on your computer to run the backend and local AI models. If you don't have these, use the Developer (One-Command Setup) below to automatically install them!

  1. Head over to the Releases page.
  2. Download the latest ArcRift_Installer.exe (or your OS equivalent).
  3. Double-click the installer to install ArcRift on your machine.
  4. Launch ArcRift from your Start menu! The app will live entirely in your system tray and run seamlessly in the background.

For Developers (Building from Source)

If you want to modify the code, build the project yourself, or use the MCP Tools:

1. One-Command Setup (All Platforms)

npx arcrift-setup

This clones the repo, checks dependencies, pulls Ollama models, installs packages, and builds the backend.

2. Launching the Development Server To launch the native desktop application in dev mode:

npm run dev:desktop

This will start the backend seamlessly in the background and open the native ArcRift dashboard. When you close the window, it will minimize to your system tray. You can fully quit ArcRift from the tray menu.

Web Extension Setup

The extension requires the ArcRift backend to be running. If you have the ArcRift Desktop App running in your system tray, you are already good to go!

Step 1 — Install the Extension

For Google Chrome / Edge / Brave: 1. Download the Chrome .zip file from the GitHub Releases page. 2. Extract the .zip file to a permanent folder on your computer. 3. Open chrome://extensions 4. Enable Developer mode (top-right toggle) 5. Click Load unpacked and select the folder you just extracted. 6. The ArcRift icon will appear in your toolbar!

For Mozilla Firefox: 1. Download the officially signed .xpi file from the GitHub Releases page. 2. Simply drag and drop the .xpi file directly into your open Firefox window. 3. Click Add when prompted. It will be installed permanently!

Step 2 — Use it

Navigate to Claude, ChatGPT, Gemini, DeepSeek, Grok, Copilot, or Mistral. Click the ArcRift popup, enter a project name, and click Save Chat. Auto-connect activates immediately.


MCP Server Setup

The MCP server runs as a separate process and communicates with AI coding tools over stdio. The backend does not need to be running as an HTTP server — the MCP server initializes its own storage connection.

Step 1 — Build the backend

cd backend
npm install
npm run build

This produces backend/dist/mcp/server.js.

Step 2 — Generate your config (easiest)

cd backend
npm run mcp:config

This prints a pre-formatted JSON block with absolute paths resolved for your machine. Copy it directly into your tool's config file.

Step 3 — Add to your AI tool

Claude Desktop%APPDATA%\Claude\claude_desktop_config.json (Windows) or ~/.claude/claude_desktop_config.json (macOS):

{
  "mcpServers": {
    "arcrift": {
      "command": "node",
      "args": ["C:/path/to/ARCRIFT/backend/dist/mcp/server.js"]
    }
  }
}

Claude Code — run in your project directory:

claude mcp add ArcRift node /path/to/ARCRIFT/backend/dist/mcp/server.js

Cursor — create .cursor/mcp.json in your project root:

{
  "mcpServers": {
    "arcrift": {
      "command": "node",
      "args": ["/path/to/ARCRIFT/backend/dist/mcp/server.js"]
    }
  }
}

Windsurf — create .windsurf/mcp.json in your project root:

{
  "mcpServers": {
    "arcrift": {
      "command": "node",
      "args": ["/path/to/ARCRIFT/backend/dist/mcp/server.js"]
    }
  }
}

Use forward slashes in all paths, even on Windows. Restart your AI tool after editing the config.

Step 4 — Set the storage mode

The MCP server reads backend/.env. Make sure it contains:

ARCRIFT_STORAGE_MODE=sqlite
OLLAMA_URL=http://localhost:11434

Ollama must be running for the MCP server to generate embeddings and extract knowledge graph triples.


Running Both Together

When running the browser extension and MCP server together, they share the same ArcRift.db database. No extra configuration is needed.

  1. Start the HTTP backend: start.bat or ./start.sh
  2. Load the extension in Chrome (it talks to http://localhost:3001)
  3. Your AI coding tool starts the MCP server automatically when you open a project

Memory saved via the extension is immediately available in recall_context, and memory stored via store_memory appears in the dashboard history. They are the same database.

The HTTP backend and MCP server both use WAL mode on SQLite, which allows them to read and write concurrently without locking each other out.


Usage Guide

Using the Browser Extension

Saving a conversation: 1. Have a conversation on any supported platform 2. Click the ArcRift icon in the Chrome toolbar 3. Enter a project name (e.g. AuthService, MyApp-Backend) 4. Click Save Chat

ArcRift scrubs PII, chunks the text, embeds it locally with Ollama, and sends it to the backend. The UI confirms success in under 5 seconds. Background indexing (sentence-level embeddings, knowledge graph extraction) continues asynchronously.

Auto-connect:

Once a session is saved and activated, ArcRift intercepts every prompt you type on that platform. Before the request is sent, it queries the backend for relevant context and prepends the top results. You do not need to do anything — just type normally.

To pause: click the ArcRift popup and hit Pause. The badge dims. Click again to resume.

New chat detection:

When you click "New Chat" on ChatGPT, Claude.ai, or Gemini, ArcRift detects the URL or DOM change and resets the active session. The next Save will start a fresh project, and context from the previous session will not bleed in.

Classic inject:

For a one-time context push without enabling auto-connect, click Inject Context in the popup. ArcRift pastes the knowledge graph summary directly into the chat input field. You review it and send manually.


Using the MCP Tools

Once connected, your coding agent has access to seven ArcRift tools. A typical session looks like this:

At session start — recall project memory:

Use recall_context with prompt: "implementing JWT refresh token rotation"
and project: "AuthService"

After completing work — save decisions:

Use store_memory with content: "We implemented refresh token rotation using
Redis for token invalidation. The key insight was using a sliding expiry window
of 15 minutes for access tokens and 7 days for refresh tokens." and project: "AuthService"

Finding something from a different project:

Use search_memory with query: "rate limiting strategy"

Getting an overview before starting:

Use get_project_summary for project: "AuthService"

Auto-detecting the current project:

Use identify_active_project with path: "/Users/me/code/auth-service"

Correcting outdated information:

Use prune_memory with prompt: "Redis rate limiting" and project: "AuthService"

Dashboard

Open http://localhost:3001 while the backend is running.

Tab What you see
Graph D3.js force-directed knowledge graph. Nodes are entities, edges are relations. Degree-scaled sizing — high-connectivity nodes appear larger. Hover for details, scroll to zoom, drag to reposition.
History All extracted triples (subject / relation / object) with timestamps. Filterable by project and relation type.
Chat The full saved conversation rendered as color-coded chat bubbles, with platform attribution.
Job Queue Live view of background indexing jobs — pending, processing, completed, dead-lettered.

System Requirements

Mode Min RAM Disk Docker What runs
SQLite (Recommended) 2 GB 3 GB Not required All features — single .db file + Ollama
Full Docker 8 GB 15 GB Required Neo4j + MongoDB + ChromaDB + Ollama
Lite Docker 4 GB 10 GB Required MongoDB + ChromaDB (no knowledge graph)

SQLite mode is the recommended default. The installer detects Docker automatically and sets SQLite mode if Docker is not available.

Prerequisites

Requirement Version Notes
Node.js 20 LTS+ nodejs.org
Ollama Latest ollama.com — required for local embeddings and extraction
Docker Desktop 24.0+ docker.com — only needed for Docker mode
Groq API Key console.groq.com — free, used as fallback if Ollama is slow

Key Features

Core Retrieval Engine

Feature Detail
Three-Layer Hybrid Search Sentence vectors, chunk vectors, and FTS5 keyword search run in parallel. Results are fused and ranked by a combined score.
Surgical Sentence Trimming Chunks are split into individual sentences at index time. On retrieval, only the sentences that directly match the query are returned — not the entire surrounding paragraph. Reduces prompt noise by up to 95%.
HyDE (Hypothetical Document Embedding) Before querying the vector store, ArcRift generates a hypothetical answer to your query and uses that embedding alongside the raw query. This dramatically improves recall for rephrased or indirect questions.
Small-to-Big Retrieval High-precision sentence match triggers fetching the parent chunk for broader context. Precision of a

Extension points exported contracts — how you extend this code

ISessionStore (Interface)
(no doc) [4 implementers]
backend/src/services/storage.types.ts
RetrievedChunk (Interface)
(no doc)
backend/tests/unit/rag.test.ts
Session (Interface)
(no doc)
dashboard/src/types/index.ts
SessionData (Interface)
(no doc)
extension/popup/popup.ts
IGraphStore (Interface)
(no doc) [4 implementers]
backend/src/services/storage.types.ts
Triple (Interface)
(no doc)
dashboard/src/types/index.ts
IVectorStore (Interface)
(no doc) [4 implementers]
backend/src/services/storage.types.ts
Node (Interface)
(no doc)
dashboard/src/types/index.ts

Core symbols most depended-on inside this repo

slidingWindowChunks
called by 24
backend/src/services/chunker.ts
setStatus
called by 21
extension/popup/popup.ts
showToast
called by 20
extension/src/content.ts
isValidObjectId
called by 18
backend/src/utils/validators.ts
scrubPII
called by 17
backend/src/utils/privacy.ts
getSession
called by 17
backend/src/services/storage.types.ts
createSession
called by 11
backend/src/services/storage.types.ts
updateSession
called by 11
backend/src/services/storage.types.ts

Shape

Function 223
Method 121
Interface 33
Class 12

Languages

TypeScript99%
Rust1%

Modules by API surface

backend/src/services/storage.ts48 symbols
backend/src/services/storage.types.ts47 symbols
backend/src/services/sqlite-session.ts24 symbols
extension/src/content.ts21 symbols
backend/src/services/extractor.ts20 symbols
extension/src/background.ts19 symbols
dashboard/src/api/ArcRift.ts14 symbols
backend/src/services/sqlite-vector.ts14 symbols
extension/popup/popup.ts12 symbols
backend/src/services/sqlite-graph.ts12 symbols
backend/src/services/jobs.ts11 symbols
dashboard/src/components/GraphView.tsx8 symbols

Datastores touched

ActiveSessionCollection · 1 repos
FullChatCollection · 1 repos
JobCollection · 1 repos
SessionCollection · 1 repos
(mongodb)Database · 1 repos
arcriftdbDatabase · 1 repos
mydbDatabase · 1 repos
(mysql)Database · 1 repos

For agents

$ claude mcp add ArcRift \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact