MCPcopy Index your code
hub / github.com/OpenDCAI/OpenPrism

github.com/OpenDCAI/OpenPrism @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
475 symbols 1,250 edges 62 files 23 documented · 5%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

OpenPrism Logo

OpenPrism

OpenPrism — Vibe Writing for Academia

Node.js Version License GitHub Stars GitHub Forks GitHub Issues GitHub Pull Requests

中文 | English


✨ Highlights

🤖 AI Assistant ✍️ Compile & Preview 📚 Templates
Chat / Agent history

Tools multi-step edits | TexLive / Tectonic / Auto

PDF preview & download | ACL / CVPR / NeurIPS / ICML

One-click conversion |

🔄 Template Transfer
Legacy (LaTeX→LaTeX) / MinerU (PDF→MD→LaTeX)

LLM-powered migration + auto compile fix + VLM layout check | | |

🔧 Advanced Editing 🗂️ Project Management ⚙️ Configuration
AI autocomplete / Diff / diagnose Multi-project + file tree + upload OpenAI-compatible endpoint

Local-first privacy |

🔍 Search 📊 Charting 🧠 Recognition
WebSearch / PaperSearch Chart from tables Formula/Chart recognition
👥 Collaboration 📝 Peer Review
Multi-user real-time editing

Cursor sync & online management | AI Review Report / Consistency

Missing Citations / Compile Summary | |


Quickstart Features Contributing WeChat

📢 News

[!WARNING] 🚧 Template Transfer is under testing

The Template Transfer feature is currently in beta and may contain known or unknown bugs. If you encounter any issues, please report them via Issues.

[!TIP] 🆕 2025-02 · Template Transfer (Dual Mode)

Two transfer modes are now available: Legacy mode (LaTeX→LaTeX direct migration) and MinerU mode (PDF→Markdown→LaTeX via MinerU API). Both modes feature LLM-powered content migration, automatic compile error fixing, and optional VLM-based layout checking.

[!TIP] 🆕 2025-02 · Real-time Collaboration

Multi-user simultaneous editing is now available, powered by CRDT with automatic conflict resolution and cursor sync. Current version requires a server with a public IP; invite remote collaborators via token-based links.


OpenPrism Home

✨ Home preview: three-panel workspace + editor + preview


✨ Core Features

OpenPrism is a local-first LaTeX + AI workspace for academic writing, optimized for fast editing, controlled changes, and privacy.

🤖 AI Assistant

  • Chat mode: read-only Q&A
  • Agent mode: generate diffs for confirmation
  • Tools mode: multi-step tools + multi-file edits
  • Tasks: polish, rewrite, restructure, translate, custom
  • Autocomplete: Option/Alt + / or Cmd/Ctrl + Space, Tab to accept

✍️ Compile & Preview

  • Engines: TexLive / Tectonic / Auto fallback
  • Preview toolbar: zoom, fit width, 100%, download PDF
  • Compile log: error parsing + one-click diagnose + jump to error
  • Views: PDF / Figures / Diff

📚 Template System

  • Built-ins: ACL / CVPR / NeurIPS / ICML
  • Conversion: one-click template switch with content preserved

🔄 Template Transfer

  • Dual mode: Legacy (LaTeX→LaTeX) and MinerU (PDF→Markdown→LaTeX)
  • MinerU integration: parse PDF via MinerU API, extract Markdown + images, then fill into target template
  • LLM-powered migration: AI analyzes source/target structure, drafts transfer plan, and applies content mapping
  • Auto compile fix: automatically detect and fix LaTeX compilation errors with retry loop
  • VLM layout check: optional visual layout validation using VLM to detect overflow, overlap, and spacing issues
  • Asset handling: automatic copy of images, bib files, and style files from source to target

🗂️ Project Management

  • Projects panel: manage multiple projects
  • File tree: create/rename/delete/upload/drag
  • BibTeX: quick create references.bib

⚙️ Configuration

  • LLM Endpoint: OpenAI-compatible, supports custom base_url
  • Local storage: settings saved to browser localStorage
  • TexLive config: customizable TexLive resources
  • Language switch: toggle 中文/English in the top bar

🔍 Search & Reading

  • WebSearch: online search with summaries
  • PaperSearch: academic paper search with citation info

📊 Charts & Recognition

  • Table-to-chart: generate charts directly from tables
  • Smart recognition: formulas and charts auto-detected

📝 Peer Review

  • AI Quality Check: automated paper quality assessment
  • Full Review Report: generate detailed reviewer-style review comments
  • Consistency Check: terminology and symbol consistency detection
  • Missing Citations: find statements that need citations
  • Compile Log Summary: summarize compile errors and fix suggestions

👥 Real-time Collaboration

  • Multi-user editing: multiple users edit the same document simultaneously with real-time sync
  • Cursor & selection sync: each user's cursor displayed in a distinct color, visible in real time
  • Online user list: collaboration panel shows currently connected users and their status
  • Invite to collaborate: invite others via link or token to join the editing session

🎨 Showcase

🖥️ Three-Panel Workspace

Three-panel workspace

✨ AI Assistant | LaTeX Editor | PDF Preview

✍️ Editor View

Editor view

✨ Synchronized editing and preview

🤖 Agent Mode

Agent mode

✨ Generate diff suggestions for review

🧪 One-Click Diagnose

One-click diagnose

✨ Parse compile errors and jump to locations

🌐 WebSearch

WebSearch

✨ Online search with concise summaries

📄 PaperSearch

PaperSearch

✨ Academic search and citation info

📊 Table-to-Chart

Chart generation

✨ Turn tables into charts in one step

🧠 Formula/Chart Recognition

Formula recognition

✨ Recognize structures for editable outputs

🔧 AI Autocomplete

AI autocomplete

✨ Option/Alt + / to trigger, Tab to accept

📝 Peer Review

Peer Review

✨ AI Quality Check: Review Report / Consistency Check / Missing Citations / Compile Summary

👥 Real-time Collaboration

Real-time Collaboration

✨ Multi-user real-time collaborative editing with cursor sync and online user management


🚀 Quick Start

📋 Requirements

Basic Environment

  • Node.js >= 18.0.0
  • npm >= 9.0.0
  • OS: Windows / macOS / Linux

LaTeX Compilation Environment (Required)

OpenPrism requires a LaTeX engine to generate PDFs. Choose one of the following options based on your OS:

Option 1: TexLive (Recommended) - Linux (Ubuntu/Debian): bash sudo apt-get update sudo apt-get install texlive-full - Linux (CentOS/RHEL): bash sudo yum install texlive texlive-* - macOS: bash brew install --cask mactex - Windows: Download TexLive installer

Option 2: Tectonic (Lightweight) - Linux/macOS: bash curl --proto '=https' --tlsv1.2 -fsSL https://drop-sh.fullyjustified.net | sh - Windows: Download Tectonic installer

Note: TexLive full installation is ~5-7GB, Tectonic is lighter but with fewer features. TexLive is recommended for Linux servers.

📦 Install & Run

Development Deployment

# 1. Clone repository
git clone https://github.com/OpenDCAI/OpenPrism.git
cd OpenPrism

# 2. Install dependencies
npm install

# 3. Start dev server (frontend + backend)
npm run dev

Access: - Frontend: http://localhost:5173 - Backend: http://localhost:8787

Production Deployment

# 1. Build frontend and backend
npm run build

# 2. Start production server
npm start

Complete Linux Server Deployment Example

# 1. Install Node.js (Ubuntu example)
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs

# 2. Install TexLive
sudo apt-get update
sudo apt-get install -y texlive-full

# 3. Verify installation
node --version  # Should show >= 18.0.0
pdflatex --version  # Should show TexLive version

# 4. Clone and deploy project
git clone https://github.com/OpenDCAI/OpenPrism.git
cd OpenPrism
npm install
npm run build

# 5. Configure environment variables (optional)
cat > .env << EOF
OPENPRISM_LLM_ENDPOINT=https://api.openai.com/v1/chat/completions
OPENPRISM_LLM_API_KEY=your-api-key
OPENPRISM_LLM_MODEL=gpt-4o-mini
OPENPRISM_DATA_DIR=/var/openprism/data
PORT=8787
EOF

# 6. Start service
npm start

# 7. Use PM2 for process management (recommended)
sudo npm install -g pm2
pm2 start npm --name "openprism" -- start
pm2 save
pm2 startup

⚙️ Configuration

Environment Variables

Create a .env file in the project root (optional):

# LLM Configuration
OPENPRISM_LLM_ENDPOINT=https://api.openai.com/v1/chat/completions
OPENPRISM_LLM_API_KEY=your-api-key
OPENPRISM_LLM_MODEL=gpt-4o-mini

# Data storage path
OPENPRISM_DATA_DIR=./data

# Backend service port
PORT=8787

# MinerU API Configuration (for PDF→MD→LaTeX transfer)
OPENPRISM_MINERU_API_BASE=https://mineru.net/api/v4
OPENPRISM_MINERU_TOKEN=your-mineru-token

LLM Configuration

OpenPrism supports any OpenAI-compatible endpoint, including custom base_url:

Method 1: Environment Variables

# .env file
OPENPRISM_LLM_ENDPOINT=https://api.openai.com/v1/chat/completions
OPENPRISM_LLM_API_KEY=sk-your-api-key
OPENPRISM_LLM_MODEL=gpt-4o-mini

Method 2: Frontend Settings Panel - Click the "Settings" button in the frontend interface - Fill in API Endpoint, API Key, and Model - Configuration is automatically saved to browser localStorage

Model Configuration Settings

✨ LLM Configuration Settings Panel

Supported Third-party Services: - OpenAI: https://api.openai.com/v1 - Azure OpenAI: https://your-resource.openai.azure.com/openai/deployments/your-deployment - Other compatible services: https://api.apiyi.com/v1

LaTeX Compilation Configuration

Supported Compilation Engines: - pdflatex - Standard LaTeX engine - xelatex - Supports Unicode and Chinese - lualatex - Supports Lua scripting - latexmk - Automated build tool - tectonic - Modern lightweight engine

Configuration Method: 1. Select compilation engine in frontend "Settings" panel 2. Set to "Auto" for automatic fallback to available engines 3. Customize TexLive resource path

Data Storage Configuration

Default data storage is in ./data directory, can be modified via environment variable:

# Custom data directory
OPENPRISM_DATA_DIR=/var/openprism/data

Directory Structure:

data/
├── projects/           # User projects
│   ├── project-1/
│   │   ├── main.tex
│   │   └── references.bib
│   └── project-2/
└── templates/          # Template cache

👥 Collaboration Guide

OpenPrism includes a built-in real-time collaboration system based on CRDT (Yjs) + WebSocket, allowing multiple users to edit the same document simultaneously without any third-party service.

Collaboration Environment Variables

Add the following to your .env file:

# Token signing secret (must change for production)
OPENPRISM_COLLAB_TOKEN_SECRET=your-secure-random-string

# Require token for collaboration (default: true, set false for local dev)
OPENPRISM_COLLAB_REQUIRE_TOKEN=true

# Token TTL in seconds (default: 86400 = 24 hours)
OPENPRISM_COLLAB_TOKEN_TTL=86400

How to Use

  1. Deploy: Deploy

Extension points exported contracts — how you extend this code

AgentResponse (Interface)
(no doc)
packages/shared/types.ts
CompileOutcome (Interface)
(no doc)
apps/frontend/src/latex/engine.ts
TransferPanelProps (Interface)
(no doc)
apps/frontend/src/app/TransferPanel.tsx
Message (Interface)
(no doc)
apps/frontend/src/app/EditorPage.tsx
WebsearchItem (Interface)
(no doc)
apps/frontend/src/app/EditorPage.tsx
PendingChange (Interface)
(no doc)
apps/frontend/src/app/EditorPage.tsx

Core symbols most depended-on inside this repo

t
called by 591
apps/backend/src/i18n/index.js
ensureDir
called by 41
apps/backend/src/utils/fsUtils.js
getProjectRoot
called by 33
apps/backend/src/services/projectService.js
request
called by 32
apps/frontend/src/api/client.ts
safeJoin
called by 31
apps/backend/src/utils/pathUtils.js
appendLog
called by 23
apps/frontend/src/app/EditorPage.tsx
insertAtCursor
called by 19
apps/frontend/src/app/EditorPage.tsx
readJson
called by 16
apps/backend/src/utils/fsUtils.js

Shape

Function 437
Interface 19
Method 13
Class 6

Languages

TypeScript100%

Modules by API surface

apps/frontend/public/latex/swiftlatexpdftex.js134 symbols
apps/frontend/src/app/EditorPage.tsx112 symbols
apps/frontend/src/api/client.ts59 symbols
apps/frontend/src/app/ProjectPage.tsx19 symbols
apps/backend/src/services/mineruService.js12 symbols
apps/frontend/src/collab/provider.ts10 symbols
apps/backend/src/services/collab/docStore.js10 symbols
apps/frontend/src/app/TransferPanel.tsx8 symbols
apps/backend/src/utils/fsUtils.js5 symbols
apps/backend/src/utils/authUtils.js5 symbols
apps/backend/src/services/tunnel.js5 symbols
apps/backend/src/services/transferAgent/utils.js5 symbols

For agents

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

⬇ download graph artifact