본문으로 건너뛰기
로그인 둘러보기
개발·코딩·데이터베이스 · 윈도우즈 유틸

invowk

0

invowk는 Go로 작성된 동적으로 확장 가능한 CLI 기반 명령 실행기입니다. just와 비슷한 개념을 바탕으로 여러 실행 런타임을 지원하며, 프로젝트 또는 모듈 단위로 명령을 정의·실행·검증하는 데 초점을 맞춘 도구입니다.

명령 실행기작업 실행기

소개

invowk는 Go로 작성된 동적으로 확장 가능한 CLI 기반 명령 실행기입니다. just와 비슷한 개념을 바탕으로 여러 실행 런타임을 지원하며, 프로젝트 또는 모듈 단위로 명령을 정의·실행·검증하는 데 초점을 맞춘 도구입니다. 2026년 8월 기준 최신 안정 버전은 0.15.0이며, 공식 웹사이트와 GitHub 저장소를 통해 알파 단계로 공개되어 있습니다.

상세정보

네 가지 실행 런타임

native, virtual-sh, virtual-lua, container 네 가지 런타임을 지원합니다. native는 시스템 기본 셸(bash, sh, powershell 등)을 그대로 사용하고, virtual-sh는 내장 mvdan/sh 인터프리터와 28종의 u-root 유틸리티(cat, cp, ls, grep, sort, seq, tar 등)로 동작합니다. virtual-lua는 임베디드 Lua 런타임에서 스크립트를 실행하며, container는 Docker 또는 Podman 컨테이너 안에서 명령을 수행합니다.

CUE 기반 설정과 다중 소스 명령

invowkfile.cue는 CUE 언어로 작성되며, 명령 이름, 설명, 스크립트, 런타임, 대상 플랫폼, 환경 변수, 의존성을 한 곳에서 정의합니다. 명령은 현재 디렉터리 invowkfile.cue, 형제 *.invowkmod 모듈, 설정의 includes, 어댑터가 제공한 모듈, ~/.invowk/cmds/ 순서로 발견되며, 이름이 겹칠 때는 @<source> 접두사나 –ivk-from 플래그로 출처를 명시해 실행합니다.

계층적 명령과 의존성 검증

이름에 공백을 넣어 invowk cmd test unit처럼 하위 명령 형태의 계층을 만들 수 있고, 다른 invowk 명령을 depends_on.cmds로 참조할 수도 있습니다. 또한 PATH 상의 도구(tools), 환경 변수(env_vars), 파일/디렉터리 권한(filepaths), 시스템 기능(capabilities: internet, containers, tty, local-area-network), 사용자 정의 스크립트 검사(custom_checks)까지 의존성으로 선언해, 실행 전에 모든 조건을 한 번에 검사하고 누락된 항목을 한 메시지로 안내합니다.

명령 플래그, TUI 컴포넌트, 셸 자동완성

flags 배열로 POSIX 스타일의 명령 플래그를 정의하면 INVOWK_FLAG_ 접두사가 붙은 환경 변수로 스크립트에 전달되며, type(string/bool/int/float), required, default_value, 단축 별칭, 정규식 validation을 지정할 수 있습니다. input, choose, confirm, filter, file, table, spin, pager 같은 gum 스타일의 인터랙티브 TUI 컴포넌트도 함께 제공되며, bash, zsh, fish, PowerShell용 탭 자동완성도 지원합니다.

모듈 시스템과 LLM 기반 작성 지원

*.invowkmod 디렉터리의 invowkmod.cue에는 모듈 식별자, semver 버전, 설명, 라이선스(SPDX), 저장소 URL을 기재합니다. 모듈은 원격 Git 저장소(GitHub, GitLab)에서 시맨틱 버전과 잠금 파일 기반으로 의존성을 가져올 수 있으며, invowk audit 명령으로 모듈과 잠금 파일을 점검할 수 있습니다. invowk agent cmd, invowk agent mod 하위 명령은 Codex, Claude, Gemini, Ollama 등 LLM 제공자에 현재 스키마를 전달해 검증된 명령과 모듈을 생성·수정·삭제하도록 돕습니다.

설치와 기본 사용

설치 방법은 운영체제별로 다양하게 제공됩니다. Linux/macOS에서는 curl로 설치 스크립트를 받아 SHA256을 검증한 뒤 ~/.local/bin에 설치하고, Windows PowerShell 스크립트는 %LOCALAPPDATA%Programsinvowk에 설치해 사용자 PATH에 등록합니다. macOS에서는 brew install –cask invowk/tap/invowk로, Windows에서는 winget install Invowk.Invowk로 설치할 수 있고, Go 1.27+ 환경이라면 go install github.com/invowk/invowk@latest로 받을 수도 있습니다. 업그레이드도 같은 방식으로 winget upgrade Invowk.Invowk처럼 동일한 채널에서 진행합니다.

설치가 끝나면 프로젝트 디렉터리에서 invowk init으로 invowkfile.cue를 생성하고, invowk cmd로 사용 가능한 목록을 확인한 뒤 invowk cmd <command>로 실행합니다. 실행 시 –ivk-runtime native | virtual-sh | virtual-lua | container로 런타임을 선택할 수 있고, 컨테이너 런타임은 Linux에서만 동작합니다.

활용 예시

  • build, test unit 같은 프로젝트 명령을 invowkfile.cue에 등록해, 팀원 누구라도 동일한 절차로 빌드와 테스트를 실행하도록 표준화하는 용도.
  • deploy 명령에 tools(aws) 및 env_vars(AWS_ACCESS_KEY_ID 또는 AWS_PROFILE) 의존성을 걸어 자격 증명과 도구 누락을 한 번에 검사하는 용도.
  • lint처럼 가벼운 작업은 virtual-sh 런타임으로, 격리가 필요한 작업은 container 런타임(debian:stable-slim 등)으로 분리해 한 invowkfile 안에 플랫폼·런타임별 구현을 함께 두는 용도.
  • tools.invowkmod, testing.invowkmod처럼 디렉터리 단위로 명령 묶음을 분리하고, 인라인 invowkfile과 모듈 명령을 같은 자리에서 @<source> 접두사로 명확히 구분해 실행하는 용도.

제한 및 라이선스 확인사항

  • 공식 사이트에서는 알파 소프트웨어로 안내하며, 릴리스 사이에 호환되지 않는 변경이 생길 수 있습니다.
  • virtual-sh와 virtual-lua는 샌드박스가 아니라 프로세스 격리도 제공하지 않으며, 허용한 호스트 바이너리는 여전히 네이티브 호스트 프로세스로 실행됩니다.
  • container 런타임은 Linux에서만 동작하며 Docker 또는 Podman이 사전에 설치되어 있어야 합니다.
  • flags에서 ivk-, invowk-, i- 접두사와 help, version, 그리고 단축 별칭 e/E/w/h/r/v/i/c/f는 시스템용으로 예약되어 있어 임의로 사용할 수 없습니다.
  • 릴리스 아티팩트는 Cosign 키리스 서명(GitHub Actions OIDC)으로 서명되어 cosign verify-blob과 sha256sum -c로 무결성을 직접 검증할 수 있습니다.
  • 라이선스는 MPL-2.0이며, 모듈의 license 필드에는 SPDX 식별자(MIT, Apache-2.0, MPL-2.0 등)를 사용하도록 규정되어 있습니다.

자주 묻는 질문

  • invowk는 어떤 운영체제에서 동작하나요? Linux, macOS, Windows에서 모두 동작하며, Go install과 소스 빌드는 세 플랫폼을 모두, Homebrew는 macOS, winget과 PowerShell 스크립트는 Windows amd64를 지원합니다.
  • 그래픽 인터페이스가 있나요? CLI 기반 도구이며, 별도의 GUI는 제공되지 않습니다. 다만 gum 스타일의 터미널 UI 컴포넌트(input, choose, confirm, filter, file, table, spin, pager 등)를 스크립트 안에서 사용해 인터랙티브 흐름을 구성할 수 있습니다.
  • 설정 파일은 어떤 형식인가요? invowkfile.cue는 CUE 형식으로 작성하며, 모듈은 별도의 invowkmod.cue에 모듈 식별자와 semver 버전을 기록합니다.
  • 무엇이 무료인가요? 저장소는 MPL-2.0으로 공개되어 있어 소스 코드 자체는 해당 라이선스 조건 하에 자유롭게 받아 사용할 수 있습니다.

시스템 요구사항

OS: Windows, macOS, Linux (cross-platform). installer_type: zip. Go 설치 경로 사용 시 Go 1.27+ 필요 (Go install / From Source 방식). 가상 셸 사용 시 mvdan/sh와 u-root 유틸리티가 내장되어 별도 셸 설치 없이 동작. 컨테이너 런타임 사용 시 Docker 또는 Podman 필요.