AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
Universal Model Context Protocol gateway. One MCP proxy, every client (Cursor, Cline, ChatGPT, LM Studio, Windsurf, Claude Code), 2,700+ MCP servers, persistent memory, embedded RAG. Free, open source
개발 도구TypeScript · JavaScriptGitHub @VeriTeknik온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
The Crossroads for AI Data Exchanges. A unified, self-hostable web interface for discovering, configuring, and managing Model Context Protocol (MCP) servers—bringing together AI tools, workspaces, prompts, and logs from multiple MCP sources (Claude, Cursor, etc.) under one roof.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Turn your AI conversations into permanent organizational memory
🧩 Now Multi‑Arch Ready!
Plugged.in Docker images support both amd64 and arm64 architectures via a unified manifest.
🧭 v4.0.0 — Hubs, a hosted MCP connector, and a security pass:
Workspaces are Hubs now, one Workspace per Hub. /api/mcp serves a hosted connector behind an OAuth 2.1 server. Five reported advisories fixed and credited.README 전문 보기 ↗[!IMPORTANT] Project status (October 2026): open source, community-driven. plugged.in, the hosted service, is moving to a new, separately developed platform. After that move, this repository will no longer run plugged.in. The code stays open source under its current license, and the community is welcome to carry it on: issues, pull requests, forks and new maintainers are welcome, and self-hosting remains supported. The cutover date will be announced here. At the cutover, the current service moves to v1.plugged.in and keeps running there until December 31, 2026. What this means
Turn your AI conversations into permanent organizational memory
🚀 Get Started • 📚 Documentation • 🌟 Features • 💬 Community
amd64 and arm64 architectures via a unified manifest.
🧭 v4.0.0 — Hubs, a hosted MCP connector, and a security pass:
Workspaces are Hubs now, one Workspace per Hub. /api/mcp serves a hosted connector behind an OAuth 2.1 server. Five reported advisories fixed and credited.Every day, you have brilliant conversations with AI - strategy sessions with GPT-4, code reviews with Claude, analysis with Gemini. But when you close that chat window, all that knowledge vanishes. This is the "AI knowledge evaporation" problem.
plugged.in is the world's first AI Content Management System (AI-CMS) - a platform that transforms ephemeral AI interactions into persistent, versioned, and searchable organizational knowledge.
Think of it as "Git for AI-generated content" meets "WordPress for AI interactions".
Your AI conversations become permanent assets. Every document is versioned, attributed, and searchable.
Claude writes v1, GPT-4 adds technical specs in v2, Gemini refines in v3 - all tracked and attributed.
Works with 1,500+ MCP servers. Connect any tool, any AI, any workflow - all through one interface.
End-to-end encryption, OAuth 2.1, rate limiting, and sandboxed execution for your peace of mind.
Documents Managed: 90+ (72% AI-generated)
Integrated MCP Servers: 1,568
Active Versioning: Documents with up to 4 iterations
Model Attributions: 17 different AI models tracked
RAG Engine: Embedded zvec (RocksDB + HNSW) — zero external dependencies
Search Performance: Sub-second semantic search with cosine similarity
Security: AES-256-GCM encryption, Redis rate limiting
The default docker-compose.yml builds the app image from source (./Dockerfile) for your platform. There is intentionally no prebuilt self-host image: the embedded zvec vector engine needs build-time flags/bindings that a generic registry image can't carry, so the image is compiled locally with the right supportedArchitectures configuration.
The first
docker compose up --buildtakes roughly 10–15 minutes (installing dependencies +next build). Subsequent starts are instant — the image is cached. Requirements: Docker with BuildKit (Docker Desktop, ordocker buildx) and at least ~8 GB of memory allotted to the Docker engine —next buildis memory-hungry and will abort with "JavaScript heap out of memory" on smaller limits (raise it in Docker Desktop → Settings → Resources).
# Clone and setup
git clone https://github.com/VeriTeknik/pluggedin-app.git
cd pluggedin-app
cp .env.example .env
# Edit .env and set these three. Compose refuses to start without the last two,
# so there is no way to end up running with a password this repository knows.
# NEXTAUTH_SECRET=$(openssl rand -base64 32)
# POSTGRES_PASSWORD=$(openssl rand -hex 32)
# REDIS_PASSWORD=$(openssl rand -hex 32)
#
# Use hex (or another URL-safe value) for the last two: they are interpolated
# into a postgresql:// / redis:// URL, so @ : / ? # would corrupt it.
# Compose builds DATABASE_URL and REDIS_URL from them — leave those alone.
# Build the app image and start the full stack (PostgreSQL 18 + pgvector,
# Redis, one-shot migration, then the app):
docker compose up --build -d
# Follow startup (migration runs first, then the app becomes healthy):
docker compose logs -f pluggedin-app
# Visit http://localhost:12005
Useful commands:
docker compose ps # service status
docker compose run --rm pluggedin-migrate # re-run database migrations
docker compose down # stop (keeps data)
docker compose down -v # stop + wipe all volumes
Production / hosted deployments use a different file — this
docker-compose.ymlis the self-host default, not the production stack:
docker-compose.production.yml— pulls the prebuiltveriteknik/pluggedinimage (the hosted/cloud build)infra/docker-compose.yml— the Traefik + SOPS production stack used by plugged.in
What's included:
Docker Architecture:
Services:
- pluggedin-migrate: One-shot DB migration; reuses the app image, then exits
- pluggedin-app: Main web application (host port 12005 → container 3000),
starts only after migration completes successfully
- pluggedin-postgres: PostgreSQL 18 + pgvector database (port 5432)
- pluggedin-redis: Redis 7 (port 6379)
Volumes:
- pluggedin-postgres: Database data (persistent)
- pluggedin-redis: Redis append-only data (persistent)
- zvec-data: Vector collections (persistent)
- app-uploads: User uploaded files (persistent)
- app-logs: Application logs (persistent)
- mcp-cache: MCP package cache (persistent)
Upgrading from older versions:
# If upgrading from PostgreSQL 16 or earlier
# Option 1: Fresh start (data loss)
docker compose down -v && docker compose up --build -d
# Option 2: Migrate existing data
docker exec pluggedin-postgres pg_dump -U pluggedin pluggedin > backup.sql
docker compose down -v
docker compose up -d
docker exec -i pluggedin-postgres psql -U pluggedin -d pluggedin < backup.sql
Visit plugged.in for instant access - no installation required.
customer_context, last_analysis)plugged.in acts as the central hub connecting various AI clients, development tools, and programming languages with your knowledge base and the broader MCP ecosystem. The architecture is designed for maximum flexibility and extensibility.
The MCP Proxy serves as a unified gateway that aggregates multiple MCP servers into a single interface:
How it works: Each AI client connects via STDIO, receiving access to all your configured MCP servers through one connection. The proxy handles:
Direct programmatic access through official SDKs:
@pluggedin/sdk) - Full-featured SDK for Node.js and browserpluggedin-sdk) - Pythonic interface for AI workflowspluggedin-go) - High-performance Go implementationUse Cases:
// Create documents programmatically
const doc = await client.documents.create({
title: "API Analysis",
content: "...",
source: "api"
});
// Query RAG knowledge base
const results = await client.rag.query("How do we handle auth?");
The plugged.in web platform provides:
Knowledge Base (Embedded RAG)
Document Store
MCP Registry
Tools Management
Direct integrations bypassing the MCP Proxy for enhanced performance:
Why Native Connectors?
Persistent memory across sessions:
Example Workflow:
User Request Flow:
1. User asks question in Claude Desktop
2. MCP Proxy receives request
3. Proxy checks RAG for relevant context
4. Combines context + user question
5. Routes to appropriate MCP servers
6. Aggregates responses
7. Logs activity to database
8. Returns enriched response to user
Document Creation Flow:
1. AI generates document via SDK or user uploads PDF/text
2. Content processed, chunked, and sanitized
3. Model attribution recorded
4. Version created in Document Store
5. Chunks stored in PostgreSQL, embeddings indexed in zvec
6. Document searchable immediately via semantic search
All connections use:
The architecture supports:
Visit our comprehensive documentation at docs.plugged.in
Create a .env file with:
# Core (Required)
DATABASE_URL=postgresql://user:pass@localhost:5432/pluggedin
NEXTAUTH_URL=http://localhost:12005
NEXTAUTH_SECRET=your-secret-key # Generate: openssl rand -base64 32
# Security (Required)
NEXT_SERVER_ACTIONS_ENCRYPTION_KEY= # Generate: openssl rand -base64 32
# Features (Optional)
ENABLE_RAG=true
ENABLE_NOTIFICATIONS=true
ENABLE_EMAIL_VERIFICATION=true
REDIS_URL=redis://localhost:6379 # For Redis rate limiting
# RAG / Vector Search
ZVEC_DATA_PATH=./data/vectors # Path to zvec collection files
EMBEDDING_MODEL= # OpenAI model (default: text-embedding-3-small)
RAG_SEARCH_TOP_K=5 # Chunks returned per query
RAG_CACHE_TTL_MS=60000 # Storage stats cache TTL
# Email (For notifications)
EMAIL_SERVER_HOST=smtp.example.com
EMAIL_SERVER_PORT=587
[email protected]
# Install dependencies
pnpm install
# Setup database
pnpm db:migrate:auth
pnpm db:generate
pnpm db:migrate
# Build for production
NODE_ENV=production pnpm build
# Start the server
pnpm start
Connect your AI clients to plugged.in:
{
"mcpServers": {
"pluggedin": {
"command": "npx",
"args": ["-y", "@pluggedin/pluggedin-mcp-proxy@latest"],
"env": {
"PLUGGEDIN_API_KEY": "YOUR_API_KEY"
}
}
}
}
npx -y @pluggedin/pluggedin-mcp-proxy@latest --pluggedin-api-key YOUR_API_KEY
| Feature | plugged.in | Traditional AI Chat | MCP Clients Alone |
|---|---|---|---|
| Persistent Memory | ✅ Full versioning | ❌ Session only | ❌ No storage |
| Multi-Model Support | ✅ All models | ⚠️ Single vendor | ✅ Multiple |
| Document Management | ✅ Complete CMS | ❌ None | ❌ None |
| Attribution Tracking | ✅ Full audit trail | ❌ None | ❌ None |
| Team Collaboration | ✅ Built-in | ❌ None | ❌ Limited |
| Self-Hostable | ✅ Yes | ⚠️ Varies | ✅ Yes |
| RAG Integration | ✅ Native | ⚠️ Limited | ❌ None |
We love contributions! See our Contributing Guide for details.
# Fork the repo, then:
git clone https://github.com/YOUR_USERNAME/pluggedin-app.git
cd pluggedin-app
pnpm install
pnpm dev
MIT License - see LICENSE for details.
Built on top of these amazing projects:
Latest Release: v4.0.0 — Hubs, a hosted MCP connector, and a security pass
Major by Semantic Versioning: two features were removed and the data model under Hubs changed.
🧭 Workspaces are Hubs (Breaking Change)
mcp_servers.slug is untouched, so saved instructions naming {slug}__{tool} still resolve🔌 Hosted MCP connector
/api/mcp serves the connector, with an OAuth 2.1 authorization server in front of it🔒 Security
testMcpConnectionsafeFetch connects to the address it validated instead of re-resolving🐳 Deployment
infra/scripts/deploy.sh is the entry point — running compose by hand skips decryption🗑️ Removed
⚠️ Migration Notes
pnpm db:migrate after upgradingView the full changelog at GitHub Releases
Ready to give your AI permanent memory?
🚀 Start Now • ⭐ Star on GitHub
If this project inspires you, please ⭐ Star it —
stars power the community and keep development momentum alive!