본문 바로가기
AI 도구

🤖 스탠포드 오픈자비스: 100% 로컬 AI 에이전트 프레임워크 가이드

by James AI Explorer 2026. 3. 17.
    728x90

    안녕하세요! 오늘은 스탠포드 연구진이 개발한 OpenJarvis에 대해 알아보겠습니다. OpenJarvis는 100% 로컬 실행, 개인 데이터 프라이버시 보호, 지속적 학습이라는 특징을 가진 온디바이스 AI 에이전트 프레임워크입니다. 특히 클라우드 없이 내 컴퓨터에서만 작동하므로 API 비용이 들지 않고 개인 데이터가 외부로 전송되지 않는다는 장점이 있습니다.

    이 글에서는 OpenJarvis의 핵심 기술, 5가지 프리미티브 구조, Ollama와 연동한 설치 방법, 그리고 실제 사용 예제까지 상세히 다루겠습니다. 함께 살펴보시죠!

    "이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

     

    🤖 OpenJarvis란 무엇인가?

    OpenJarvis는 스탠포드 대학 연구진이 개발한 로컬 퍼스트(Local-First) 개인용 AI 에이전트 프레임워크입니다. 기존의 대부분의 개인용 AI 프로젝트들이 로컬 컴포넌트는 얇게 유지하면서 핵심 추론 작업을 외부 클라우드 API로 라우팅하는 방식이었습니다. 이러한 설계는 지연 시간, 반복 비용, 데이터 노출 우려라는 문제를 야기합니다.

    OpenJarvis는 이러한 문제를 해결하기 위해 클라우드 사용을 선택적으로 만들고, 로컬 실행을 기본으로 설계되었습니다. 개인 파일, 메시지, 지속적인 사용자 컨텍스트를 다루는 어시스턴트/에이전트에게 특히 중요한 접근 방식입니다.

    핵심 철학: 개인 AI 에이전트가 기본적으로 로컬에서 실행되고, 진정으로 필요한 경우에만 클라우드를 호출하도록 만드는 것

    ⚙️ 5가지 핵심 프리미티브 구조

    OpenJarvis는 5가지 핵심 프리미티브(Primitive)로 구성되어 있습니다. 각 프리미티브는 명확한 ABC 인터페이스와 데코레이터 기반 레지스트리를 통해 모듈화되어 있습니다.

    프리미티브 역할 주요 기능
    Intelligence 모델 선택 LLM 선택, 프롬프트 관리, 모델 최적화
    Engine 추론 엔진 Ollama, vLLM, SGLang, llama.cpp 백엔드 지원
    Agents 에이전트 오케스트레이션 태스크 분해, 실행 계획, 멀티 에이전트 협업
    Tools & Memory 도구 및 메모리 MCP 프로토콜, 시맨틱 인덱싱, 로컬 검색
    Learning 지속적 학습 SFT, 프롬프트 개선, 에이전트 로직 최적화

    Intelligence: 모델 선택 계층

    Intelligence 프리미티브는 사용할 LLM을 선택하고 관리하는 계층입니다. 로컬 모델과 클라우드 API를 모두 지원하며, 작업에 따라 최적의 모델을 자동으로 선택할 수 있습니다.

    Engine: 추론 엔진 계층

    Engine 프리미티브는 실제 모델 추론을 담당합니다. 다양한 백엔드를 지원하여 사용자의 하드웨어 환경에 맞는 최적의 엔진을 선택할 수 있습니다.

    백엔드 특징 추천 환경
    Ollama 간편한 설치, 다양한 모델 지원 초보자, 일반 사용자
    vLLM 고속 추론, 배치 처리 최적화 프로덕션, GPU 서버
    SGLang 구조화된 생성, 빠른 디코딩 복잡한 출력 형식 필요 시
    llama.cpp 경량화, CPU 최적화 저사양 환경, MacBook
    Cloud APIs OpenAI, Anthropic 지원 고성능 모델 필요 시

    Tools & Memory: 도구 및 메모리 계층

    Tools & Memory 프리미티브는 에이전트가 외부 도구를 사용하고 정보를 기억할 수 있게 합니다. 특히 MCP (Model Context Protocol)을 통한 표준화된 도구 사용과 시맨틱 인덱싱을 통한 로컬 검색을 지원합니다.

    MCP (Model Context Protocol): AI 모델과 외부 도구 간의 표준화된 통신 프로토콜로, 다양한 도구를 일관된 방식으로 연결할 수 있게 합니다.

    Learning: 지속적 학습 계층

    Learning 프리미티브는 OpenJarvis의 가장 독특한 기능입니다. 로컬 상호작용 트레이스를 사용하여 훈련 데이터를 합성하고, 에이전트 동작을 개선하며, 시간이 지남에 따라 모델 선택을 최적화합니다.

    최적화는 스택의 4개 계층에서 이루어집니다:

    • 모델 가중치: SFT(Supervised Fine-Tuning)를 통한 모델 개선
    • LM 프롬프트: 프롬프트 엔지니어링 자동화
    • 에이전트 로직: 태스크 분해 및 실행 전략 개선
    • 추론 엔진: 엔진 설정 최적화

    📊 효율성 중심 평가 시스템

    OpenJarvis의 또 다른 핵심 특징은 효율성 인식 평가(Efficiency-Aware Evaluation)입니다. 단순히 작업 성능(정확도)만 측정하는 것이 아니라, 다음 메트릭들을 함께 추적합니다:

    메트릭 설명 중요성
    Energy 에너지 소비량 배터리 수명, 전력 비용
    Latency 응답 지연 시간 사용자 경험, 실시간성
    FLOPs 연산량 하드웨어 요구사항
    Dollar Cost 달러 비용 API 비용, 운영 비용

    이러한 메트릭들은 개인용 AI 에이전트가 하드웨어 제약 조건 내에서 최적의 성능을 낼 수 있도록 설계하는 데 도움을 줍니다. 사용자의 환경(GPU 유무, 메모리 크기 등)에 따라 적절한 모델과 설정을 자동으로 선택할 수 있습니다.

    🚀 Ollama와 함께 OpenJarvis 설치하기

    이제 Ollama를 백엔드로 사용하여 OpenJarvis를 설치하는 방법을 단계별로 알아보겠습니다. 이 방법은 API 비용 없이 100% 로컬에서 AI 에이전트를 실행할 수 있습니다.

    1단계: Ollama 설치

    먼저 Ollama를 설치해야 합니다. 운영체제별 설치 방법은 다음과 같습니다:

    macOS/Linux: ollama.ai에서 설치 관리자 다운로드

    Linux: curl -fsSL https://ollama.ai/install.sh | sh

    Ollama 설치 후 기본 모델을 다운로드합니다:

    # Llama 3.2 다운로드 (1B 파라미터, 경량 모델)
    ollama pull llama3.2:1b
    
    # 또는 더 큰 모델
    ollama pull llama3.2:3b
    ollama pull mistral:7b

    2단계: OpenJarvis 클론 및 설치

    OpenJarvis를 GitHub에서 클론하고 필요한 의존성을 설치합니다:

    # 저장소 클론
    git clone https://github.com/open-jarvis/OpenJarvis.git
    cd OpenJarvis
    
    # uv 패키지 매니저로 의존성 설치
    uv sync
    
    # 서버 확장 기능 설치 (선택사항)
    uv sync --extra server
    
    # 클라우드 API 지원 설치 (선택사항)
    uv sync --extra inference-cloud

    2.5단계: OpenJarvis 초기화 (중요!)

    OpenJarvis를 처음 설치한 후에는 반드시 초기화 명령어를 실행해야 합니다. 이 명령어는 사용자의 시스템 환경에 맞는 설정 파일을 자동으로 생성합니다:

    # Ollama 엔진으로 초기화
    uv run jarvis init --engine ollama
    
    # 기존 설정을 덮어쓰려면 --force 옵션 사용
    uv run jarvis init --engine ollama --force

    초기화가 완료되면 ~/.openjarvis/config.toml 파일이 생성됩니다. 이 파일에서 기본 모델, 엔진, 에이전트 설정을 변경할 수 있습니다.

    모델 변경 방법: ~/.openjarvis/config.toml 파일에서 default_model 값을 변경하세요. 예: default_model = "qwen3:0.6b"

    주의: uv 패키지 매니저가 설치되어 있지 않다면 먼저 설치해야 합니다: curl -LsSf https://astral.sh/uv/install.sh | sh

    3단계: 퀵스타트 스크립트 실행

    가장 간단한 방법은 퀵스타트 스크립트를 사용하는 것입니다:

    # 퀵스타트 스크립트 실행
    # 자동으로 Ollama + 로컬 모델 시작, 백엔드/프론트엔드 실행
    ./scripts/quickstart.sh

    이 스크립트는 다음 작업을 자동으로 수행합니다:

    1. 의존성 설치
    2. Ollama 및 로컬 모델 시작
    3. 백엔드 서버 실행
    4. 프론트엔드 실행
    5. 브라우저에서 http://localhost:5173 열기

    💻 CLI로 OpenJarvis 사용하기

    OpenJarvis는 강력한 CLI(명령줄 인터페이스)를 제공합니다. 주요 명령어를 알아보겠습니다:

    간단한 질문하기

    # 기본 질문
    jarvis ask "프랑스의 수도는 어디인가요?"
    
    # 특정 에이전트와 도구 사용
    jarvis ask --agent orchestrator --tools calculator "137 * 42는 얼마인가요?"

    대화형 채팅

    # 대화형 채팅 모드 시작
    jarvis chat

    API 서버 실행

    # OpenAI 호환 API 서버 실행 (포트 8002 권장)
    jarvis serve --port 8002

    포트 충돌 방지: 다른 서비스(예: deer-flow)가 8000번 포트를 사용 중일 수 있으므로 8002번 포트를 권장합니다. 프론트엔드 vite.config.ts의 프록시 설정도 함께 변경해야 합니다.

    서버가 실행되면 OpenAI API와 호환되는 엔드포인트를 사용할 수 있습니다:

    import openai
    
    client = openai.OpenAI(
        base_url="http://localhost:8002/v1",
        api_key="not-needed"
    )
    
    response = client.chat.completions.create(
        model="qwen3:0.6b",
        messages=[
            {"role": "user", "content": "안녕하세요!"}
        ]
    )
    
    print(response.choices[0].message.content)

    진단 명령어

    # 시스템 상태 확인
    jarvis doctor
    
    # 사용 가능한 모델 목록
    jarvis model list

    jarvis doctor 명령어는 시스템 구성, 엔진 연결, 모델 가용성 등을 자동으로 진단합니다. 모든 항목이 PASSED로 표시되면 정상입니다.

    🔧 트러블슈팅 가이드

    OpenJarvis 설치 및 실행 시 발생할 수 있는 일반적인 문제와 해결 방법을 정리했습니다.

    문제 1: 포트 충돌 (Port already in use)

    증상: Address already in use 또는 Port 8000 is already in use 에러 발생

    원인: 다른 서비스가 같은 포트를 이미 사용 중

    해결 방법:

    # 사용 중인 포트 확인
    lsof -i :8000
    
    # 다른 포트로 서버 실행
    jarvis serve --port 8002

    프론트엔드 설정 파일(frontend/vite.config.ts)에서도 프록시 포트를 변경해야 합니다:

    server: {
      port: 5173,
      proxy: {
        '/v1': process.env.VITE_API_URL || 'http://localhost:8002',
        '/health': process.env.VITE_API_URL || 'http://localhost:8002',
      },
    },

    문제 2: No model available on engine

    증상: No model available on engine 또는 Cannot reach OpenJarvis backend 에러 발생

    원인: 설정 파일이 시스템 환경과 맞지 않거나 초기화되지 않음

    해결 방법:

    # 1. OpenJarvis 초기화
    uv run jarvis init --engine ollama --force
    
    # 2. 설정 파일에서 모델 확인
    cat ~/.openjarvis/config.toml
    
    # 3. Ollama에 모델이 있는지 확인
    ollama list
    
    # 4. 필요한 모델 다운로드
    ollama pull qwen3:0.6b

    문제 3: 404 Cannot reach OpenJarvis backend

    증상: 프론트엔드에서 404 Cannot reach OpenJarvis backend 에러

    원인: 백엔드 서버가 실행되지 않았거나 포트가 일치하지 않음

    해결 방법:

    # 1. 백엔드 서버 상태 확인
    curl http://localhost:8002/health
    
    # 2. 백엔드 서버 시작
    jarvis serve --port 8002
    
    # 3. jarvis doctor로 진단
    jarvis doctor

    문제 4: Ollama 연결 실패

    증상: Failed to connect to Ollama 또는 모델 로드 실패

    원인: Ollama 서비스가 실행되지 않음

    해결 방법:

    # Ollama 서비스 시작
    ollama serve
    
    # Ollama 상태 확인
    curl http://localhost:11434/api/tags

    권장사항: 문제 해결 후 jarvis doctor 명령어로 모든 구성 요소가 정상인지 확인하세요. 10개 항목 모두 PASSED가 나와야 정상입니다.

    💡 Ollama 환경에서 실제 활용 예제

    이제 Ollama를 백엔드로 사용하여 실제로 OpenJarvis를 활용하는 예제를 살펴보겠습니다.

    예제 1: 계산기 도구 사용

    OpenJarvis의 도구 사용 기능을 테스트해보겠습니다:

    # 계산기 도구로 수학 문제 해결
    uv run jarvis ask --tools calculator "다음을 계산해줘: (127 + 45) * 3 - 20"

    출력 예시:

    로컬 LLM으로 웹 검색을 수행하는 예제입니다:

    # 웹 검색 도구 활성화 (설정 필요)
    uv run jarvis ask --tools web_search "2026년 스탠포드 AI 연구 최신 동향은?"

    예제 3: Python으로 커스텀 에이전트 만들기

    OpenJarvis의 Python API를 사용하여 커스텀 에이전트를 만들 수 있습니다:

    from jarvis import Jarvis, Tool, Agent
    from jarvis.backends import OllamaBackend
    
    # Ollama 백엔드 설정
    backend = OllamaBackend(model="llama3.2:3b")
    
    # 커스텀 도구 정의
    @Tool.register
    def get_weather(city: str) -> str:
        """도시의 날씨 정보를 반환합니다."""
        # 실제로는 날씨 API 호출
        return f"{city}의 현재 날씨: 맑음, 기온 22°C"
    
    # 에이전트 생성
    agent = Agent(
        name="weather_assistant",
        backend=backend,
        tools=[get_weather]
    )
    
    # 에이전트 실행
    response = agent.run("서울 날씨 어때?")
    print(response)

     

     

    📊 다른 프레임워크와 비교

    OpenJarvis를 다른 인기 있는 AI 에이전트 프레임워크와 비교해보겠습니다:

    특징 OpenJarvis LangChain AutoGPT
    로컬 퍼스트 ✅ 기본 ⚠️ 선택적 ⚠️ 선택적
    학습 기능 ✅ 내장 ❌ 없음 ❌ 없음
    효율성 메트릭 ✅ 추적 ❌ 없음 ❌ 없음
    MCP 지원 ✅ 지원 ⚠️ 제한적 ❌ 없음
    다중 백엔드 ✅ 5개+ ✅ 다수 ⚠️ 제한적
    설치 난이도 중간 쉬움 어려움

    이러한 특징들을 고려할 때, OpenJarvis는 로컬 실행과 프라이버시가 중요한 개인용 AI 에이전트 구축에 특히 적합합니다. 반면 LangChain은 프로토타이핑과 클라우드 기반 서비스에, AutoGPT는 자율적인 작업 수행에 더 적합할 수 있습니다.

    ⚠️ 한계점과 주의사항

    OpenJarvis를 사용할 때 알아두어야 할 한계점들입니다:

    • 하드웨어 요구사항: 로컬 LLM 실행을 위해 충분한 RAM과 GPU가 필요합니다. 8GB RAM 이상, NVIDIA GPU 권장
    • 설정 복잡성: 다양한 백엔드와 도구를 설정하는 데 시간이 걸릴 수 있습니다
    • 프로젝트 성숙도: 2026년 3월 기준 비교적 새로운 프로젝트로, 일부 기능은 아직 개발 중입니다
    • 한국어 지원: 기본적으로 영어 중심이며, 한국어 모델 사용 시 별도 설정이 필요합니다

    권장사항: 처음 시작하는 분들은 ./scripts/quickstart.sh 스크립트를 사용하여 기본 설정으로 시작한 후, 필요에 따라 커스터마이징하는 방식을 추천합니다.

    🎯 맺음말

    지금까지 OpenJarvis에 대해 알아보았습니다. OpenJarvis는 100% 로컬 실행, 5가지 모듈형 프리미티브, 지속적 학습 기능을 갖춘 혁신적인 개인용 AI 에이전트 프레임워크입니다. 특히 Ollama와 연동하여 API 비용 없이 내 컴퓨터에서 AI 에이전트를 실행할 수 있다는 점이 큰 장점입니다.

     

    다만 하드웨어 요구사항과 설정 복잡성이 있어, 처음에는 퀵스타트 스크립트로 기본 환경을 구축한 후 점진적으로 커스터마이징하는 방식을 추천합니다.

     

    여러분도 한번 OpenJarvis를 Ollama와 함께 로컬에서 직접 체험해보시길 추천드리면서 저는 다음 시간에 더 유익한 정보를 가지고 다시 찾아뵙겠습니다. 감사합니다.

    https://fornewchallenge.tistory.com/

     

     


    📚 참고 문헌 및 출처

     

    728x90