e2e-runner — suseona 작업 에이전트 로컬 러너
내 컴퓨터의 Claude Code 로 구현 → 테스트 → 리뷰 → 배포 파이프라인을 자동 수행하는
상주 데몬입니다. 코드는 내 폴더에, 실행은 내 Claude 구독으로 — 서버(e2e)는 오케스트레이션만
담당합니다. 아웃바운드 폴링만 쓰므로 인바운드 포트·포트포워딩이 필요 없습니다.
사전 조건
- Node.js ≥ 18.17
- git
- Claude Code CLI 설치 + 로그인:
npm install -g @anthropic-ai/claude-code claude login # 구독 계정으로 로그인
시작하기
-
웹에서 머신 등록: e2e 로그인 → 머신 페이지 → "머신 추가" → 이름 입력(예: "맥북프로") → 발급된 토큰(
erun_…) 복사. 토큰은 이때 한 번만 표시됩니다(분실 시 폐기 후 재등록). -
내 컴퓨터에서 러너 시작:
E2E_RUNNER_TOKEN=erun_… npx e2e-agent-runner머신 상의
runner/.env.local(또는 셸 프로파일)에 넣어두면 env 없이 실행됩니다:E2E_RUNNER_TOKEN=erun_… -
웹 머신 페이지에서 온라인 배지와
claude CLI상태를 확인하세요. -
프로젝트 등록(프로젝트 페이지) — 머신 선택 + 그 머신의 git 폴더 절대경로. '경로 확인' 버튼으로 실제 존재·git 저장소·클린 트리를 미리 검증합니다.
상시 구동(선택)
macOS — launchd (~/Library/LaunchAgents/com.suseona.e2e-runner.plist):
PATH에 node/claude가 보이도록 명시해야 합니다(launchd 기본 PATH엔 없음).
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"><dict>
<key>Label</key><string>com.suseona.e2e-runner</string>
<key>ProgramArguments</key><array>
<string>/usr/local/bin/node</string>
<string>/opt/e2e-runner/runner.mjs</string>
</array>
<key>RunAtLoad</key><true/>
<key>KeepAlive</key><true/>
<key>EnvironmentVariables</key><dict>
<key>PATH</key><string>/usr/local/bin:/opt/homebrew/bin:/usr/bin:/bin</string>
<key>HOME</key><string>/Users/YOU</string>
<key>E2E_RUNNER_TOKEN</key><string>erun_…</string>
</dict>
<key>StandardOutPath</key><string>/tmp/e2e-runner.log</string>
<key>StandardErrorPath</key><string>/tmp/e2e-runner.err</string>
</dict></plist>
launchctl load ~/Library/LaunchAgents/com.suseona.e2e-runner.plist
Linux — systemd (~/.config/systemd/user/e2e-runner.service):
[Unit]
Description=suseona e2e runner
After=network-online.target
[Service]
Environment=E2E_RUNNER_TOKEN=erun_…
ExecStart=/usr/bin/node /opt/e2e-runner/runner.mjs
Restart=always
RestartSec=5
[Install]
WantedBy=default.target
Windows — 작업 스케줄러(로그인 시 node runner.mjs) 또는 NSSM 서비스.
환경변수
| 변수 | 필수 | 기본 | 설명 |
|---|---|---|---|
E2E_RUNNER_TOKEN | ✅ | — | 웹에서 발급한 머신 토큰(erun_…) |
AI_BASE_URL | https://ai.suseona.com | ai-backend 주소(자체 호스팅 시 변경) | |
CLAUDE_BIN | claude | claude CLI 경로(비표준 설치 위치) | |
POLL_S / HEARTBEAT_S | 3 / 30 | 폴링·하트비트 주기 | |
RUNNER_STEP_TIMEOUT_S | 2700 | 단계 타임아웃(서버 watchdog 3600s 보다 작게) |
보안 노트
- 토큰은 머신 단위 신원입니다 — 저장소·채팅에 커밋하지 마세요. 유출 시 웹에서 즉시 폐기.
- 러너는 등록된 내 프로젝트 폴더에서만 작동하며,
bypassPermissions로 Claude Code 가 파일 수정·커밋·(지정 시) 배포 커맨드를 실행합니다. 배포 커맨드는 내 머신 자격으로 실행됩니다.