KevinLiss/ApeAdmin

Apeadmin 面向现代AI应用打造的Python后台管理框架,基于 FastAPI+Vue3 设计100%开源,内置 RBAC 权限管控、审计日志等企业级基础能力。框架集成 MCP‑SSE 网关,具备强大插件生态完整,帮助开发者快速搭建兼具业务管理与 AI 工具输出能力的应用。

ApeAdmin – 현대의 AI 애플리케이션을 위한 오픈소스 관리 플랫폼

무엇인가요 – ApeAdmin은 AI 기반 서비스를 호스팅하기 위해 설계된 풀스택 플러그인 지원 관리 프레임워크입니다. FastAPI 백엔드와 Vue 3 프론트엔드를 결합하고, MCP-SSE 게이트웨이를 추가하여 관리 기능(RBAC, 플러그인, 로그 등)을 AI 에이전트가 함수 호출로 사용할 수 있는 도구 로 노출합니다. 요약하면, 독립적인 Python 플러그인으로 확장 가능하고 인간 운영자와 LLM 에이전트 모두가 접근할 수 있는 "백엔드 as a service"를 제공합니다.


핵심 기능

카테고리 제공되는 기능
설치 워즈드 WordPress 스타일의 3단계 설정(DB 설정 → 사이트 및 관리자 → 완료). MySQL 데이터베이스 자동 생성, JWT 시크릿 생성, 재실행을 방지하기 위한 잠금 파일 작성.
RBAC 다섯 테이블 모델(사용자, 역할, 메뉴, 부서, 연결). 네 레이어 권한 검사(비로그인 → 인증 없음 → 규칙 → 데이터 범위) 및 버튼 수준 숨김을 위한 프론트엔드 v-permission 지시자.
플러그인 시스템 importlib를 통한 Python 패키지 플러그인 탐지. 핫로드/언로드, Docker 격리 배포, ZIP 업로드, 온라인 플러그인 마켓플레이스 지원. 플러그인은 라우트, MCP 도구, 이벤트 리스너 등록 가능.
MCP-SSE 게이트웨이 내부 관리 API를 도구/자원/프롬프트 템플릿으로 변환하여 LLM 에이전트가 호출할 수 있도록 합니다. JSON-Schema는 함수 시그니처에서 자동 생성되며, RBAC 필터링 및 일회성 티켓과 30초 타임아웃으로 보호됩니다. 모든 호출은 감사 기록됩니다.
AI 챗 어시스턴트 OpenAI, DeepSeek, Alibaba Tongyi, Zhipu GLM 또는 어떤 OpenAI 호환 엔드포인트도 지원. 스트리밍 SSE 출력, 마크다운 렌더링, 최대 5라운드의 도구 호출 루프 지원. 모델 키는 Fernet으로 암호화 저장.
감사 및 모니터링 Request-ID 미들웨어, 작업 로그, API별 지연 시간 추적, 검색 가능한 감사 로그.
데이터베이스 유연성 빠른 로컬 개발용 SQLite, 본격적인 생산 환경용 MySQL. DB_TYPE을 통해 자동 드라이버 전환. 선택적 Redis 캐시는 메모리 내 저장소로의 부드러운 팔백 지원.

아키텍처 개요

apeadmin/
  backend/          # FastAPI (async SQLAlchemy, Alembic 마이그레이션)
    src/
      api/          # REST 엔드포인트 (인증, 사용자, 역할, 플러그인, AI 챗…)
      core/         # 설정, 보안 (JWT + bcrypt), 미들웨어, 시드 데이터
      crud/         # RBAC 훅이 있는 일반적인 CRUD
      db/           # 엔진 및 세션 처리
      models/       # ORM 정의 (rbac, 플러그인, AI, MCP 로그)
      mcp/          # MCP 매니저, 라우트, 내장 도구
      plugins/      # 플러그인 인터페이스, 매니저, 내장 예제
      ai/           # 에이전트 오케스트레이션, 함수 호출 루프
      schemas/      # Pydantic 요청/응답 모델
      main.py       # 앱 진입점 (라이프사이클, 설정 모드)
  frontend/         # Vue 3 + Vite + TypeScript + Element Plus UI
    src/
      api/          # 모든 백엔드 라우트용 Axios 래퍼
      components/   # 헤더, 사이드바 등
      directives/   # `v-permission`
      router/       # 백엔드 메뉴 트리에서 동적으로 생성된 라우트
      stores/       # Pinia 스토어 (사용자, 메뉴, 권한)
      views/        # 페이지 (로그인, 시스템 관리, 플러그인 마켓, AI 챗…)

설계 원칙은 "설치하고 실행" 입니다. 구성되지 않은 인스턴스는 /setup로 리디렉션하고 .env 파일을 작성, 테이블을 생성한 후 일반적인 멀티테넌트 관리 시스템처럼 동작합니다.


누구에게 적합한가?

시나리오 ApeAdmin이 도움이 되는 이유
AI SaaS 플랫폼 데이터 조회, 사용자 관리, 사용자 정의 비즈니스 로직 등의 내부 도구를 별도 API를 작성하지 않고 LLM 에이전트에 공개할 수 있습니다.
기업 내부 도구 사용자, 부서, 사용자 정의 플러그인을 관리할 수 있는 권한 기반 UI를 빠르게 구축하면서도 단일 진실의 소스를 유지할 수 있습니다.
플러그인 생태계 팀은 독립적인 Python 플러그인(예: 데이터 커넥터, 모델 래퍼)을 개발할 수 있으며, 자동 탐지 및 핫로드가 가능해 핵심 시스템은 안정적으로 유지됩니다.
빠른 프로토타이핑 SQLite 개발 모드와 3단계 워즈드를 사용해 몇 분 안에 기능적인 관리 패널을 실행할 수 있습니다.

시작하기 (빠른 시작)

  1. 백엔드
    cd backend
    python -m venv .venv && source .venv/bin/activate   # Windows: .venv\Scripts\activate
    pip install -e .
    uvicorn src.main:app --reload --host 0.0.0.0 --port 8000
    
  2. 프론트엔드
    cd frontend
    npm install --legacy-peer-deps
    npm run dev   # http://localhost:5173 에서 제공
    
  3. URL을 열면 설정이 누락된 것을 감지하고 설치 워즈드를 시작합니다. SQLite(제로 설정)를 선택하거나 MySQL 인스턴스에 연결할 수 있습니다.
  4. 설치 후 정의한 관리자 자격 정보로 로그인한 후 다음을 탐색하세요:
    • 시스템 → 사용자 / 역할 / 메뉴 / 부서
    • 플러그인 → 마켓플레이스, ZIP 업로드, 활성/비활성
    • MCP → 도구 / 자원 / 프롬프트 템플릿
    • AI → 모델 API 키 추가 및 등록된 도구를 호출할 수 있는 채팅 세션 시작

본격적인 환경에서는 deploy/DEPLOY.md에 있는 Docker/Nginx 스크립트를 따르세요.


기술 스택

레이어 기술
백엔드 FastAPI, async SQLAlchemy 2.0, Alembic, Pydantic-Settings, JWT, bcrypt
프론트엔드 Vue 3.5, Vite 6, TypeScript 5.7, Element Plus 2.9, Pinia, ECharts
데이터베이스 MySQL (aiomysql 경유) 또는 SQLite (aiosqlite)
캐시 Redis (옵션)
AI 통합 Server-Sent Events 기반 MCP (Model Context Protocol), OpenAI 호환 엔드포인트 지원
패키징 MIT 라이선스, 백엔드는 pip 편집 가능 설치, 프론트엔드는 npm

라이선스 및 커뮤니티

  • 라이선스: MIT – 상용 및 비상용 모두 자유롭게 사용 가능.
  • 커뮤니티: 공식 웹사이트, 플러그인 마켓플레이스, 문서 포털, WeChat 사용자 그룹(리포지토리 내 QR 코드 참조). 기여는 표준적인 fork-branch-PR 워크플로우를 따르며 명확한 브랜치 명명 규칙이 있습니다.

TL;DR

ApeAdmin은 플러그인 우선, AI 인식 관리 프레임워크로, 사용자, 권한, 사용자 정의 비즈니스 로직을 관리하면서도 이를 LLM 에이전트가 호출할 수 있는 도구로 자동 노출합니다. 준비된 UI, 설치 워즈드, 완전한 플러그인 생태계를 제공하여 현대의 AI 중심 제품의 견고한 기반을 마련합니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트