AnyModelBot (MIT・Node.js / TypeScript)을 공식 Docker 이미지로 실행하고 다음 작업을 수행한 작업 메모입니다. 홍보 목적이 아닌 '실행 가능한 절차'에 대한 내용입니다.
ghcr.io/modelflare-ai/anymodel-bot
(x64 / arm64) 환경에서 실행 -
ui-token을 추출하여 관리 화면에 접속합니다. - 최초 로그인 (임의 브라우저를 사용하여 Modelflare에 접속한 후, 도착 링크를 앱에 붙여넣거나 공식 API Key 사용)
- 대화 중
/model로 모델 전환, 봇 기본 모델 및 백그라운드용 모델 분리 -
/data/memory의 Markdown 파일과 journal.jsonl을 docker exec으로 확인합니다.
이 정보는 리포지토리의 README, .env.example, docs/privacy*.md, src/agent/memory.ts 등의 내용을 기반으로 작성되었습니다. 벤치마크 점수나 별점은 기재하지 않았습니다.
작성자는 공동 개발자인 Malachi입니다.
- Docker가 작동하는 Linux / macOS / Windows, 또는 NAS・자택 서버 환경
- 모델 호출용 네트워크 (로컬 LLM 실행이 아님. 요청은 Modelflare를 경유하거나 자신의 공식 API Key를 사용하여 프로바이더에 직접 전송)
- 포트 3600을 인터넷에 그대로 노출하지 않도록 주의할 것 (README에 명시됨)
docker run -d --name amb -p 3600:3600 -v amb-data:/data ghcr.io/modelflare-ai/anymodel-bot
컨테이너 내부의 모든 데이터는 /data (SQLite・기억・설정・게이트웨이 설정 등)에 저장됩니다. 이름 붙은 볼륨 amb-data를 반드시 마운트해야 합니다. AMB_UI_HOST가 이미지 측에서 0.0.0.0으로 설정되어 있어 토큰 인증이 강제됩니다.
확인 방법:
docker ps --filter name=amb
docker logs amb --tail 40
docker exec amb cat /data/ui-token
브라우저에서 다음 주소로 접속합니다.
LAN 내부에서만 사용할 경우, VPN이나 리버스 프록시 + 인증 뒤에 배치해야 합니다. 3600 포트를 공용 인터넷에 직접 노출하지 마십시오.
데스크톱 버전의 경우 최초 실행 시 시스템 브라우저를 통해 Modelflare에 로그인하므로 키를 수동으로 복사할 필요가 없습니다.
Docker나 원격 환경에서는 브라우저 콜백이 도착하지 않습니다. README의 절차는 다음 두 가지 중 하나입니다.
- 권장: 임의의 기기 브라우저에서 Modelflare에 로그인한 후, 접속된 링크(주소창 URL)를 앱의 최초 화면에 붙여넣습니다. - 대안: OpenAI / Anthropic / Google 등의 공식 API Key를 붙여넣습니다 (키는 기기 측 게이트웨이 설정에 저장됨. 이미지・영상 생성은 현재 Modelflare 경유만 가능).
로그인 후, 모델 목록에서 컨텍스트 길이・능력 태그・참고 가격을 확인할 수 있습니다. 잔액・저잔량 알림・일일 사용량은 앱 내에서 확인 가능합니다 (앱 자체에 월별 결제는 없습니다).
채팅 입력 근처의 모델 버튼이나 슬래시 명령어:
사용 예시:
- 목록을 통해 컨텍스트 길이・vision / tools / reasoning・참고 가격을 읽어봅니다 (스크린샷 영역: 모델 선택기)
- 해당 대화에만 강력한 모델로 전환 → 질문 → 다시 저렴한 모델로 복귀시키기
- 봇 설정에서 기본 모델을 지정합니다 (매번 같은 페르소나・같은 가격대를 유지). - 기억 정리나 컨텍스트 계승 등에 사용됩니다.
- 백그라운드 작업에는 대화용과는 별개의 저렴한 모델을 지정합니다.
주의사항 (README / FAQ 참고):
- 로컬에서 모델을 구동하지 않습니다. Ollama 등의 로컬 추론은 이 앱의 대상이 아닙니다. - Modelflare의 API 도메인은
modelflare.dev /origin.modelflare.dev /cf.modelflare.dev 세 가지를 설정에서 테스트할 수 있으나, 자동 전환은 하지 않습니다. - 모델을 변경해도 기억 파일의 스코프는 바뀌지 않습니다 (봇 / 그룹 / 팀에 대한 이야기이며, 프로바이더에 관한 것이 아닙니다).
채널(WeChat / Feishu / Telegram 등)에서도 /model, /reset을 사용할 수 있으며, 채널에서는 /bot <이름>으로 다른 봇에게 할당할 수 있습니다.
프로그램은 .env 파일을 자동으로 읽지 않습니다. 프로세스 매니저나 docker run --env-file을 통해 전달해야 합니다. 환경 변수는 <데이터 디렉토리>/config.json보다 우선합니다.
# 예시 (모두 선택 사항. .env.example 참조)
AMB_DEFAULT_MODEL=openai/gpt-5.6-sol
AMB_CONTEXT_MESSAGES=40
...
docker rm -f amb
docker run -d --name amb -p 3600:3600 -v amb-data:/data --env-file .env \
ghcr.io/modelflare-ai/anymodel-bot
볼륨이 그대로 유지되므로, 로그인 상태와 기억은 남아 있습니다.
src/agent/memory.ts에 기반한 3계층 구조:
/data/memory/bots/<botId>/MEMORY.md
/data/memory/bots/<botId>/topics/<topic>.md
/data/memory/groups/<groupKey>/…
...
최대 용량 가이드라인(문자 수): 엔트리 300 / MEMORY.md 본체 4000 / 토픽당 파일 16000 / 토픽 개수 40개.
채팅에서 "짧은 답변을 좋아함", "17:00에 일일 보고서" 등을 기억시킨 후:
docker exec amb ls -R /data/memory
docker exec amb sh -c 'cat /data/memory/bots/*/MEMORY.md'
쓰기 전에 API 키나 비밀번호와 같은 문자열은 거부됩니다. 메모리 폴더는 비밀번호 관리자가 아닙니다.
성공적인 add/remove가 발생할 때마다 한 줄의 JSON이 추가됩니다.
{"at":1731168000000,"scope":"bot:abc","file":"MEMORY","op":"add","text":"짧은 답변을 좋아함","by":"chat"}
docker exec amb tail -n 20 /data/memory/journal.jsonl
docker exec amb sh -c 'grep "\"op\":\"add\"" /data/memory/journal.jsonl | tail -n 10'
누가, 언제, 어떤 파일에, 무엇을 추가했는지/삭제했는지 원본 로그로 남아 있어 백업이나 감사(audit)가 용이합니다.
관리 화면에서 봇을 새로 생성하고 짧은 페르소나를 작성합니다(예: "답변은 간결하게", "작업 로그는 매일 요약"). 권한 프리셋은 다음 세 단계입니다.
- 읽기 전용 — 파일 쓰기가 불가능 -
- 워크스페이스 (기본) — 봇 전용 폴더 내에서만 쓰기가 가능하며, 외부로 나갈 때 승인을 요청함 -
- 전체 접근 — 샌드박스가 없음 (재귀 삭제 등은 여전히 확인 필요)
기본 워크스페이스 상태를 유지한 채, 채팅으로 "이 설정을 기억해줘"라고 요청하고 이어서 /data/memory를 확인하는 흐름이 가장 이해하기 쉽습니다. 채널 연동(WeChat의 QR, Feishu의 개별 채팅, Telegram / Slack / Discord의 토큰)은 설정 > 연결에서 추가하며 모든 봇과 공유됩니다. 스마트폰 전용 앱은 없으므로, 상시 구동 중인 호스트로 채널을 통해 전달되는 형태가 됩니다.
3600 포트를 공용 인터넷에 직접 노출하지 마십시오-
(.env 파일은 자동 로드되지 않음 (--env-file 필수))
- Docker 최초 실행 시에는 '링크 붙여넣기' 또는 공식 API Key 사용 (데스크톱의 원클릭과는 별개)
- PC가 꺼지면 규칙이 작동하지 않습니다 → 상시 구동을 원한다면 NAS / 서버의 Docker 사용
- 스마트폰 전용 앱은 없습니다. WeChat / Feishu(현 시점에서는 개별 채팅) / Telegram / Slack / Discord를 통해, 실행 중인 봇으로 전달되는 형태
macOS 컴퓨터 작업은 Beta 기능입니다 - 자체 빌드:
git submodule update --init --depth 1 vendor/magpie
이후에 docker build
데이터를 완전히 삭제하려면:
docker rm -f amb && docker volume rm amb-data
docker run
한 번의 실행과 ui-token으로 관리 화면까지 이동할 수 있습니다. - Docker에서는 랜딩 링크를 붙여넣거나 공식 API Key를 사용합니다.
/model로 대화 단위, 기본값(default), 백그라운드용을 별도로 지정합니다. - 기억은 /data/memory의 Markdown에 저장되며, 변경 사항은 journal.jsonl에 기록됩니다.
— Malachi (AnyModelBot 공동 개발자)