b3x

지금 무엇을 해야 하는지 봅니다. 숫자는 내가 볼 수 있는 프로젝트 기준이고, 「완료」는 위에서 고른 기간(24h·7d) 안에 끝난 것입니다.

프로젝트

이슈

프로젝트를 고르고 제목만으로 이슈를 등록합니다. 상세는 나중에 사람이나 에이전트가 채웁니다.

프로젝트
이슈
마일스톤

왼쪽 목록에서 이슈를 고르면 여기에 상세가 나옵니다.

의존성 그래프

작업(노드)과 두 종류의 선 — 실선 화살표는 의존, 점선 회색은 포함입니다.

100%
할 일 대기 진행 중 검토 막힘 완료 의존 포함(하위)

보드

칸을 끌어 옮기면 상태가 바뀝니다. 세로 순서는 앞쪽 칸에서만 끌어 바꿉니다.

이력

처리된 이슈가 어떤 모델로 얼마나 걸려 처리됐는지 봅니다. 줄을 누르면 시도별 내역이 펼쳐집니다.

복잡도 × 모델 토큰 집계

시도별 보고를 복잡도×모델로 더합니다 — 복잡도 라우팅(0021)이 실제로 비용을 줄이는지 여기서 봅니다.

옅은 막대는 자기 보고(근사치)만으로 채워진 값입니다. 진한 막대는 나루 자동 기록(정확치)이 하나 이상 섞여 있습니다 — 커서를 올리면 시도·이슈 수가 갈라져 보입니다.

실행 타임라인

집힌 구간(claim → 다음 전이)을 시간축에 늘어놓습니다 — 언제 무엇이 얼마나 돌았는지, 재시도가 어디서 갈렸는지 봅니다.

끝난 구간 진행 중(지금까지)

프로젝트
이슈
복잡도
모델
토큰
소요시간
완료

게시판

사람이 직접 해야 하는 설정·확인 항목을 적어 두고 끝나면 체크합니다. 에이전트는 손대지 않습니다.

새 항목
불러오는 중…

프로젝트

리포지토리 여러 개를 하나의 프로젝트로 묶습니다. 이슈는 프로젝트에 속합니다.

프로젝트

이슈
묶인 리포

리포지토리

GitHub 조직에서 동기화된 registry. 항목을 눌러 관리 대상·헬스 URL 을 설정합니다.

설정

내 구독 토큰 (나루)

내가 등록한 이슈를 나루가 내 구독으로 돌립니다. 등록하지 않으면 시스템 기본 계정으로 돕니다. 값은 저장 후 다시 표시되지 않습니다 — 서버가 아예 돌려주지 않습니다.

claude 토큰은 자기 기계에서 claude setup-token 으로 받습니다. codex 는 두 형태를 받습니다 — codex login 후 생긴 ~/.codex/auth.json내용 전체(구독 인증) 또는 API 키 한 줄.

figma 는 구독이 아니라 디자인 트랙([디자인] 이슈)이 시안을 만들 때 쓰는 도구 자격입니다 — Figma 의 개인 액세스 토큰(Settings → Security → Personal access tokens). 등록하면 내 이슈의 시안이 내 계정·내 팀 파일에 만들어집니다. 안 넣으면 시스템 기본 토큰으로 돕니다.

원격 Figma MCP 서버를 쓰는 설치에서는 이 칸이 안 먹습니다https://mcp.figma.com/mcp 는 개인 액세스 토큰을 401 로 거절합니다. 그 설치의 인증은 OAuth 뿐이고, 나루 한 대마다 한 번 로그인합니다 — 절차는 도움말「Figma 연결」에 있습니다. 이 칸은 로컬 Dev Mode 서버(Figma 데스크톱 앱)를 쓰는 설치에서 뜻이 있습니다.

github 은 세션이 git push · PR 생성에 쓰는 자격입니다 — GitHub 의 개인 액세스 토큰(Settings → Developer settings → Personal access tokens). 등록하면 내 이슈의 커밋·PR 이 내 이름으로 올라갑니다. 안 넣으면 시스템 기본 토큰으로 돕니다.
워크플로(.github/workflows/)를 고치려면 권한이 하나 더 필요합니다 — classic 이면 workflow 스코프, fine-grained 면 Workflows: Read and write. 없으면 그 커밋은 push 자체가 거절되고, 세션은 그걸 안에서 풀 수 없습니다.

역할
OWNER조직 설정 · GitHub 연동 · 멤버 관리 · 프로젝트와 이슈 전부
USER프로젝트와 이슈를 만들고 고칩니다. 조직 설정과 멤버는 못 건드립니다.
GUEST읽기 전용입니다.
사용자
GitHub 동기화

조직과 토큰을 등록하면 리포를 자동 동기화합니다. 토큰은 저장 후 다시 표시되지 않습니다.

토큰이 없다면 GitHub에서 발급하세요. GitHub에서 발급
  1. Token name: b3x-sync
  2. Resource owner: 동기화할 조직(위 org)
  3. Repository access: All repositories (또는 선택)
  4. Permissions → RepositoryMetadata: Read-only (필수), Contents: Read-only(선택)
  5. Generate token → 복사 → 아래에 붙여넣기
에이전트 토큰 (MCP)

마일스톤

체크포인트를 만들고, 이슈를 여러 개 골라 한 번에 넣거나 뺍니다. 진행률은 서버가 센 값이라 내가 볼 수 있는 프로젝트 기준입니다.

대기열

다음에 무엇이 갈지, 그리고 사람이 순서를 바꾸는 자리입니다. 숫자는 내가 볼 수 있는 프로젝트 기준입니다.

마일스톤 → 큐 순서 → 등록순 · 등급은 첫 자리만 정합니다 — 여기서 맨 위로 올려도 그 이슈의 마일스톤 차례가 아니면 안 돕니다.

관측

지금 무엇을 하고 있는지, 어디에 얼마나 썼는지, 무엇을 줄일 수 있는지를 봅니다. 숫자는 내가 볼 수 있는 프로젝트 기준입니다.

지금

나루 한 대가 카드 한 장입니다. 「노는 중」은 1급 상태입니다 — 눌러 대기열에서 왜 안 가는지 봅니다.

운영 화면 →
어디에 얼마나 썼나

캐시 토큰은 합계에 안 섞습니다 — 합치면 「무엇을 줄일까」의 답이 달라집니다. 못 읽은 값은 0 이 아니라 「모름」입니다.

이슈마다 단계별로

줄을 누르면 몇 회차에 무엇을 돌았는지가 펼쳐집니다 — 이미 받아 둔 값이라 요청이 다시 안 나갑니다. 숫자는 입력+출력이고 캐시는 따로 적습니다.

무엇을 줄일까

눈에 띄는 것만 올립니다. 버튼은 여기서 값을 안 바꿉니다 — 바꾸는 화면으로 데려갑니다(무엇을 바꿨는지가 그 화면 이력에 남아야 합니다).

나루 운영

나루가 무엇을 얼마나 태웠는지, 어떤 세션이 돌았는지, 언제 무슨 일이 있었는지를 봅니다. 숫자는 내가 볼 수 있는 프로젝트 기준입니다.

대기열 보기 →
토큰 사용량

세션 원장(0031)의 입력+출력 토큰입니다. 캐시 토큰은 안 셉니다 — 캐시가 대개 훨씬 커서 함께 세면 "얼마나 비쌌나"가 묻힙니다.

잠긴 이슈

담당이 박혀 나루가 집지 않는 이슈입니다. 「잠가 둠」은 사람이 세션에 넘기며 예약한 것이고, 「도는 중」은 세션이 실제로 점유한 것입니다 — 앞엣것만 풀 수 있습니다. 내가 볼 수 있는 프로젝트 기준입니다.

나루

등록된 나루입니다. 이름은 바꿔도 같은 인스턴스입니다 — 식별자가 따로 있어 세션 기록이 그대로 따라옵니다. 이름 바꾸기는 사람만 할 수 있습니다.

세션 이력

나루가 띄운 헤드리스 세션입니다. 도는 중이면 토큰이 확정치가 아닙니다 — 계속 자랍니다.

이벤트 조회

지난 일을 찾습니다. 지금 살아 있는지는 대시보드 헤더의 실시간 배지가 보여줍니다.

알람 이력

종에 떴던 알람을 지난 것까지 봅니다. 내가 볼 수 있는 프로젝트 기준입니다 — 읽음도 나만의 것이라, 다른 사람이 읽어도 내 표시는 그대로입니다.

알람

행을 누르면 대상 이슈로 가면서 그 줄이 읽음이 됩니다. 여러 개를 한 번에 읽음 처리하려면 왼쪽 칸을 고르세요.

이슈 정리

정리 세션이 훑어 남긴 제안을 골라 적용합니다. 세션은 이슈를 하나도 안 바꿉니다 — 적용은 사람이 합니다.

제안

도움말

지금 사람이 손대야 하는 것과, b3x 를 쓰는 방법을 모았습니다.

내 차례
불러오는 중…
설정 체크리스트
불러오는 중…
작업이 흘러가는 방식
  1. 등록 — 이슈 화면에서 제목만 적어도 된다. 내용은 나중에 에이전트가 채운다.
  2. todo → ready — 사람이 "이제 해도 된다"고 올린다. 선행 작업이 남아 있으면 올라가지 않는다.
  3. claim — 에이전트가 Ready 큐에서 가져가 in-progress 로 바꾼다. 담당이 지정된 작업은 큐에 안 뜬다(사람 몫).
  4. review — 에이전트가 산출물·인계 노트를 남기고 제출한다. 수용기준은 자동 검증된다.
  5. done — 사람이 확인하고 닫는다. 이 단계가 내 차례 목록에 뜬다.

막힌 작업은 blocked 로 가고 대시보드 "주의 필요"에도 함께 보인다.

클로드 연결

b3x 는 원격 HTTP MCP 서버다 — 리포를 클론하거나 빌드하지 않아도 주소 + 토큰만으로 붙는다. 토큰은 설정 화면에서 발급하고, 발급 직후 화면에는 아래 명령이 토큰까지 채워져 나온다. 여기 것은 형태만 보여준다.

서버 주소
Claude Code (터미널)

--scope user 라 어느 리포에서든 쓸 수 있다. 등록한 뒤 /mcp 로 연결을 확인한다.

claude.ai 웹 · Claude 앱 (커스텀 커넥터)

웹·앱에는 명령이 아니라 커스텀 커넥터로 등록한다: Settings → Connectors → Add custom connector → URL 에 위 서버 주소를 넣고 Connect → b3x 로그인·승인(OAuth). 이 방식은 토큰을 손으로 넣지 않는다. static headers(beta)가 켜져 있으면 Authorization: Bearer <발급한 토큰> 을 직접 넣어도 된다.

Claude Desktop 앱

리포에서 make mcp-desktop 을 실행하고 토큰을 붙여넣으면 claude_desktop_config.json 에 자동 등록된다. Claude Code 도 make mcp-claude 로 같은 일을 한다 — 명령을 직접 치는 것보다 이쪽이 쉽다. Codex 는 아래 「Codex 연결」에 따로 있다.

붙고 나면 에이전트가 register_issue 로 이슈를 남기고 list_ready_tasksclaim_tasksubmit_result 로 이 화면의 작업을 직접 굴린다.

Codex 연결

묻는 것이 이고 서로 독립이다 — ① 내 터미널의 Codex 를 b3x 에 붙이는 것, ② 나루가 Codex 로 세션을 띄우게 하는 것. 하나만 해도 그쪽은 동작한다.

① 내 Codex 를 b3x 에 붙인다 (MCP)

리포에서 make mcp-codex 를 실행하고 설정 화면에서 발급한 토큰을 붙여넣으면 끝난다. 위 서버 주소를 stdio 브리지(npx mcp-remote)로 등록한다 — Codex 는 원격 HTTP MCP 를 직접 못 받아서 클로드와 방식이 다르다. 다시 실행하면 기존 등록을 지우고 새로 붙여 토큰이 갱신된다.

② 나루가 Codex 로 세션을 띄우게 한다

CLI 는 이미 나루 이미지에 들어 있다 — 따로 설치하지 않는다. 남는 것은 자격증명무엇을 Codex 로 돌릴지 둘뿐이다.

자격증명 — 둘 중 하나. 클로드는 환경변수 하나면 되지만 Codex 의 인증은 파일이라 자리가 다르다.

  • 내 구독으로(권장) — 설정 › 일반「내 구독 토큰 (나루)」 카드에서 벤더 codex 를 고르고, codex login 뒤 생긴 ~/.codex/auth.json내용 전체 또는 API 키 한 줄을 넣는다. 내가 등록한 이슈가 내 구독으로 돈다(사람마다 홈이 갈려 남의 이슈에 안 섞인다).
  • 설치 공용으로.envCODEX_API_KEY 를 넣거나, 나루 컨테이너에서 codex login 을 한 번 한다(영속 홈에 남아 재배포를 넘어 산다). .env 를 고쳤으면 make up-runner 로 나루를 갈아 끼워야 먹는다.

무엇을 Codex 로 돌릴까 — 세 자리이고 좁은 것이 이긴다.

  1. 이슈 상세 「트랙별 벤더」 — 이 이슈의 이 트랙만(기획·수행·리뷰 각각).
  2. 이슈 상세 「벤더」 알약 — 이 이슈는 통째로.
  3. 설정 › 일반「트랙별 기본 벤더」설치 전체의 기본값. 「리뷰는 코덱스로」면 여기 한 번이면 된다.

셋 다 비우면 예전대로 담당 이름으로 판정한다(사실상 claude). 바꾼 값은 다음 배차부터 적용된다 — 이미 뜬 세션의 CLI 는 안 바뀐다.

확인관측 › 운영의 세션 표에서 벤더 열codex 인지 본다. 리포에서는 make runner-check 가 인증을 먼저 확인해 준다.

알아 둘 것 — 아무도 자기 구독을 등록하지 않으면 모든 이슈가 system 한 계정으로 묶인다. 그러면 계정당 동시 상한이 사실상 전역 상한이 되어, 나루를 늘려도 세션이 안 는다.

Figma 연결

묻는 것이 이다 — ① 나루가 Figma 를 열 수 있게 하는 것(OAuth 로그인), ② 시안을 어디에 그릴지 정하는 것(파일·페이지 주소). 둘 다 있어야 디자인 트랙이 돈다.

① 나루에 Figma 를 붙인다 (나루 한 대마다 1회)

개인 액세스 토큰(PAT)은 원격 서버가 안 받는다Authorization: Bearer <PAT> 는 무조건 401 이다. 설정 › 일반의 「내 구독 토큰」 figma 칸은 로컬 Dev Mode 서버(Figma 데스크톱 앱)를 쓰는 설치용이고, https://mcp.figma.com/mcp 를 쓰면 OAuth 뿐이다.

나루는 대마다 홈이 갈린다 — 로그인도 대마다 한 번씩 한다(b3x-naru-1, b3x-naru-2 …). 나루를 늘리면 새로 생긴 대는 다시 로그인해야 한다.

docker exec b3x-naru-1 claude mcp add -s user -t http figma https://mcp.figma.com/mcp docker exec -it b3x-naru-1 claude mcp login figma --no-browser docker exec b3x-naru-1 codex mcp add figma --url https://mcp.figma.com/mcp docker exec -it b3x-naru-1 codex mcp login figma
  • claude — 인증 URL 이 찍힌다. 브라우저에서 승인하고 리디렉트된 주소를 그 자리에 붙여넣으면 끝난다.
  • codex — 콜백이 컨테이너 안 127.0.0.1:<임의포트> 라 브라우저에서 연결 실패로 뜬다. 정상이다. 주소창의 URL 을 통째로 복사해 docker exec b3x-naru-1 curl -s '<복사한 URL>' 로 친다(작은따옴표 필수 — & 가 먹힌다). 코드는 일회용이라 바로 친다.
  • 로그인 창은 그대로 둔다 — Ctrl-C 하면 콜백을 받을 서버가 같이 죽는다.
  • 확인docker exec b3x-naru-1 codex mcp list · docker exec b3x-naru-1 claude mcp list.

.envB3X_FIGMA_MCP_URL채워져 있어야 세션에 도구가 붙는다(고쳤으면 make up-runner). 비어 있으면 디자인 이슈가 도구 없이 떠서 시안 대신 글로 설명하고 blocked 로 끝난다.

② 시안을 어디에 그릴지 정한다
  • 프로젝트 수정 → 「화면 설계 파일」팀 프로젝트에 만든 빈 파일의 주소. 드래프트(개인 초안)에 두면 다른 사람의 세션이 그 파일을 못 연다.
  • 리포지토리 → 「화면 설계 페이지」 — 그 서비스의 화면들이 사는 페이지 주소(?node-id= 가 들어 있어야 한다).

비워 두면 프롬프트가 위치를 아예 말하지 않는다 — 세션마다 새 파일이 생긴다. 프로젝트별로 하나씩 켜면 된다.

③ 디자인 트랙 쓰는 법
  • 표식은 제목 접두어 [디자인](또는 유형을 design 으로). 이 표식이 없으면 시안 없이 곧장 구현으로 간다 — 조용한 실패라 왜 시안이 안 나왔는지 알 수 없다.
  • 구현 이슈는 그 디자인 이슈를 선행(dependsOn) 으로 건다. 그러면 구현 세션에도 Figma 도구가 붙어 시안의 간격·색을 직접 읽는다.
  • 대상 리포 개수가 신호다 — 1개면 그 리포 페이지, 2개 이상이면 프로젝트 파일의 공통 페이지(_design-system), 0개면 세션이 되묻는다.
  • 세션이 두 번 도는 것이 정상이다 — 시안 2~3안을 링크로 남기고 질문하며 blocked(선택 대기) → 사람이 고르면 ready 로 돌아와 확정하고 review.
  • 구현이 머지되면 나루가 「Figma 페이지를 갱신할까요?」 를 묻는다. 자동 갱신은 안 한다 — 답하면 갱신 이슈가 생긴다.

사람 폴백 — 로그인이 안 됐거나 나루를 안 쓸 때는, Figma 커넥터가 붙은 대화형 Claude Code 세션에 이슈 상세의 「넘기기」 프롬프트를 붙여넣으면 된다. 같은 표식·같은 프롬프트라 결과가 나루가 돌린 것과 구분되지 않는다.