홈으로 돌아가기

AI 스킬을 위한 WebAssembly: Luminarys AI

Luminarys AI — WebAssembly 샌드박스에서 스킬을 가진 AI 에이전트 플랫폼. Go, Rust, AssemblyScript를 지원하며, 다양한 아키텍처에서의 클러스터링과 MCP 프로토콜을 지원합니다. 엄격한 격리, 다중 LLM 라우팅 및 자율 모드를 제공합니다.

Luminarys의 격리된 AI 스킬: WASM + 클러스터
Advertisement 728x90

Luminarys AI: 웹어셈블리 샌드박스에서 격리된 AI 스킬을 위한 모듈형 플랫폼

Luminarys AI는 AI 에이전트를 배포하기 위한 플랫폼으로, 스킬을 웹어셈블리(WebAssembly) 샌드박스에 격리하여 실행합니다. Go, Rust, AssemblyScript로 스킬을 작성할 수 있으며, 이기종 아키텍처 클러스터링과 MCP(Model Context Protocol)를 지원합니다. 이 플랫폼은 실제 운영 환경에서의 보안, 다중 언어 지원, 확장성 문제를 해결합니다.

샌드박스에서의 스킬 격리

스킬은 웹어셈블리로 컴파일되어 설정에 따라 엄격한 격리 상태에서 실행됩니다. 파일 시스템(FS), 셸, HTTP 접근은 허용 목록(allowlist)을 통해 제한되며, 스킬은 물리적으로 자신의 경계를 벗어날 수 없습니다. 검증은 로드 시점에 이루어지며, 설정 불일치 시 실행이 차단됩니다.

하드웨어 모니터링을 위한 설정 예시:

Google AdInline article slot
# 예시: 하드웨어 상호작용 스킬
id: hardware-monitor
permissions:
  fs:
    enabled: true
    dirs:
      - "/sys/class:ro"               # sysfs 읽기 (센서, 장치)
      - "/dev/serial:rw"              # 시리얼 포트 접근
  shell:
    enabled: true
    allowlist:
      - "lsusb **"                    # 허용된 명령어만
      - "i2cget **"
      - "cat /proc/cpuinfo"
    allowed_dirs:
      - "/tmp/hw-monitor"

CPU 온도 측정 스킬은 /sys/class/thermal만, GPIO 스킬은 /sys/class/gpio만 접근할 수 있습니다. 명령어 체인 실행 불가, 샌드박스 탈출 불가능합니다.

SDK를 활용한 다중 언어 스킬

스킬은 Go, Rust, AssemblyScript로 작성됩니다. lmsk 코드 생성기는 주석 처리된 코드에서 웹어셈블리 모듈을 생성하며, 라우팅, 직렬화, 검증 기능을 제공합니다.

  • AssemblyScript: 컴팩트한 모듈(~100KB), TypeScript 문법. HTTP, 파일 시스템, 텍스트 처리에 적합.
  • Rust: 고성능, 네이티브 라이브러리 지원. 프로토콜 버퍼/PCAP 파싱, ONNX 추론, 트리-시터(트리 파서)에 적합.
  • Go: 표준 라이브러리, JS/Python VM 임베딩 지원.

Go 스킬 예시:

Google AdInline article slot
// @skill:id      ai.example.hello
// @skill:name    "Hello Skill"
// @skill:version 1.0.0
// @skill:desc    "간단한 인사 스킬."
package main

import sdk "github.com/LuminarysAI/sdk-go"

// @skill:method greet "인사말 반환."
// @skill:param  name required "사람 이름"
// @skill:result "인사 문자열"
func Greet(_ *sdk.Context, name string) (string, error) {
    return "안녕하세요, " + name + "!", nil
}

Rust 버전:

/// @skill:id      ai.example.hello
/// @skill:name    "Hello Skill"
/// @skill:version 1.0.0
/// @skill:desc    "간단한 인사 스킬."

use luminarys_sdk::prelude::*;

/// @skill:method greet "인사말 반환."
/// @skill:param  name required "사람 이름"
/// @skill:result "인사 문자열"
pub fn greet(_ctx: &mut Context, name: String) -> Result<String, SkillError> {
    Ok(format!("안녕하세요, {}!", name))
}

AssemblyScript:

/**
 * @skill:id      ai.example.hello
 * @skill:name    "Hello Skill"
 * @skill:version 1.0.0
 * @skill:desc    "간단한 인사 스킬."
 */
import { Context } from "@luminarys/sdk-as";

// @skill:method greet "인사말 반환."
// @skill:param  name required "사람 이름"
// @skill:result "인사 문자열"
export function greet(_ctx: Context, name: string): string {
  return "안녕하세요, " + name + "!";
}

서로 다른 언어로 작성된 스킬들은 단일 호스트에 로드되어 서로 호출하고 상태를 공유할 수 있습니다.

Google AdInline article slot

이기종 노드에서의 클러스터링

마스터 노드는 x86, ARM, RISC-V, IoT 장치에 있는 슬레이브 노드로 호출을 라우팅합니다. 스킬들은 클러스터를 인식하지 못하며, API는 로컬처럼 동작합니다.

시나리오:

  • CI/CD: Linux 슬레이브에서 테스트, Windows 슬레이브에서 Windows 바이너리 빌드.
  • 하드웨어: Raspberry Pi에서 I2C, Jetson에서 비디오 처리, x86에서 시리얼 통신.
  • IoT 플릿: 클라우드에 마스터, 엣지에 GPIO/SPI/UART 지원 슬레이브 배치.
  • 모니터링: sysfs, SMART, CPU/GPU 모니터링을 샌드박스에서 실행.

릴레이 서버는 암호화된 파일 전송을 보장합니다. 슬레이브 장애 시 자동으로 도구 업데이트가 이루어집니다.

다중 LLM 및 에이전트 모드

작업/언어별 모델 라우팅: 코드 작업에는 deepseek-coder, Rust 작업에는 rust-specialist 모델 사용. 재시작 없이 설정 변경 가능.

에이전트 모드(개발용):

  • 배치 처리: 다중 스킬에 대한 동기/비동기 호출.
  • 자율성: 이벤트(타이머, 센서, MQTT) 발생 시 콜백 실행.
  • 상호작용: 깊이/타임아웃 제어가 가능한 스킬 간 호출.

MCP 호환성

모델 컨텍스트 프로토콜(Model Context Protocol) 지원: Claude, Cursor, Open WebUI와 통합. 전송 방식—Streamable HTTP, SSE, stdio, OpenAPI.

핵심 포인트

  • 웹어셈블리 샌드박스에서의 스킬 실행으로 권한 탈출 방지.
  • 통합 주석 및 코드 생성기를 통한 다중 언어 지원(Go/Rust/AssemblyScript).
  • 클러스터링으로 아키텍처 간 부하 분산, API 변경 불필요.
  • Claude/Cursor/Open WebUI와의 통합을 위한 MCP 호환성.
  • 실시간 및 자율 에이전트를 위한 콜백 모델.

— Editorial Team

Advertisement 728x90

다음 읽기