배경
로컬에서 Kiro Crew를 돌리면 머신이 꺼졌을 때 Slack 연동이 끊김. 항상 켜져 있는 VM에 올려두는 게 맞다고 판단해서 Oracle Cloud VM으로 이전함.
1. 설치
1
curl -fsSL https://download.crew.kiro.dev/cli.sh | sh
- 설치 경로:
~/.kiro/crew-venv/(Python 3.12 venv) - CLI 경로:
~/.local/bin/kirocrew
2. 초기 세팅
1
kirocrew setup
- agent config 생성:
~/.kiro/agents/kirocrew.json - timezone: Asia/Seoul
3. 포트 충돌
기본 포트 5476이 이미 사용 중인 경우가 있음.
1
2
3
kirocrew gateway --port 5477
# 또는
kirocrew gateway # 자동 처리
kirocrew doctor가 exit 1을 반환하는 경우 &&로 연결하지 말고 따로 실행할 것.
4. Slack 연동
앱 생성
https://api.slack.com/apps → From a manifest으로 생성. Socket Mode 활성화 — inbound 포트 불필요, outbound WebSocket만 사용.
필요한 토큰 2개
| 토큰 | 위치 |
|---|---|
Bot Token (xoxb-...) | OAuth & Permissions → Bot User OAuth Token |
App Token (xapp-...) | Basic Information → App-Level Tokens (connections:write scope) |
삽질 포인트
~/.kiro/crew/.env에KIROCREW_OWNER_ID가 잘못된 값으로 저장돼 있는 경우 직접 수정 필요config.json의slack.enabled: true는 실제로 아무 효과 없음 — 토큰 유무로만 동작 판단- Slack 앱에
app_mentionbot event 등록 안 하면 멘션 무시됨 - Slash Command
/kiro도 앱에 별도 등록 필요
최종 설정
~/.kiro/crew/.env:
SLACK_APP_TOKEN=xapp-...
SLACK_BOT_TOKEN=xoxb-...
KIROCREW_OWNER_ID=U0BB9MXFJVD
~/.kiro/crew/config.json slack 섹션:
1
2
3
4
5
"slack": {
"enabled": true,
"command": "kiro",
"owner_id": "U0BB9MXFJVD"
}
5. Slack 앱 설정 체크리스트
- Socket Mode 활성화
- App-Level Token 발급 (
connections:write) - Bot Token Scopes:
chat:write,im:history,im:read,im:write,channels:history,channels:read - Event Subscriptions → Bot Events:
message.im,message.channels,app_mention - Slash Commands:
/kiro등록 - App Home → Messages Tab 활성화
- Reinstall to Workspace
6. 대시보드 접속
VM 포트를 직접 열지 않고 SSH 터널로 접근.
1
2
3
4
5
# 로컬 머신에서
ssh -NL 5477:localhost:5476 -i ssh-key-2026-07-13.key ubuntu@100.117.197.104
# VM에서 토큰 발급
kirocrew token
브라우저: http://localhost:5477?token=...
7. 백그라운드 서비스 등록
1
2
kirocrew service install
loginctl enable-linger ubuntu # 로그아웃해도 서비스 유지
Doctor 경고 (무시해도 되는 것들)
| 항목 | 내용 | 영향 |
|---|---|---|
| sandbox | Oracle Cloud 환경 제약 (user namespaces 불가) | 없음 |
| Node.js | 대시보드 프론트엔드용 | 대시보드 일부 기능 제한 |
| ffmpeg / voice | 음성 기능 | 음성 안 쓰면 무관 |
| swap | 메모리 압박 시 freeze 위험 | 필요시 swap 추가 |
정리
- VM에 올리면 머신 종료와 무관하게 Slack 연동이 유지됨
slack.enabled설정은 의미 없고,.env에 토큰 두 개만 있으면 됨app_mentionevent와 Slash Command 등록은 빠뜨리기 쉬운 포인트loginctl enable-linger까지 해야 로그아웃 후에도 서비스가 살아있음