docs/plans/2026-03-08-repo-restructure-design.md
Date: 2026-03-08 Status: Approved Author: Algis Dumbris
MCPProxy personal and teams editions will be built from the same repository using Go build tags. No pkg/ migration needed. No separate repos.
go build ./cmd/mcpproxy → Personal edition (default)go build -tags server ./cmd/mcpproxy → Teams editioninternal/serveredition/ with //go:build server guardsinit() pattern/api/v1/statusmcpproxy-go/
├── cmd/mcpproxy/
│ ├── main.go ← shared entry point
│ └── teams_register.go ← //go:build server
├── internal/
│ ├── teams/ ← teams-only code (all build-tagged)
│ │ ├── auth/ ← OAuth authorization server
│ │ ├── providers/ ← Google, GitHub, Microsoft, OIDC
│ │ ├── workspace/ ← Per-user server resolution
│ │ ├── users/ ← User storage, credential vault
│ │ ├── templates/ ← Server template engine
│ │ └── middleware/ ← Teams auth middleware
│ └── ... (existing packages unchanged)
├── frontend/
│ └── src/
│ ├── views/teams/ ← Teams-only Vue pages
│ └── components/teams/ ← Teams-only components
├── native/
│ ├── macos/ ← Swift tray app (Xcode project)
│ └── windows/ ← C# tray app (VS solution)
├── Dockerfile ← Teams Docker image
└── .github/workflows/release.yml ← Extended for both editions
| Platform | Personal | Teams |
|---|---|---|
| macOS | DMG (Swift tray + core) | Homebrew / binary tarball |
| Windows | MSI/EXE (C# tray + core) | N/A (server product) |
| Linux | tar.gz | Docker image, .deb, tar.gz |
Single GitHub release tag (e.g., v0.21.0) with all assets:
ghcr.io/smart-mcp-proxy/mcpproxy-teamsSingle Vue build for both editions. Teams pages are lazy-loaded routes. Backend returns 404 for teams routes in personal mode. No separate frontend builds needed.
Live in native/ directory within the same repo. Swift for macOS, C# for Windows. Replace the current Go tray app (cmd/mcpproxy-tray/).