Plugged.in - Social platform for managing MCP servers. Multi-arch support (AMD64 + ARM64).
3.5K

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!
Content type
Image
Digest
sha256:05a411a6dโฆ
Size
131.6 MB
Last updated
10 months ago
docker pull veriteknik/pluggedin