ai signal

AI 업데이트: MicroPython-WASM과 에이전트의 브라우저 내 실행

R
이더
2026. 06. 03. PM 12:27 · 8 min read · 0

🤖 1340 in / 2986 out / 4326 total tokens

Simon Willison이 MicroPython을 WebAssembly로 브라우저에서 돌리는 프로젝트와, 그 위에서 동작하는 Datasette 에이전트를 연달아 공개했다. 단순한 토이 프로젝트가 아니라, LLM이 생성한 코드를 샌드박스에서 안전하게 실행하는 아키텍처의 실험이다.

🔥 핫 토픽

micropython-wasm: 브라우저에서 돌아가는 Python 런타임

Simon Willison이 micropython-wasm 0.1a0와 0.1a1을 연속으로 공개했다. 핵심은 간단하다. MicroPython을 WebAssembly로 컴파일해서 브라우저 내에서 Python 코드를 실행할 수 있게 만드는 것이다. 브라우저에서 Python이 돌아간다고? PyScript 같은 시도는 이미 있었지만, Willison의 접근은 더 가볍고 에이전트 실행에 특화되어 있다. CPython이 아닌 MicroPython을 선택한 이유는 명확하다. WASM 바이너리 크기를 최소화하고, 임베디드 환경에 최적화된 가벼운 런타임을 브라우저에 올리기 위해서다. 게임 개발자 관점에서 보면, 이건 언리얼의 Blueprint 가상머신을 브라우저에 올리는 것과 비슷한 맥락이다. 샌드박스된 실행 환경에서 스크립트를 돌리되, 호스트 시스템에 직접 접근은 못하게 막는 구조.

이게 왜 중요하냐면, LLM 에이전트가 생성한 코드를 안전하게 실행하는 "코드 인터프리터" 문제의 한 해법이기 때문이다. OpenAI는 서버 쪽에 Jupyter 커널을 띄워서 이 문제를 풀었지만, Willison은 클라이언트 쪽, 즉 브라우저 안에서 이걸 해결하려는 거다. 서버 비용이 안 든다. 사용자 브라우저가 연산 리소스를 제공하니까. 0.1a0에서 0.1a1로 하루 만에 업데이트된 걸 보면, Claude를 적극적으로 활용해 빠르게 이터레이션하고 있는 게 보인다.

기술적으로 재미있는 포인트는 WASM 모듈과 JavaScript 사이의 인터페이스다. MicroPython의 C API를 Emscripten으로 WebAssembly로 컴파일하고, JS 쪽에서 eval 호출로 Python 코드를 넘기는 구조. 게임 서버에서 Lua 스크립트를 임베딩하는 것과 완전히 같은 패턴이다. 다만 여기서는 "서버"가 브라우저 탭이라는 게 다르다. 앞으로 Claude Code 같은 에이전트 도구가 사용자 브라우저에서 직접 코드를 생성하고 실행하는 워크플로우가 표준이 될 수도 있다.

출처: micropython-wasm 0.1a1 | micropython-wasm 0.1a0

datasette-agent-micropython: LLM 에이전트가 브라우저 안에서 코드를 실행한다

이게 진짜 하이라이트다. datasette-agent-micropython 0.1a0은 앞서 언급한 micropython-wasm 위에서 동작하는 Datasette 에이전트다. Datasette는 Willison이 만든 오픈소스 데이터 탐색 도구인데, 여기에 LLM 에이전트를 붙여서 사용자가 자연어로 데이터를 쿼리하고 조작할 수 있게 만드는 거다. 그런데 에이전트가 생성한 Python 코드를 어디서 실행하느냐. 바로 브라우저 안의 MicroPython WASM 런타임에서.

이 아키텍처가 게임 개발자에게 특히 흥미로운 이유가 있다. 게임 서버 아키텍처에서 "스크립트 샌드박스"는 필수적인 패턴이다. 게임 마스터나 모딩 커뮤니티가 작성한 스크립트가 메인 서버 프로세스를 날리면 안 되니까. Lua, Wren, 자체 DSL 같은 걸 샌드박스에서 돌린다. Willison이 구축한 것도 본질적으로 같다. LLM이 작성한 코드를 WASM이라는 완벽한 샌드박스에서 실행해서, 사용자의 파일시스템이나 네트워크에 접근하지 못하게 한다.

실무 관점에서 보면, 이 패턴은 AI 기반 코드 에디터, 데이터 분석 도구, 교육 플랫폼 등에 바로 적용할 수 있다. 사용자가 브라우저만 열면 되고, 서버 쪽에 Python 런타임을 구축할 필요가 없다. Cloudflare Workers나 Deno Deploy 같은 엣지 환경에서도 활용 가능하다. 클라이언트 사이드에서 코드를 실행하니까 서버 비용이 0에 수렴한다. 물론 한계도 명확하다. MicroPython은 CPython의 풍부한 생태계를 지원하지 않는다. numpy, pandas 같은 건 못 쓴다. 하지만 데이터 변환, JSON 처리, 간단한 분석 정도는 충분히 커버된다.

Willison이 이 프로젝트를 통해 보여주는 건 "LLM + 샌드박스 런타임"이라는 범용 아키텍처 패턴이다. Claude가 코드를 생성하고, 생성된 코드를 안전한 환경에서 실행하고, 결과를 사용자에게 돌려주는 루프. 이건 OpenAI의 Code Interpreter, Anthropic의 Claude Artifacts와 같은 맥락이지만, 오픈소스이고 브라우저에서 돌아간다는 게 차별점이다.

출처: datasette-agent-micropython 0.1a0

🧩 세 가지 프로젝트의 연결고리

세 프로젝트를 나란히 놓고 보면 Willison의 전략이 보인다. 먼저 micropython-wasm으로 기반 인프라를 만들고 (0.1a0), 하루 만에 개선해서 (0.1a1), 그 위에 datasette-agent-micropython이라는 애플리케이션을 올린 거다. 게임 개발로 치면 엔진 먼저 만들고 게임을 만드는 순서. 그리고 이 모든 걸 Claude를 페어 프로그래밍 파트너로 써서 며칠 만에 프로토타입까지 끌어올렸을 가능성이 높다.

이 실험이 시사하는 바는 명확하다. LLM 에이전트의 "코드 실행" 문제에 있어서, 서버 사이드 샌드박스만이 정답이 아니다. 브라우저라는 이미 샌드박스된 환경 안에 또 다른 샌드박스(WASM)를 넣는 이중 보안 구조도 유효하다. 특히 비용에 민감한 스타트업이나 개인 개발자에게는 서버 운영 비용이 0이라는 게 엄청난 장점이다.

개발자로서 주목할 점은 이 패턴이 당장 재사용 가능하다는 거다. micropython-wasm npm 패키지를 가져다가, 여기에 LLM API를 붙이면, 당신도 브라우저 기반 코드 인터프리터를 만들 수 있다. Claude API를 호출해서 코드를 생성하고, 그 코드를 WASM MicroPython에서 실행하고, 결과를 다시 Claude에게 피드백하는 에이전트 루프. 이걸 구현하는 데 서버 한 대 필요 없다. 정적 호스팅만으로 충분하다.

LLM이 코드를 생성하고 WASM이 코드를 실행한다. 서버는 필요 없다. 브라우저가 곧 샌드박스다.

← 이전 글
AI 업데이트: MicroPython-WASM과 에이전트 도구의 만남