MimiClaw: 5달러짜리 ESP32-S3 MCU 위에서 구동되는 초소형 OS-less AI 에이전트

MimiClaw 소개

최근 인공지능 기술의 발전과 함께 스스로 생각하고 도구를 활용하여 작업을 수행하는 자율형 AI 에이전트(AI Agent)에 대한 개발자 커뮤니티의 관심이 매우 뜨겁습니다. 하지만 이러한 에이전트 시스템을 제대로 구축하고 유지하기 위해서는 일반적으로 복잡하고 무거운 운영체제(OS) 환경이 필수적이라고 여겨져 왔습니다. 리눅스(Linux) 환경을 구축하고, 그 위에 Node.js나 Python 같은 런타임을 올린 뒤 무거운 클라우드 서버나 최소한 Mac mini, 라즈베리 파이(Raspberry Pi) 수준의 컴퓨팅 파워를 동원해야 한다는 것이 일반적인 상식이었습니다. 이러한 방식은 초기 구축 비용의 상승은 물론, 전력 소모량이 만만치 않아 항상 켜두고 사용해야 하는 개인용 로컬 어시스턴트를 구현하기에는 다소 부담스러운 제약이 있었습니다.

MimiClaw는 이러한 기존의 패러다임을 완전히 뒤집는 혁신적이고 흥미로운 오픈소스 프로젝트입니다. 이 프로젝트는 단돈 5달러(약 7천 원) 수준의 극도로 저렴하고 전력 소모가 적은 ESP32-S3 마이크로컨트롤러 유닛(MCU) 위에서 구동되는 개인용 AI 어시스턴트 펌웨어를 제공합니다. 가장 놀라운 점은 무거운 운영체제나 Node.js 환경에 전혀 의존하지 않고, 오직 순수 C 언어와 실시간 운영체제인 FreeRTOS만을 사용하여 이른바 베어메탈(Bare-metal)에 가까운 환경에서 복잡한 AI 에이전트 루프를 성공적으로 구현해 냈다는 사실입니다. 사용자는 보드에 USB 케이블로 전원(불과 0.5W 소모)만 공급해 주면, 24시간 내내 켜져 있으면서 로컬 플래시 메모리에 기억을 저장하고 Telegram을 통해 언제든 즉각적으로 대화할 수 있는 나만의 물리적 AI 비서를 갖게 됩니다.

이 작은 칩 안에는 와이파이(WiFi) 통신 모듈은 물론, ReAct(Reasoning and Acting) 기반의 논리적 에이전트 루프, 도구(Tool) 호출 기능, 그리고 전원을 껐다 켜도 사용자와의 컨텍스트를 유지하는 로컬 우선 메모리(Local-first memory) 시스템이 모두 밀도 있게 압축되어 담겨 있습니다. 데이터 프라이버시를 매우 중요하게 생각하거나, 월 구독료 비용 없이 독립적이고 이식성이 뛰어난 초소형 하드웨어 폼팩터 형태의 AI를 원했던 개발자와 메이커들에게 MimiClaw는 엄청난 호응을 얻고 있습니다. 단순히 API를 래핑(Wrapping)하여 호출하는 단순 챗봇 수준을 넘어, 스케줄링(Cron), 웹 검색 도구 연동, 지속적인 장기 메모리 관리를 통해 자율성을 지닌 엣지(Edge) AI 에이전트의 새로운 가능성을 매우 실용적으로 증명하고 있는 매력적인 프로젝트입니다.

MimiClaw vs. 기존 OpenClaw 기반 에이전트 시스템 비교

일반적으로 널리 알려진 OpenClaw와 같은 PC/클라우드 기반의 AI 에이전트 플랫폼들과 비교했을 때, MimiClaw는 구동 환경과 철학 측면에서 명확한 차별점을 가지고 있습니다. OpenClaw 계열의 에이전트들은 강력한 호스트 운영체제 인프라를 바탕으로 코드를 동적으로 생성하거나, 파일 시스템 전체를 깊숙이 제어하고 새로운 기능을 스스로 스크립팅하여 무한히 확장하는 데 유리합니다. 하지만 이는 곧 시스템 리소스를 대량으로 소모하며, 보안 취약점이나 AI의 의도치 않은 시스템 변경(Benevolent Virus 등)에 대한 우려를 낳을 수 있어 샌드박스 등 복잡한 관리가 요구됩니다.

반면 MimiClaw는 마이크로컨트롤러라는 제한된 메모리와 컴퓨팅 자원을 가진 환경에서 구동되므로, 물리적인 OS 인프라에 의존하여 스스로 코드를 짜고 해킹하듯 확장하는 동적 생성 기능은 존재하지 않습니다. 대신 에이전트 본연의 핵심 기능인 '계획 수립(Plan) → 도구 호출(Tool Call) → 관찰(Observe) → 다음 단계 진행'이라는 논리적 루프를 하드웨어 레벨에서 구조적이고 투명하게 통제하도록 설계되었습니다. 극도로 낮은 0.5W의 전력만으로 작동하며, 모든 사용자 데이터와 상태가 시스템 레벨에서 격리된 로컬 플래시에만 텍스트 형태로 안전하게 저장되므로 예상치 못한 PC 시스템 침해나 클라우드 데이터 유출을 원천적으로 걱정할 필요가 없습니다.

MimiClaw의 주요 특징

┌──────────────┐     ┌──────────────┐     ┌──────────────┐
│   Telegram   │────▶│  Message Q   │────▶│  Claude LLM  │
│   WebSocket  │     │  (dual-core) │     │  (Anthropic) │
└──────────────┘     └──────────────┘     └──────┬───────┘
                                                 │
                     ┌──────────────┐     ┌──────▼───────┐
                     │    Memory    │◀────│    Tools     │
                     │  SOUL.md     │     │  web_search  │
                     │  USER.md     │     │  get_time    │
                     │  MEMORY.md   │     │  (ReAct)     │
                     └──────────────┘     └──────────────┘

듀얼 코어(Dual-Core) 분산 시스템 아키텍처

MimiClaw는 ESP32-S3 칩이 제공하는 듀얼 코어(Core 0, Core 1) 프로세서를 100% 분산 활용하여, 네트워크 I/O 병목 현상이나 시스템 멈춤 없이 AI 에이전트를 부드럽게 구동합니다. 코어 간의 모든 데이터 통신은 FreeRTOS의 큐(xQueue)를 통해 스레드 세이프(Thread-safe)하게 이루어집니다.

  • Core 0 (네트워크 및 I/O 전담 처리): 사용자가 Telegram 앱을 통해 메시지를 전송하면, Core 0에서 구동되는 Telegram Poller(HTTPS Long Polling 방식 적용)가 이를 수신하여 내부 인바운드 큐(Inbound Queue)에 적재합니다. 추가로 USB 시리얼 연결을 통한 CLI 제어 입출력과 최종적인 AI의 응답을 다시 텔레그램이나 웹소켓으로 내보내는 아웃바운드 디스패치(Outbound Dispatch) 역할을 완벽히 전담합니다.
  • Core 1 (AI 에이전트 루프 전담 처리): 에이전트의 실제 '두뇌' 역할을 수행하는 코어입니다. 인바운드 큐에서 새로운 메시지를 꺼낸 후, 시스템 파일에서 과거 대화 기록과 시스템 프롬프트(봇의 성격을 결정하는 SOUL.md, 사용자 취향 정보인 USER.md, 장기 기억인 MEMORY.md 등)를 로드하여 컨텍스트를 구성합니다. 이후 ReAct 구조를 따라 최대 10회까지 반복 루프를 돌며 HTTPS를 통해 LLM API(Anthropic 또는 OpenAI)와 통신하고, 필요한 경우 웹 검색 등의 도구를 호출하며 최종 응답을 완성합니다.

로컬 우선 메모리 및 데이터 저장 메커니즘 (Flash Partition)

MimiClaw의 가장 강력한 무기 중 하나는 외부 클라우드 DB 서비스에 전혀 의존하지 않고 장치 자체에 영구적인 장기 기억을 생성한다는 것입니다. 보드에 탑재된 16MB 플래시 메모리는 목적에 따라 다음과 같이 효율적으로 파티셔닝되어 관리됩니다.

  • NVS (Non-Volatile Storage): WiFi 자격 증명(SSID/PW), 텔레그램 토큰, API 키, 동적으로 선택된 LLM 제공자 등 런타임에 CLI로 설정한 주요 설정값들이 안전하게 저장되는 영역입니다.
  • OTA (Over-The-Air) 파티션: 기기에 USB 케이블을 연결하지 않고도 와이파이를 통해 펌웨어를 무선으로 원격 업데이트할 수 있도록 두 개의 슬롯(OTA_0, OTA_1)이 준비되어 있습니다.
  • SPIFFS (12MB 할당 공간): AI 에이전트의 실질적인 기억과 인격을 구성하는 파일 시스템 공간입니다. 사용자와의 날짜별 대화 세션 기록, 장기 기억을 담은 마크다운 파일, 환경 설정 파일 등이 여기에 물리적인 텍스트 파일(JSONL 및 MD 포맷) 형태로 저장되며 보드의 전원을 완전히 차단했다가 다시 켜도 데이터가 증발하지 않습니다.

MimiClaw 설치 및 설정

주요 기능 및 하드웨어/소프트웨어 요구사항

MimiClaw를 직접 구축하고 실행하기 위해서는 다음과 같은 하드웨어 및 API 키 등, 필수 구성 요소가 준비되어야 합니다:

  • 하드웨어 (MCU): 16MB 플래시 메모리와 8MB PSRAM이 탑재된 ESP32-S3 개발 보드 (예: Xiaozhi AI 보드 등)
  • 전원 및 연결: 일반적인 USB Type-C 케이블 (전원 공급 및 초기 시리얼 펌웨어 업로드용)
  • 소프트웨어 빌드 환경: Espressif의 공식 프레임워크인 ESP-IDF v5.5 이상 버전
  • 필수 API 키:
    • Telegram Bot Token (Telegram의 @BotFather를 통해 즉시 무료 발급 가능)
    • Anthropic API Key (Claude 모델 사용 시) 또는 OpenAI API Key (GPT 모델 사용 시)

펌웨어 설치 및 초기 빌드 가이드

프로젝트가 순수 C 코드로 작성되었기 때문에, 일반적인 Node.js 환경이 아닌 ESP-IDF 환경을 통해 네이티브 빌드를 수행해야 합니다.

  1. GitHub에서 프로젝트 저장소를 복제(clone)하고 대상 칩을 ESP32-S3로 지정합니다:

    git clone https://github.com/memovai/mimiclaw.git
    cd mimiclaw
    idf.py set-target esp32s3
    
  2. 제공되는 설정 템플릿 파일을 복사하여 나만의 초기 mimi_secrets.h 헤더 파일을 생성합니다:

    cp main/mimi_secrets.h.example main/mimi_secrets.h
    
  3. 생성된 mimi_secrets.h 파일을 편집기로 열어 WiFi 접속 정보, 텔레그램 토큰, 사용할 LLM 제공자(anthropic 또는 openai) 및 발급받은 API 키를 정확히 입력합니다:

    #define MIMI_SECRET_WIFI_SSID       "YourWiFiName"
    #define MIMI_SECRET_WIFI_PASS       "YourWiFiPassword"
    #define MIMI_SECRET_TG_TOKEN        "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11"
    #define MIMI_SECRET_API_KEY         "sk-ant-api03-xxxxx"
    #define MIMI_SECRET_MODEL_PROVIDER  "anthropic"     // "anthropic" or "openai"
    #define MIMI_SECRET_SEARCH_KEY      ""              // optional: Brave Search API key
    #define MIMI_SECRET_PROXY_HOST      ""              // optional: e.g. "10.0.0.1"
    #define MIMI_SECRET_PROXY_PORT      ""              // optional: e.g. "7897"
    
  4. 펌웨어 코드를 전체 클린 빌드한 뒤, 보드에 플래싱(flash)합니다:

    # Clean build (required after any mimi_secrets.h change)
    idf.py fullclean && idf.py build
    
    # Find your serial port
    ls /dev/cu.usb*          # macOS
    ls /dev/ttyACM*          # Linux
    
    # Flash and monitor (replace PORT with your port)
    # USB adapter: likely /dev/cu.usbmodem11401 (macOS) or /dev/ttyACM0 (Linux)
    idf.py -p PORT flash monitor
    

:warning:주의사항:warning:: 시중에 판매되는 대부분의 ESP32-S3 보드에는 2개의 USB-C 포트가 있습니다. 펌웨어를 최초로 플래싱할 때는 외부 UART 브릿지 포트(COM)가 아닌, 칩과 직접 통신하는 Native USB Serial/JTAG(보통 USB로 표기됨) 포트에 케이블을 정확히 꽂아야만 오류 없이 펌웨어가 정상적으로 업로드됩니다.

실시간 런타임 설정 및 터미널 CLI 명령어

MimiClaw는 설정을 바꾸기 위해 코드를 매번 번거롭게 다시 컴파일하고 플래싱할 필요가 없습니다. PC와 USB로 연결된 상태에서 시리얼 터미널(115200 baud)에 접속하여 런타임 환경에서 즉각적으로 다양한 설정을 동적 변경할 수 있는 편리한 CLI(Command Line Interface) 환경을 제공합니다. 여기서 설정된 값은 플래시 메모리(NVS)에 기록되어 부팅 시 기존 mimi_secrets.h의 설정값보다 최우선으로 적용됩니다.

  • mimi> wifi_set MySSID MyPassword: 새로운 WiFi 네트워크 접속 정보로 즉시 변경
  • mimi> set_model_provider openai: LLM 제공자를 Anthropic에서 OpenAI 등 다른 벤더로 실시간 전환
  • mimi> memory_read: 봇이 현재 메모리 시스템에 저장해 둔 장기 기억의 전체 내용 확인
  • mimi> heap_info: 현재 디바이스에서 사용 가능한 RAM(PSRAM 포함) 여유 공간 상태 점검
  • mimi> cron_start: 시스템에 등록된 백그라운드 스케줄러(Cron) 타이머를 수동으로 즉시 시작

이 외에도 내부망용 HTTP 프록시 설정, 특정 대화 세션의 강제 삭제, 텔레그램 토큰 동적 교체, 수동 하트비트 트리거 등 엣지 AI 디바이스의 독립적인 유지보수에 필요한 필수 관리 제어 기능들을 터미널 CLI 명령어로 완벽하게 지원하고 있습니다.

라이선스

MiniClaw 프로젝트는 MIT License로 매우 개방적으로 공개 및 배포되고 있습니다. 누구나 자유로운 소스 코드 수정 및 상업적/비상업적 활용이 가능합니다.

:house: MimiClaw 공식 홈페이지

:octopus: MimiClaw 프로젝트 GitHub 저장소




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:south_korea:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:wrapped_gift: 아래:down_right_arrow:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck:

2개의 좋아요