TL;DR

  • Open Firmware는 AT Protocol을 통해 암호학적으로 서명된 소프트웨어를 배포하는 프로덕션 시스템으로, 배포 센터인 PDS에서 게시자가 릴리스 체인을 작성하고 엣지 에이전트와 Sidekar가 이를 가져와 감사하고 적용함.
  • 제품군은 청크 처리와 감사용 @open-firmware/core, XRPC 클라이언트, 게시·클라이언트·서버 에이전트와 IoT 관리 도구, Rust CLI인 ofw로 구성됨.
  • 신뢰 모델은 작성자의 DID와 PDS 커밋 서명, 릴리스 및 청크의 SHA-256 다이제스트, 다운로드 전 전체 체인 검증, 적용 전 블롭 및 전체 이미지 해시 검증으로 구성됨.
  • 안내형 빠른 시작은 예제 디렉터리에서 PDS 비밀 정보를 생성하고 Docker Compose 서비스를 실행한 뒤, 로컬 UI에서 상태를 확인하고 PDS에 릴리스를 게시하는 절차임.
  • 프로덕션 게시, IoT 기기 관리, 명세·문서, 개발 및 Apache-2.0 라이선스 관련 안내를 제공함.

Open Firmware

  • AT Protocol을 통해 암호학적으로 서명된 소프트웨어를 배포하는 프로덕션 시스템임.
  • 배포 센터는 PDS이며, 게시자는 서명된 릴리스 체인(레코드와 블롭)을 작성하고 엣지 에이전트와 Sidekar는 이를 가져와 감사하고 적용함.

제품

  • @open-firmware/core: 청크 처리, Phase A 감사, 서비스 시간대 — Docker 사용 안 함.
  • @open-firmware/atproto-lite: 기본 XRPC 클라이언트 — Docker 사용 안 함.
  • @open-firmware/host: PDS에 릴리스 게시 — Docker 사용 안 함.
  • @open-firmware/client: IoT·엣지 기기의 가져오기, 검증 및 적용 후크 — Docker 사용 안 함.
  • @open-firmware/sidekar: 서버 에이전트, Docker 적용은 선택 사항 — Docker 선택 사항.
  • @open-firmware/iot: 기기 식별, 공장 초기화, 봉인된 작업 — Docker 사용 안 함.
  • @open-firmware/utility: 가입 승인, 비밀번호 설정, 작업 관리를 위한 관리자 도구 — Docker 사용 안 함.
  • @open-firmware/server: 비공개 제어 플레인 API — Docker 사용 안 함.
  • ofw(Rust CLI): release, publish, pipeline-ack, audit 명령 — Docker 사용 안 함.

신뢰 모델

  • 작성자의 DID와 PDS 커밋 서명이 레코드를 인증함.
  • 릴리스와 청크에 SHA-256 콘텐츠 다이제스트를 적용함.
  • Phase A에서 다운로드 전에 전체 체인을 검증함.
  • Phase B에서 적용 전에 블롭과 전체 이미지 해시를 검증함.
  • AppView와 대시보드는 신뢰의 루트가 아님.

빠른 시작(안내형 둘러보기)

  • examples/full-stack으로 이동해 ./scripts/gen-pds-secrets.sh를 실행한 다음 docker compose up --build -d로 서비스를 시작함.
  • 자연어 안내와 실시간 상태를 제공하는 UI는 http://localhost:8099 이며, 전체 문서형 둘러보기는 examples/full-stack/WALKTHROUGH.md임.
  • ./scripts/publish-to-pds.sh "Hello from Open Firmware"로 PDS에 게시함.
  • 워크로드 주소는 http://localhost:8080 이며, PDS 상태 확인 주소는 http://127.0.0.1:2583/xrpc/_health 임.

프로덕션 게시

  • cli 디렉터리에서 cargo install --path .를 실행해 CLI를 설치함.
  • ofw publish에 PDS 주소, 식별자, 비밀번호, 제품명, 버전, 종류, 파일 경로를 지정해 게시하며, 예시 값은 https://your-pds.example, your-handle, my-app, 1.0.0, container, ./image.tar임. 비밀번호는 $OFW_PASSWORD 환경 변수로 전달하고 --yes 옵션을 사용함.
  • GitHub Actions 예제 경로는 cli/examples/github-actions-publish.yml임.

IoT 관리(가입·비밀번호·공장 초기화)

  • pnpm --filter @open-firmware/iot build, pnpm --filter @open-firmware/utility build, pnpm --filter @open-firmware/server build로 각 패키지를 빌드함.
  • pnpm --filter @open-firmware/iot-camera-emulator test:e2e로 종단 간 테스트를 실행함.
  • 관련 예제와 문서는 examples/iot-camera-emulator 및 docs/private-plane.md임.

명세 및 문서

  • docs/spec-release-chain.md
  • docs/architecture.md
  • docs/private-plane.md
  • docs/factory-provisioning.md
  • docs/sidekar.md
  • SECURITY.md

개발

  • pnpm install로 의존성을 설치함.
  • pnpm --filter @open-firmware/core test와 pnpm --filter @open-firmware/iot test로 테스트를 실행함.
  • pnpm -r run build로 전체 빌드를 실행함.
  • cli 디렉터리에서 cargo test와 cargo build --release를 실행함.

라이선스

  • Apache-2.0 라이선스임.