원문 캡처 · github.com
원문 캡처 · github.com

mnft는 자연어 설명이나 이미지·데이터시트 링크를 입력하면 언어 모델이 CAD 코드를 작성하고, 엔진이 이를 실행해 STL·STEP 파일과 브라우저용 3D 미리보기를 만드는 오픈소스 프로젝트다. Apache-2.0 라이선스로 공개됐으며, 결과물은 사용하는 언어 모델에 따라 달라진다.

프로젝트는 Elixir 기반 핵심 라이브러리와 Phoenix 웹 앱, UI 없이 여러 사용자를 처리하는 헤드리스 참조 앱, build123d 코드를 실행하는 Python 도구로 구성된다. 기본 엔진은 build123d이며 OpenSCAD와 알파 단계인 smlibpy도 선택할 수 있다.

엔진출력조건
build123dSTEP, STL, GLB기본값. OpenCascade를 사용하며 초기 설정에 포함된다
openscadSTL, GLBOpenSCAD 실행 파일 설치 필요
smlibpy (알파)STEP, STL, GLB가상 환경에 추가 패키지 설치 필요

smlibpy는 Python 3.10–3.14용 휠을 제공하며 macOS·Linux·Windows를 지원한다. 프로젝트는 build123d보다 실제 사용 기간이 짧으므로 대체재가 아니라 보조 선택지로 다루라고 안내한다. OpenSCAD는 CLI 실행 파일이 필요하며, Windows에서는 GUI 실행 파일만으로는 작동하지 않는다.

직접 실행하려면 Elixir 1.17 이상과 Erlang/OTP, Python 3.11 또는 3.12, uv, 언어 모델 API 키가 필요하다. PDF 데이터시트 링크를 프롬프트에 넣을 때만 Poppler가 추가로 필요하다. 아래 명령은 참조 웹 앱을 로컬에서 실행하는 절차다.

sh
cd cad_worker && uv venv --python 3.12 && uv pip install -e . pytest && cd ..
cp .env.example mnft_cad_web/.env # then add your LLM_API_KEY
cd mnft_cad_web && mix setup
mix phx.server # http://localhost:4200

Docker 이미지로 실행하면 호스트에 Erlang, Python, Poppler를 설치할 필요가 없다. 생성 모델과 저널은 컨테이너의 /data에 저장되며, 볼륨을 연결하지 않으면 컨테이너가 종료될 때 사라진다. 장기 배포에서는 SECRET_KEY_BASE와 프록시 뒤에 둘 경우 PHX_HOST도 설정해야 한다.

sh
docker build -t mnft .
docker run --rm -p 4000:4000 -e LLM_API_KEY=sk-... mnft # http://localhost:4000

프로젝트는 모델이 작성한 코드를 정적 검사와 메모리·CPU 제한, 실행 시간 제한으로 통제한다고 설명한다. 다만 이를 샌드박스로 간주해서는 안 된다. 로컬에서 실행하거나 자체 인증 뒤에 두고, 외부 사용자에게 공개할 경우 작업자와 사용자 사이에 커널 수준 격리를 추가하라고 안내한다. 테스트는 Python과 세 Elixir 프로젝트에서 실행하며, CI는 Linux와 macOS에서 세 테스트 묶음을 모두 수행한다.

프로젝트는 Nanas Sound가 AI 코딩 에이전트를 사용해 설계·개발·유지 관리한다고 밝힌다.