CLI 참조
AACWorkflow CLI 및 에이전트 데몬의 완전한 명령 참조.
aacworkflow CLI는 로컬 머신을 AACWorkflow에 연결합니다. 인증, 작업공간 관리, 이슈 추적을 처리하고 로컬에서 AI 작업을 실행하는 에이전트 데몬을 실행합니다.
인증
브라우저 로그인
aacworkflow loginOAuth 인증을 위해 브라우저를 열고, 90일 개인 액세스 토큰을 생성하고, 작업공간을 자동으로 설정합니다.
토큰 로그인
aacworkflow login --token <mul_...>개인 액세스 토큰으로 직접 인증합니다. 헤드리스 환경에 유용합니다. --token=을 빈 값으로 전달하여 대화식으로 입력합니다 (토큰이 쉘 히스토리에 남지 않음).
상태 확인
aacworkflow auth status현재 서버, 사용자 및 토큰 유효성을 표시합니다.
로그아웃
aacworkflow auth logout저장된 인증 토큰을 제거합니다.
에이전트 데몬
데몬은 로컬 에이전트 런타임입니다. 머신에서 사용 가능한 AI CLI를 감지하고, AACWorkflow 서버에 등록하고, 에이전트에 작업이 할당되면 작업을 실행합니다.
시작
aacworkflow daemon start기본적으로 백그라운드에서 실행되고 ~/.aacworkflow/daemon.log에 로그합니다.
포그라운드 실행 (디버깅에 유용):
aacworkflow daemon start --foreground중지
aacworkflow daemon stop상태
aacworkflow daemon status
aacworkflow daemon status --output jsonPID, 가동 시간, 감지된 에이전트 및 감시 중인 작업공간을 표시합니다.
로그
aacworkflow daemon logs # 마지막 50줄
aacworkflow daemon logs -f # 따라가기 (tail -f)
aacworkflow daemon logs -n 100 # 마지막 100줄지원되는 에이전트
데몬이 PATH에서 자동으로 감지하는 AI CLI:
| CLI | 명령 | 설명 |
|---|---|---|
| Antigravity | agy | Google의 코딩 에이전트 |
| Claude Code | claude | Anthropic의 코딩 에이전트 |
| CodeBuddy | codebuddy | Tencent의 코딩 에이전트 |
| Codex | codex | OpenAI의 코딩 에이전트 |
| Copilot | copilot | GitHub의 코딩 에이전트 |
| Cursor Agent | cursor-agent | Cursor 코딩 에이전트 |
| Hermes | hermes | Nous Research 코딩 에이전트 |
| Kimi | kimi | Moonshot 코딩 에이전트 |
| Kiro CLI | kiro-cli | Kiro ACP 코딩 에이전트 |
| OpenCode | opencode | 상용 코딩 에이전트 |
| OpenClaw | openclaw | 상용 코딩 에이전트 |
| Pi | pi | Inflection 코딩 에이전트 |
| Qoder | qodercli | Alibaba의 코딩 에이전트 |
| Trae | traecli | ByteDance의 코딩 에이전트 |
최소 하나가 필요합니다. 데몬은 감지된 각 CLI를 사용 가능한 런타임으로 등록합니다.
작동 방식
- 시작시 데몬이 설치된 에이전트 CLI를 감지하고 감시 중인 각 작업공간의 각 에이전트에 대해 런타임을 등록합니다
- 구성 가능한 간격 (기본값: 30초)으로 서버에 할당된 작업을 폴링합니다
- 작업이 도착하면 격리된 작업 공간 디렉토리를 생성하고, 에이전트 CLI를 생성하고, 결과를 스트리밍합니다
- 정기적으로 (기본값: 15초) 하트비트를 전송하여 데몬이 활성 상태임을 알립니다
- 종료시 모든 런타임을 등록 해제합니다
구성
데몬 동작은 플래그 또는 환경 변수를 통해 구성됩니다:
| 설정 | 플래그 | 환경 변수 | 기본값 |
|---|---|---|---|
| 폴 간격 | --poll-interval | AACWORKFLOW_DAEMON_POLL_INTERVAL | 30s |
| 하트비트 간격 | --heartbeat-interval | AACWORKFLOW_DAEMON_HEARTBEAT_INTERVAL | 15s |
| 에이전트 타임아웃 | --agent-timeout | AACWORKFLOW_AGENT_TIMEOUT | 2h |
| 최대 동시 작업 | --max-concurrent-tasks | AACWORKFLOW_DAEMON_MAX_CONCURRENT_TASKS | 20 |
| 데몬 ID | --daemon-id | AACWORKFLOW_DAEMON_ID | hostname |
| 장치 이름 | --device-name | AACWORKFLOW_DAEMON_DEVICE_NAME | hostname |
| 런타임 이름 | --runtime-name | AACWORKFLOW_AGENT_RUNTIME_NAME | Local Agent |
| 작업공간 루트 | — | AACWORKFLOW_WORKSPACES_ROOT | ~/aacworkflow_workspaces |
에이전트 특정 재정의:
| 변수 | 설명 |
|---|---|
AACWORKFLOW_CLAUDE_PATH | claude 바이너리의 사용자 정의 경로 |
AACWORKFLOW_CLAUDE_MODEL | 사용할 Claude 모델 재정의 |
AACWORKFLOW_CODEX_PATH | codex 바이너리의 사용자 정의 경로 |
AACWORKFLOW_CODEX_MODEL | 사용할 Codex 모델 재정의 |
AACWORKFLOW_OPENCODE_PATH | opencode 바이너리의 사용자 정의 경로 |
AACWORKFLOW_OPENCODE_MODEL | 사용할 OpenCode 모델 재정의 |
AACWORKFLOW_OPENCLAW_PATH | openclaw 바이너리의 사용자 정의 경로 |
AACWORKFLOW_OPENCLAW_MODEL | 사용할 OpenClaw 모델 재정의 |
AACWORKFLOW_HERMES_PATH | hermes 바이너리의 사용자 정의 경로 |
AACWORKFLOW_HERMES_MODEL | 사용할 Hermes 모델 재정의 |
AACWORKFLOW_PI_PATH | pi 바이너리의 사용자 정의 경로 |
AACWORKFLOW_PI_MODEL | 사용할 Pi 모델 재정의 |
AACWORKFLOW_CURSOR_PATH | cursor-agent 바이너리의 사용자 정의 경로 |
AACWORKFLOW_CURSOR_MODEL | 사용할 Cursor 모델 재정의 |
AACWORKFLOW_KIMI_PATH | kimi 바이너리의 사용자 정의 경로 |
AACWORKFLOW_KIMI_MODEL | 사용할 Kimi 모델 재정의 |
AACWORKFLOW_KIRO_PATH | kiro-cli 바이너리의 사용자 정의 경로 |
AACWORKFLOW_KIRO_MODEL | 사용할 Kiro 모델 재정의 |
AACWORKFLOW_COPILOT_PATH | copilot 바이너리의 사용자 정의 경로 |
AACWORKFLOW_COPILOT_MODEL | 사용할 Copilot 모델 재정의 |
AACWORKFLOW_CODEBUDDY_PATH | codebuddy 바이너리의 사용자 정의 경로 |
AACWORKFLOW_CODEBUDDY_MODEL | 사용할 CodeBuddy 모델 재정의 |
AACWORKFLOW_ANTIGRAVITY_PATH | agy 바이너리의 사용자 정의 경로 |
AACWORKFLOW_ANTIGRAVITY_MODEL | 사용할 Antigravity 모델 재정의 |
AACWORKFLOW_QODER_PATH | qodercli 바이너리의 사용자 정의 경로 |
AACWORKFLOW_QODER_MODEL | 사용할 Qoder 모델 재정의 |
AACWORKFLOW_TRAECLI_PATH | traecli 바이너리의 사용자 정의 경로 |
AACWORKFLOW_TRAECLI_MODEL | 사용할 Trae 모델 재정의 |
프로필
프로필을 사용하면 같은 머신에서 여러 데몬을 실행할 수 있습니다 — 예를 들어 프로덕션용과 스테이징용으로 각각.
# 스테이징 프로필 설정
aacworkflow setup --profile staging
# 해당 데몬 시작
aacworkflow daemon start --profile staging
# 기본 프로필은 별도로 실행
aacworkflow daemon start각 프로필은 자체 설정 디렉토리 (~/.aacworkflow/profiles/<name>/), 데몬 상태, 헬스 포트 및 작업공간 루트를 갖습니다.
작업공간
작업공간 나열
aacworkflow workspace list감시 중인 작업공간은 *로 표시됩니다. 데몬은 감시 중인 작업공간의 작업만 처리합니다.
감시 / 감시 취소
aacworkflow workspace watch <workspace-id>
aacworkflow workspace unwatch <workspace-id>세부 사항 가져오기
aacworkflow workspace get <workspace-id>
aacworkflow workspace get <workspace-id> --output json멤버 나열
aacworkflow workspace member list <workspace-id>작업공간 업데이트
관리자 또는 소유자 권한이 필요합니다. 모든 필드는 부분 업데이트입니다 (PATCH 의미론): 전달되지 않은 필드는 변경되지 않습니다.
aacworkflow workspace update <workspace-id> --name "Acme Eng"
aacworkflow workspace update <workspace-id> \
--description "Engineering team workspace" \
--issue-prefix ENG긴 텍스트는 stdin을 통해 (줄바꿈/백슬래시 유지):
cat <<'CTX' | aacworkflow workspace update <workspace-id> --context-stdin
우리는 5명의 AI-native 팀입니다.
작업 언어: 한국어 + 영어 혼합.
CTX편집 가능한 필드: --name, --description / --description-stdin, --context / --context-stdin, --issue-prefix. slug는 생성 후 읽기 전용이며 CLI에 노출되지 않습니다. --description과 --description-stdin (및 context 동명 쌍)은 상호 배타적입니다. 필드 플래그를 전달하지 않으면 명령이 거부되어 빈 PATCH를 피합니다. --issue-prefix ""도 거부됩니다: 현재 백엔드가 빈 prefix일 때 필드를 자동으로 건너뛰므로 CLI는 로컬에서 "성공처럼 보이는 no-op"을 피합니다.
이슈
이슈 나열
aacworkflow issue list
aacworkflow issue list --status in_progress
aacworkflow issue list --priority urgent --assignee "Agent Name"
aacworkflow issue list --assignee-id 5fb87ac7-23b5-4a7a-81fa-ed295a54545d
aacworkflow issue list --full-id
aacworkflow issue list --limit 20 --output json테이블 출력은 기본적으로 후속 명령으로 직접 복사할 수 있는 이슈 KEY를 표시합니다 (예: AAC-123); 전체 UUID가 필요할 때는 --full-id를 사용합니다. 사용 가능한 필터: --status, --priority, --assignee / --assignee-id, --project, --limit. 중복 이름의 작업공간에서는 --assignee-id <uuid>를 사용하여 특정 멤버 또는 에이전트를 정확히 지정할 수 있습니다.
이슈 가져오기
aacworkflow issue get AAC-123
aacworkflow issue get <uuid>
aacworkflow issue get <id> --output json<id>는 이슈 키 (aacworkflow issue list 테이블에 직접 표시, 예: AAC-123)와 전체 UUID (list에 --full-id를 사용하여 표시)를 모두 받습니다. 같은 규칙이 아래의 update / assign / status / comment / subscriber / runs 등 <id>를 받는 모든 명령에 적용됩니다.
이슈 생성
aacworkflow issue create --title "Fix login bug" --description "..." --priority high --assignee "Lambda"
aacworkflow issue create --title "Fix login bug" --assignee-id 5fb87ac7-23b5-4a7a-81fa-ed295a54545d플래그: --title (필수), --description, --status, --priority, --assignee / --assignee-id, --parent, --project, --due-date. 스크립트에서 이미 UUID를 가지고 있다면 (예: aacworkflow workspace member list --output json), --assignee-id <uuid> (--assignee와 상호 배타적)를 사용하여 정확히 지정합니다.
이슈 업데이트
aacworkflow issue update <id> --title "New title" --priority urgent이슈 할당
aacworkflow issue assign <id> --to "Lambda"
aacworkflow issue assign <id> --to-id 5fb87ac7-23b5-4a7a-81fa-ed295a54545d
aacworkflow issue assign <id> --unassign--to-id <uuid> (--to와 상호 배타적)는 UUID로 정확히 할당합니다; 중복 이름의 작업공간에서 스크립트 시나리오에 적합합니다.
상태 변경
aacworkflow issue status <id> in_progress유효한 상태: backlog, todo, in_progress, in_review, done, blocked, cancelled.
댓글
# 댓글 나열
aacworkflow issue comment list <issue-id>
# 댓글 추가
aacworkflow issue comment add <issue-id> --content "Looks good, merging now"
# 특정 댓글에 답글
aacworkflow issue comment add <issue-id> --parent <comment-id> --content "Thanks!"
# 댓글 삭제
aacworkflow issue comment delete <comment-id>실행 이력
# 이슈의 모든 실행 런을 나열
aacworkflow issue runs <issue-id>
aacworkflow issue runs <issue-id> --full-id
aacworkflow issue runs <issue-id> --output json
# 특정 실행 런의 메시지 보기
aacworkflow issue run-messages <task-id>
aacworkflow issue run-messages <short-task-id> --issue <issue-id>
aacworkflow issue run-messages <task-id> --output json
# 증분 가져오기 (주어진 시퀀스 번호 이후의 메시지만)
aacworkflow issue run-messages <task-id> --since 42 --output jsonruns의 테이블 출력은 기본적으로 작업 UUID 짧은 접두사를 표시합니다; 전체 작업 UUID가 필요할 때는 --full-id를 사용합니다. run-messages는 전체 작업 UUID를 직접 받을 수 있습니다; runs 테이블에서 짧은 접두사를 복사할 때 --issue <issue-id>를 함께 전달하면 CLI은 해당 이슈의 실행 내에서만 해석합니다.
프로젝트
프로젝트는 관련 이슈를 그룹화합니다 (예: 스프린트, 에픽, 워크스트림). 모든 프로젝트는 작업공간에 속하며 선택적으로 리드 (멤버 또는 에이전트)를 가질 수 있습니다.
프로젝트 나열
aacworkflow project list
aacworkflow project list --status in_progress
aacworkflow project list --output json사용 가능한 필터: --status.
프로젝트 가져오기
aacworkflow project get <id>
aacworkflow project get <id> --output json프로젝트 생성
aacworkflow project create --title "2026 Week 16 Sprint" --icon "🏃" --lead "Lambda"플래그: --title (필수), --description, --status, --icon, --lead.
프로젝트 업데이트
aacworkflow project update <id> --title "New title" --status in_progress
aacworkflow project update <id> --lead "Lambda"플래그: --title, --description, --status, --icon, --lead.
상태 변경
aacworkflow project status <id> in_progress유효한 상태: planned, in_progress, paused, completed, cancelled.
프로젝트 삭제
aacworkflow project delete <id>이슈를 프로젝트와 연결
issue create / issue update에 --project 플래그를 사용하여 이슈를 프로젝트에 첨부하거나, issue list에 사용하여 프로젝트별 이슈를 필터링합니다:
aacworkflow issue create --title "Login bug" --project <project-id>
aacworkflow issue update <issue-id> --project <project-id>
aacworkflow issue list --project <project-id>구성
구성 보기
aacworkflow config show구성 파일 경로, 서버 URL, 앱 URL 및 기본 작업공간을 표시합니다.
값 설정
aacworkflow config set server_url wss://api.example.com/ws
aacworkflow config set app_url https://app.example.com
aacworkflow config set workspace_id <workspace-id>기타 명령
aacworkflow version # CLI 버전 및 커밋 해시 표시
aacworkflow update # 최신 버전으로 업데이트
aacworkflow agent list # 현재 작업공간의 에이전트 나열출력 형식
대부분의 명령은 두 가지 형식의 --output을 지원합니다:
table— 사람이 읽을 수 있는 테이블 (list 명령의 기본값)json— 구조화된 JSON (스크립팅 및 자동화에 유용)
aacworkflow issue list --output json
aacworkflow daemon status --output json