"필요한 기능이 이미 커맨드라인 도구로 나와 있을 때가 있어. 사이드카가 그걸 앱 안에 싣고 다니면서 돌리게 해줘."
사이드카가 뭐냐면
사이드카는 앱이랑 같이 실어서 돌아가는 중에 실행하는 외부 실행파일이야 — 영상이면 ffmpeg, 바이너리로 말아둔 Python 스크립트, Go CLI, 뭐든. 사용자한테 의존성을 깔라고 시키는 대신 앱 안에 심어두고, 네 Rust 코어가 필요할 때 띄우는 거지. Rust로 다시 만들기엔 비현실적인 무거운 네이티브 기능을 Tauri 앱이 전달하는 방법이야.
적어두고 이름 붙이기
바이너리를 tauri.conf.json의 bundle.externalBin 아래 적어. 그리고 여기서 다들 한 번 걸리는데 — 실제 파일 이름엔 target-triple 접미사를 붙여야 플랫폼마다 맞는 바이너리가 실려. ffmpeg-aarch64-apple-darwin, ffmpeg-x86_64-pc-windows-msvc.exe 이런 식으로. Tauri가 빌드할 때 맞는 걸 골라주고, 돌아갈 땐 접미사 없는 이름으로 찾아. 접미사를 빼먹으면 번들러가 네 바이너리를 못 찾아.
실행은 shell을 거쳐 — 그러니 좁혀
사이드카는 shell 플러그인의 Command.sidecar(...)로 실행해. 그러니까 같은 보안 규율이 그대로 걸려. shell capability가 그 사이드카 하나를, 되도록 허용할 인자까지 지정해서 허락해야 해. 사이드카는 권한을 쥔 네이티브 실행이니까 다른 셸 명령이랑 똑같이 조심해서 다뤄 — 이 바이너리 하나만 허락하고 그 이상은 안 돼. (참고로 모든 앱이 사이드카를 필요로 하진 않아. Cinder만 해도 바이너리를 싣는 대신 네트워크 서비스로 무거운 이미지 작업에 닿아. 필요가 다르면 아키텍처도 달라지는 거지.)