Bruto — A task board that lives in your repo, for you and your AI
Bruto — 저장소 안에서 사람과 AI가 함께 쓰는 작업 보드
Bruto는 작업과 관련 맥락을 프로젝트 저장소의 파일에 기록하는 오픈소스 작업 보드입니다. 한 번의 키 입력으로 AI에 필요한 내용을 복사하거나 MCP로 에이전트가 보드의 작업을 읽고 답하게 합니다. Product Hunt 댓글에서는 동기화 충돌 처리와 AI에 작업을 돌려보낸 횟수 표시가 개선됐습니다.
- 주제
AI 요약
Bruto는 AI와 코딩할 때 작업 내용과 프로젝트 맥락을 따로 관리하는 불편을 줄이려는 작업 보드입니다. 메모는 프로젝트 폴더의 .bruto/workspace.json에 저장합니다. 계정이나 서버 없이 로컬에서 동작하며 오프라인에서도 쓸 수 있고, MIT 라이선스로 공개했습니다.
작업 맥락을 AI와 공유합니다
보드에 문제 상황과 관련 파일, 링크, 스크린샷을 적습니다. Q, W, E 키 중 하나를 누르면 모델에 필요한 맥락을 짧은 지침과 함께 Markdown으로 복사하고, 토큰 수 미리보기도 보여줍니다. Claude Code, Codex, Cursor처럼 파일을 편집하는 에이전트는 MCP로 보드에 접근해 작업 메모에 답을 남기고 검토 상태로 표시할 수 있습니다. 검토 뒤 수정이 필요하면 메모에 내용을 적어 맥락과 함께 다시 전달합니다.
반복해서 지킬 규칙은 ‘Loop’ 메모로 지정해 매번 복사하는 맥락에 포함합니다. 프로젝트의 페이지와 구성 요소, API 엔드포인트, 데이터베이스 테이블도 지도 형태로 표시하고 메모를 그 위에 얹습니다. 여러 도구가 동시에 파일을 수정할 때는 메모별로 변경 내용을 병합하며, 손상된 파일을 덮어쓰지 않도록 설계했다고 설명합니다.
동기화 충돌과 작업 되돌림을 반영했습니다
Product Hunt에서 한 사용자는 로컬에 저장하지 않은 상태 변경이 있을 때 AI 에이전트가 같은 메모를 수정하면, 에이전트는 변경이 반영됐다고 생각하지만 실제로는 로컬 값이 파일에 다시 기록될 수 있다고 지적했습니다. 창업자는 이를 확인하고 수정했습니다. 사람의 값이 우선하도록 유지하되, 되돌린 변경을 메모 상단에 알리고 감사 로그에도 기록합니다. 사용자에게는 ‘Use theirs’ 알림을 표시합니다. 두 작성자 모두 쓰기 직전에 다시 읽어, 그 사이 저장된 변경을 덮어쓰지 않도록 바꿨습니다.
다른 사용자는 작업이 담당자 사이를 이동해도 생성 시점부터 나이를 유지하고, AI에 되돌려 보낸 횟수를 보여 달라고 제안했습니다. 창업자는 이를 추가했습니다. 카드에는 6d ↩ 3처럼 경과 일수와 되돌림 횟수가 표시되며, AI가 메모를 가져갈 때도 되돌려 보낸 횟수를 확인합니다.
Product Hunt 반응
- @jimy_k4 — 안녕하세요, Product Hunt 👋 AI와 프로젝트를 함께 진행할 때 같은 내용을 잊어버리는 채팅에 반복해서 설명해야 해서 Bruto를 만들었습니다. 작업은 한곳에 있고 맥락은 다른 곳에 있었으며, AI 답변은 오래된 대화 속에 묻혔습니다. Bruto는 프로젝트 안의 파일(
.bruto/workspace.json)에 작업 메모를 보관해, 사용자와 사용하는 모든 AI가 같은 정보를 보게 합니다. 1. 보드에 문제와 관련 파일, 링크, 스크린샷을 적습니다. 2. Q, W, E 키 중 하나로 AI에 필요한 맥락을 복사합니다. 모델을 위한 짧은 지침을 포함한 깔끔한 Markdown이며 토큰 수도 미리 볼 수 있습니다. 3. Claude Code, Codex, Cursor처럼 파일을 수정하는 AI라면 메모에 답하고 검토 상태로 표시합니다. Bruto는 변경을 실시간으로 확인합니다. 문제가 남으면 내용을 적어 전체 맥락과 함께 다시 보냅니다. 몇 가지 신경 쓴 점이 있습니다. 로컬 전용이라 계정과 서버가 없고, 메모는 폴더 밖으로 나가지 않으며 오프라인에서도 작동합니다. 다른 도구의 변경은 저장할 때 메모별로 병합하고 손상된 파일을 덮어쓰지 않습니다. ‘Loop’로 표시한 메모, 예를 들면 “끝내기 전에 테스트를 실행할 것”은 복사할 때마다 포함합니다. 구성 요소가 있는 페이지와 API 엔드포인트, 데이터베이스 테이블을 그려 보여주고 그 위에 메모를 표시합니다. 무료 오픈소스이며 MIT 라이선스입니다. 컴퓨터에서 폴더를 직접 열려면 Chrome, Edge, Brave, Opera가 필요하지만 브라우저에서 예제 프로젝트를 먼저 둘러볼 수 있습니다. AI 코딩 작업을 어떻게 관리하는지, Bruto가 작업 흐름에 맞으려면 무엇이 필요한지 알고 싶습니다. - @dimhold — 우리도 비슷한 방식으로 작업마다 Markdown 파일을 만듭니다. 파일 첫머리에 상태와 현재 상황을 적습니다. 간단하지만 잘 작동합니다. 동기화 방식을 궁금해 코드를 살펴보다가 문제가 될 만한 상황을 찾은 것 같습니다. 동기화 자체는 잘 작동하고 신중하게 작성됐습니다. 그런데 로컬에서 메모 상태를 바꾼 뒤 저장하지 않은 상황에서 AI 에이전트가 같은 메모의 상태를 바꾼다고 해보겠습니다. 그러면 로컬 사본이 우선해 파일을 다시 씁니다. 겉으로는 모든 일이 잘된 것처럼 보입니다. 에이전트는 변경을 성공적으로 적용했다고 생각하고 로그에도 그렇게 남지만, 실제로는 그렇지 않습니다. 맨 위에 “상태가 되돌아갔습니다” 같은 짧은 문구를 표시하는 건 어떨까요?
- @jimy_k4 — @dimhold 코드를 자세히 읽어줘서 고맙습니다. 정확한 지적입니다. 저장하지 않은 로컬 수정이 있을 때 에이전트가 같은 필드를 바꾸면 그 변경이 덮어써지고 아무도 알지 못했습니다. 수정해 배포했습니다. 사람의 값이 우선하지만, 이제 메모를 열 때 에이전트가 다음에 다시 읽으면 변경 사항을 알도록 메모에 되돌림 안내를 표시합니다. 감사 로그에도 기록하고 사용자에게는 ‘Use theirs’ 알림을 보여줍니다. 두 작성자도 쓰기 전에 다시 읽어, 그 사이 저장된 변경을 덮어쓰지 않습니다. 작업별 Markdown 파일도 좋은 접근입니다. 단순한 방식이 잘 통하니까요.
- @jimy_k4 — @dimhold 이 내용을 Hypership 실적으로 반영하고 싶다면 수정 사항으로 등록해도 됩니다. 앱과 bruto-mcp에 이미 적용했습니다. 제가 세부 내용을 적어 완료 처리하겠습니다. 감사합니다.
- @dimhold — @jimy_k4 빠르게 대응해줘서 고맙습니다.
get_note맨 위에 표시되는 “Reverted:” 문구가 제가 기대한 내용입니다.
- @dalemooney — 이런 보드를 만들면서 배운 점이 하나 있습니다. 작업이 다른 사람에게 넘어가도 작업 나이는 유지해야 합니다. 제 보드에서는 작업을 다른 사람에게 넘겨도 시계가 계속 갑니다. 그렇지 않으면 일주일 동안 여기저기 오간 작업이 매번 오늘 도착한 것처럼 보입니다. 메모에 “3번 되돌아옴” 같은 표시만 있어도 도움이 됩니다. AI와 주고받는 과정에서 같은 왕복이 반복되기 때문입니다.
- @jimy_k4 — @dalemooney 좋은 제안입니다. 반영했습니다. 이제 모든 메모는 상태나 담당자가 바뀌어도 생성일부터 경과한 시간을 유지합니다. 검토 과정에서 AI에게 되돌려 보낸 횟수도 셉니다. 카드에는
6d ↩ 3으로 표시합니다. AI가 메모를 가져갈 때도 “3번 되돌아옴”이라고 알려 처음 진행하는 작업이 아님을 알게 합니다. - @dalemooney — @jimy_k4 좋네요. 카드에서
6d ↩ 3으로 보는 게 제가 원하던 방식입니다. - @dalemooney — @jimy_k4 예제 보드에서 시험했습니다. ‘Cancel a booking’을 되돌려 보냈더니 6일째 상태를 유지하면서
↩ 2로 바뀌었습니다. 잘 작동합니다.
- @jimy_k4 — @dalemooney 좋은 제안입니다. 반영했습니다. 이제 모든 메모는 상태나 담당자가 바뀌어도 생성일부터 경과한 시간을 유지합니다. 검토 과정에서 AI에게 되돌려 보낸 횟수도 셉니다. 카드에는
원문: Product Hunt / 번역·요약: Trawling