Server · Marketplace
LVIS Marketplace — FastAPI + SQLAlchemy 2.0 monorepo
단일 Plugin 모델 + plugin_type discriminator (plugin · agent · mcp · skill) 로 4가지 카탈로그를 통합 운영. Ed25519 서명 검증, lvis:// deeplink 설치, lvis-publish CLI 까지 갖춘 monorepo (server + web + cli).
FastAPI 0.115+
SQLAlchemy 2.0 async
Ed25519
react-router 7
실제 stack (verbatim)
# server/pyproject.toml
fastapi>=0.115, uvicorn[standard]>=0.32, sqlalchemy>=2.0
aiosqlite>=0.20, asyncpg>=0.29, alembic>=1.13
pydantic>=2.9, slowapi>=0.1.9, cryptography>=42
# web/package.json
react + react-router (createBrowserRouter)
vite + typescript + tailwind + shadcn-style ui + tanstack/query
# cli/package.json
@lvis-marketplace/cli bin: lvis-publish사용자 페르소나
- End user — Storefront / PluginDetail / “설치” 버튼 (lvis:// deeplink) 사용.
- Publisher — PublisherDashboard / PublishPage /
lvis-publish publishCLI 로 업로드. - Admin — AdminPage 4탭 (Catalog · Approvals · Manage · API Keys) + role guard
<RequireRole role="admin">.
플러그인 카탈로그
GET /api/v1/catalog 카탈로그 뷰.
Agents
동일 catalog API + plugin_type=agent 필터.
MCP 서버
plugin_type=mcp 필터.
Skills
plugin_type=skill 필터.
퍼블리셔 대시보드
POST /plugins/{slug}/versions 업로드 + Ed25519 서명.
어드민 콘솔
AdminPage 단일 페이지 4 탭 — Catalog · Approvals · Manage · API Keys.
agents / mcp / skills 는 별도 endpoint 가 없다
모든 카탈로그 데이터는 단일
Plugin 모델 + plugin_type 컬럼 (마이그레이션ad207acc8dae_add_plugin_type) 으로 묶여 있고, GET /api/v1/catalog?plugin_type=… 으로 필터링됩니다. 본 docs 의 “Agents / MCP / Skills” 페이지는 UI 분류 관점의 설명일 뿐, 별도 REST 리소스를 의미하지 않습니다.