ELOP Crew

작업판과 팀 대화

프로젝트 탭 아래쪽에는 작업판이, 오른쪽에는 팀 대화가 있습니다. 작업판은 프로젝트의 할 일과 사람이 정해야 할 일을, 팀 대화는 에이전트끼리 주고받은 메시지를 보여 줍니다.

작업판이란

작업판은 데이터 폴더의 boards/<프로젝트>.json 파일입니다. 보통 프로젝트 리더 에이전트가 이 파일을 쓰고 고칩니다. 쓰지 않아도 됩니다. 파일이 없으면 작업판 자리에 어떤 파일을 쓰면 되는지 안내가 나옵니다.

화면에서 작업을 추가하거나 순서를 바꾸거나 결정에 답하면 그 파일에 저장됩니다. ELOP Crew가 이 변경을 에이전트에게 따로 알리지는 않으니, 리더에게 작업판을 확인하라고 말해 주세요. 자동 진행을 켜면 작업판이 직접 에이전트에게 일을 넘깁니다.

네 칸

? 결정 대기사람이 답해야 할 질문입니다. 칸 제목의 숫자는 아직 답을 기다리는 질문 수입니다. 이미 내린 결정의 기록은 질문 뒤에 최근 것부터 "누가 결정 · 언제"로 나옵니다.
▶ 진행 중지금 하고 있는 작업입니다.
○ 대기할 차례를 기다리는 작업이 번호순으로 나옵니다. 막힌 작업은 ■ 표시와 함께 맨 뒤에 나옵니다.
✓ 완료끝난 작업이 최근 것부터 나옵니다.

담당이 정해진 작업에는 맡은 에이전트의 이름이 오른쪽에 붙습니다.

작업 추가하기

  1. 대기 칸 아래의 + 작업 추가를 누릅니다.
  2. 할 일을 적고, 필요하면 담당에서 에이전트를 고릅니다. 정하지 않으려면 미정으로 둡니다.
  3. 보내기를 누릅니다. 작업은 대기 줄 맨 뒤에 들어갑니다. 그만두려면 취소를 누릅니다.

대기 순서 바꾸기

대기 중인 작업 옆의 ▲(위로), ▼(아래로)로 순서를 바꿉니다. 그사이 리더가 작업판을 고쳤다면 그사이 작업판이 바뀌었습니다라는 안내와 함께 새로 불러오니, 다시 해 주세요.

결정에 답하기

  1. 결정 대기 칸의 질문 옆 답하기를 누릅니다.
  2. 답을 입력 칸에 답을 적고 보내기를 누릅니다.
  3. 답은 질문 아래에 ↳ 로 나옵니다. 고치려면 바꾸기를 누릅니다.

자동 진행

작업판의 자동 진행 스위치를 켜면 작업판이 팀의 대기열이 됩니다.

  1. 턴을 마친 에이전트는 다음 대기 작업을 넘겨받습니다. 자기에게 맡겨진 작업이 먼저이고, 없으면 담당이 미정인 작업을 받습니다. 먼저 끝나야 하는 작업이 있으면 그 뒤에 받습니다.
  2. 에이전트는 작업을 마치면 TASK DONE으로 끝냅니다.
  3. 사람이 정해야 할 것이 있으면 TASK BLOCKED: <질문>으로 결정 대기 칸에 질문을 올립니다. 거기서 답하면 답이 그 에이전트에게 전달되고 작업이 이어집니다.
  • 넘긴 일과 전달한 답은 에이전트 대화에 📋 작업판에서 넘긴 일, 📋 작업판의 답을 전달했습니다로 나옵니다.
  • 리더에게는 자동 진행에 맞게 작업을 쓰는 법을 알려 줍니다.
  • 답을 기다리는 질문이 있거나, 사용량 한도에 걸렸거나, 로그인이 풀린 에이전트에게는 새 작업을 넘기지 않습니다. 전달하지 못한 작업은 대기열로 돌아갑니다.
  • VS Code 세션은 턴이 끝났을 때만 작업을 받습니다.
  • 에이전트 한 명에게 하루 40건까지만 넘깁니다.

완료 전 확인

스위치 아래 완료 전 확인에 npm test 같은 명령을 적고 정하기를 누르면, 에이전트가 TASK DONE이라고 할 때마다 프로젝트 폴더에서 내 권한으로 그 명령을 실행합니다.

  • 실패하면 출력 끝부분과 함께 에이전트에게 다시 맡깁니다(대화에 ✗ 확인 명령이 실패해 다시 맡겼습니다). 3번 실패하면 결정 대기 칸에서 사람에게 묻습니다.
  • 비워 두면 에이전트가 끝났다고 할 때 바로 완료입니다.
  • 이 명령은 화면에서만 정할 수 있습니다(config.json에 저장). 작업판 파일을 쓰는 에이전트가 ELOP Crew에게 명령을 실행시킬 수는 없습니다.

긴 대화는 새 대화로

대화가 20만 토큰(또는 모델 컨텍스트의 절반)을 넘은 모니터 에이전트는 다음 작업을 같은 이름의 새 대화로 시작합니다. 끝낸 작업과 마지막 보고를 넘겨받으므로 인수인계에 턴을 따로 쓰지 않습니다. 매 단계마다 대화 전체를 다시 읽으므로, 오래 돌릴수록 비용이 크게 줄어듭니다. 대화에는 ↺ 대화가 길어져 새 대화로 시작했습니다로 나옵니다.

작업판 파일 형식

리더에게 작업판을 맡기려면 이 형식을 알려 주면 됩니다. 저장소의 boards/example.json과 같습니다.

{
  "updatedAt": "2026-01-01T00:00:00Z",
  "tasks": [
    { "title": "진행 중인 작업", "session": "-0f", "status": "running" },
    { "title": "대기 1번", "session": "-74", "status": "queued", "order": 1 },
    { "title": "막힌 작업", "session": "-7c", "status": "blocked", "order": 2 },
    { "title": "끝난 작업", "session": "-27", "status": "done", "doneAt": "2026-01-01T00:00:00Z" }
  ],
  "decisions": [
    { "title": "사람이 정해야 할 일", "status": "open", "order": 1 }
  ],
  "roles": { "-0f": "auth · simulation", "-74": "e2e tests" }
}
  • status는 running, queued, blocked, done 가운데 하나이고, order가 대기 순서입니다.
  • "auto": true면 자동 진행이 켜집니다. 작업의 session은 맡을 에이전트이고(없으면 리더가 아닌 아무 에이전트나 맡습니다), detail은 제목 말고 에이전트에게 더 알려 줄 내용, needs는 먼저 끝나야 하는 작업의 제목 목록입니다.
  • 화면에서 답한 결정은 answered가 되고 answer가 붙습니다. 이미 내린 결정의 기록은 { "text": "…", "by": "-7f", "at": "<ISO 시각>" }로 적습니다.
  • roles는 세션마다 짧은 역할을 붙입니다. 역할은 카드의 이름 아래에 나옵니다.
  • session과 roles의 키에는 짧은 이름(-0f), 전체 세션 이름, 화면의 이름(민준, Tom)을 쓸 수 있습니다.

팀 대화

팀 대화는 같은 프로젝트의 에이전트가 Claude Code의 SendMessage 도구로 주고받은 메시지를 "보낸 쪽 → 받은 쪽"과 한 줄 요약으로 보여 줍니다. 최근 메시지가 위에 나옵니다. 메시지 본문은 보여 주지 않습니다.

  • 리더는 자기 팀원을 압니다. 리더가 메시지를 받을 때 훅이 같은 프로젝트의 다른 세션 목록(메시지를 보낼 이름, 화면의 이름, 상태, 역할)을 붙여 줍니다. 팀원이나 역할이 바뀌었을 때만 붙이고, 리더가 아닌 세션에는 붙이지 않습니다.
  • 리더는 config.json에 적힌 세션이고, 없으면 메시지를 가장 많이 보낸 세션(3개 이상)입니다.
  • VS Code 세션뿐 아니라 ELOP Crew가 띄운 모니터 에이전트끼리 주고받은 메시지도 나옵니다. 받는 쪽은 화면의 이름으로 나옵니다(PC 프로그램 0.2.31부터).
  • 두 에이전트가 30분 안에 서로 메시지를 12개 이상 주고받으면 팀 대화 맨 위에 ⚠ 민준 ↔ 서연: 30분에 메시지 12개처럼 경고가 뜨고 비서에게도 알립니다(한 쌍에 한 시간에 한 번). 메시지마다 받는 쪽이 턴을 하나 쓰고 대화 전체를 다시 읽으므로, 같은 얘기를 맴돌고 있지 않은지 확인하세요.
  • 사무실 보기에서는 오른쪽 위 작업판·팀 대화 버튼으로 페이지 위에 엽니다.

에이전트에게 직접 말하기

내가 에이전트에게 메시지를 보내려면 카드를 눌러 에이전트 창의 입력창을 씁니다. 메시지 보내기 비서에게 "민준에게 테스트 다시 돌리라고 전해 줘"처럼 부탁해도 됩니다. 비서

config.json으로 정하기

데이터 폴더의 config.json에서 프로젝트마다 표시 이름, 리더, 고정 이름을 정할 수 있습니다. 탭 순서는 order에 저장됩니다. 모두 선택 사항입니다.

{
  "order": ["my-app", "my-infra"],
  "projects": {
    "my-app": {
      "label": "Display name",
      "leader": "my-app-1a",
      "names": { "-0f": "Tom", "my-app-74": "민준" }
    }
  }
}

데이터 폴더의 위치는 설정에서 확인하고 바꿉니다.

The board and team chat

Each project tab has a board along the bottom and team chat on the right. The board shows the project's tasks and the decisions waiting on a person; team chat shows the messages the agents send each other.

What the board is

The board is a file, boards/<project>.json in the data folder. Usually the project's leader agent writes and updates it. It is optional; without the file, the board's place says which file to write.

Adding a task, reordering the queue or answering a decision on the page saves to that file. ELOP Crew does not pass these changes on to the agents itself, so ask the leader to check the board. With Auto-run on, the board hands work to the agents itself.

The four columns

? Needs a decisionQuestions a person has to answer. The count in the heading is the questions still waiting. Records of decisions already made follow, newest first, with who decided and when.
▶ In progressTasks being worked on now.
○ QueuedTasks waiting their turn, numbered in order. Blocked tasks, marked ■, come last.
✓ DoneFinished tasks, newest first.

A task assigned to an agent shows that agent's name on the right.

Adding a task

  1. Click + Add a task under the Queued column.
  2. Type What needs doing and, if you like, pick an agent under Assign to. Leave it on Anyone to assign nobody.
  3. Click Send. The task goes to the end of the queue. Cancel drops it.

Reordering the queue

Use ▲ (Move up) and ▼ (Move down) next to a queued task. If the leader changed the board in the meantime, the page says The board changed meanwhile — reloaded, try again. Do it once more.

Answering a decision

  1. Click Answer next to a question in Needs a decision.
  2. Type in Your answer and click Send.
  3. Your answer shows under the question after ↳. Click Change to edit it.

Auto-run

Turn on Auto-run on the board and it becomes the team's queue.

  1. An agent that finishes a turn is handed its next queued task: its own first, else one for nobody, and only after the tasks it needs are done.
  2. The agent ends the task with TASK DONE.
  3. When a person has to decide something, it ends with TASK BLOCKED: <question>, which puts the question under Needs a decision. Answer it there, the answer goes back to the agent and the task goes on.
  • The tasks and answers handed on show in the agent's conversation as 📋 From the board and 📋 Your answer from the board.
  • The leader is told how to write tasks for auto-run.
  • Nothing new is handed to an agent whose question is waiting, that is at its usage limit, or that is logged out. A task that could not be delivered goes back to the queue.
  • A VS Code session is handed work only when its turn ends.
  • An agent is handed at most 40 tasks a day.

Check before done

Type a command such as npm test in Check before done, under the switch, and click Set. Whenever an agent says TASK DONE, it runs in the project folder, as you.

  • If it fails, the agent gets the end of its output and tries again (the conversation says ✗ The project check failed — sent back). After 3 failures you are asked under Needs a decision.
  • Left empty, a task is done when the agent says so.
  • It is set on the page only (kept in config.json), so an agent writing the board file cannot make ELOP Crew run anything.

A long conversation starts afresh

A monitor agent whose conversation has grown past 200k tokens (or half its model's context) starts its next task in a new conversation under the same name, handed the tasks it finished and its last message, without a turn spent on a hand-over. Every step reads the whole conversation again, so this keeps long runs much cheaper. The conversation says ↺ A new conversation — the last one had grown long.

The board file format

To hand the board to a leader, tell it this format. It is the same as boards/example.json in the repository.

{
  "updatedAt": "2026-01-01T00:00:00Z",
  "tasks": [
    { "title": "A task in progress", "session": "-0f", "status": "running" },
    { "title": "First in the queue", "session": "-74", "status": "queued", "order": 1 },
    { "title": "A blocked task", "session": "-7c", "status": "blocked", "order": 2 },
    { "title": "A finished task", "session": "-27", "status": "done", "doneAt": "2026-01-01T00:00:00Z" }
  ],
  "decisions": [
    { "title": "Something a human has to decide", "status": "open", "order": 1 }
  ],
  "roles": { "-0f": "auth · simulation", "-74": "e2e tests" }
}
  • status is one of running, queued, blocked or done; order sets the queue position.
  • "auto": true turns auto-run on. A task's session is the agent it is for (none: any agent but the leader takes it), detail is what the agent is told besides the title, and needs lists the titles of tasks that must be done first.
  • A decision answered on the page becomes answered, with an answer. A record of a decision already made is written as { "text": "…", "by": "-7f", "at": "<ISO time>" }.
  • roles gives a session a short role, shown under its name on the card.
  • session and the keys of roles may be a short name (-0f), a full session name, or the name on the page (Tom, 민준).

Team chat

Team chat lists the messages a project's agents send each other with Claude Code's SendMessage tool, as "sender → recipient" and a one-line summary, newest first. Message bodies are not shown.

  • The leader knows its team. When it gets a prompt, a hook adds the project's other sessions: the name to message each one with, its name on the page, its state and role. This is added only when the team or a role has changed, and never to sessions other than the leader.
  • The leader is the session named in config.json, or else the one that sent the most messages (at least 3).
  • Messages between the monitor agents ELOP Crew runs show here too, not only those of VS Code sessions, each addressed by the name on the page (from ELOP Crew 0.2.31).
  • When two agents send each other 12 messages or more within 30 minutes, a warning such as ⚠ Tom ↔ Mark: 12 messages in 30 min comes up at the top of team chat and the assistant is told (once an hour per pair). Each message wakes the other for a turn that reads its whole conversation again, so check they are not going round in circles.
  • In the office, Board and Team chat at the top right open them over the page.

Talking to an agent yourself

To message an agent yourself, click its card and use the box in its dialog. Sending a message You can also ask the assistant, "tell Tom to run the tests again". The assistant

Settings in config.json

config.json in the data folder can set a display name, the leader and fixed names for each project. The tab order is saved there as order. All of it is optional.

{
  "order": ["my-app", "my-infra"],
  "projects": {
    "my-app": {
      "label": "Display name",
      "leader": "my-app-1a",
      "names": { "-0f": "Tom", "my-app-74": "민준" }
    }
  }
}

See and change where the data folder is in the settings.