Skip to content

rly09/syncmind

Repository files navigation

SyncMind

SyncMind is a production-ready Chrome extension for transferring AI conversations between Claude, ChatGPT, Gemini, and Perplexity. It extracts the active thread, compresses it into structured memory, and pastes a continuation prompt into the destination platform.

Features

  • Detects claude.ai, chatgpt.com, gemini.google.com, and perplexity.ai
  • Platform-specific DOM extractors for user and assistant messages
  • Code block extraction, duplicate removal, recent-message prioritization, relevance scoring, and token estimates
  • Structured memory JSON with project, goal, current problem, context, decisions, code context, pending tasks, preferences, and next prompt
  • Provider abstraction for OpenAI, Groq, Gemini, OpenRouter, plus local fallback
  • One-click transfer to supported platforms, copy structured context, and export JSON
  • Dark minimal popup, settings/onboarding page, and side panel memory view
  • Chrome MV3 with Plasmo, React, TypeScript, and TailwindCSS

Setup

npm install
npm run dev

Load the generated development extension from .plasmo/chrome-mv3-dev in chrome://extensions.

For a production build:

npm run build
npm run package

Provider Settings

Open the SyncMind settings page from the popup. Choose one of:

  • Local fallback: no API key required, lightweight heuristic compression
  • OpenAI: default gpt-4o-mini
  • Groq: default llama-3.1-70b-versatile
  • Gemini: default gemini-1.5-flash
  • OpenRouter: default openai/gpt-4o-mini

API keys are saved in chrome.storage.local. They are not hard-coded, bundled into source files, or exposed to page content scripts.

Architecture

src/
  background/   background request orchestration
  content/      platform extractors
  popup/        main popup UI
  sidepanel/    structured memory panel
  options/      onboarding and provider settings
  services/     compression, storage, export, tab transfer
  providers/    AI provider adapters
  utils/        platform, DOM, text, styling helpers
  hooks/        React data hooks
  types/        shared TypeScript contracts
contents/       Plasmo content script entry

Security Notes

  • Permissions are limited to activeTab, storage, scripting, tabs, and sidePanel
  • Host permissions are scoped to supported AI platforms and configured provider APIs
  • Extractors read text content and strip script/style/navigation/button clutter
  • Destination pages receive only the generated transfer prompt
  • API keys are read by extension pages/background services, not injected into web pages

Development Checks

npm run typecheck
npm run lint

DOM structures on AI platforms change often, so extractor selectors are intentionally layered. When a platform updates its UI, adjust the matching extractor in src/content/extractors.ts.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors