yanghapark.com← Home

개인 프로젝트 · 2026.06

Work Radar — Local-first AI 워크플로우 콕핏

Work Radar는 캡처·캘린더·PR·worktree·루틴·AI agent 세션을 하나의 local-first 데스크톱 콕핏으로 묶어, 신호 수집부터 시간 배치·실행·회고까지 반복 가능한 운영 루프로 만드는 제품이다. 핵심은 Control Room으로, 자동 개발을 spec·plan·task·session·handoff의 복잡계로 다루고 readiness gate와 approval queue로 human-in-the-loop governance를 명시한다.

  • 11통합 표면
  • Tauri 2 · Rust스택
  • Human-in-the-loop거버넌스
  • Local-first동기화

핵심 성과

11

통합 표면

Capture·Today·PR·Worktree·Jobs·Control Room 등

Tauri 2 · Rust

스택

native cockpit, Rust side-effect boundary

Human-in-the-loop

거버넌스

agent write는 approval queue 경유

Local-first

동기화

Google Calendar bounded sync worker

Codex · Hermes · cmux

Agent 연동

bounded 실행 + 감사 trail

개요

Work Radar는 개인 업무, 코드 리뷰, 로컬 worktree, 캘린더, 루틴, AI agent 세션을 한 화면 체계로 묶는 local-first 데스크톱 운영 콕핏이다. 일반적인 todo app처럼 "할 일 목록"을 정리하는 데서 멈추지 않고, 들어온 신호를 분류하고, 오늘의 시간 위에 배치하고, agent 실행을 추적하고, 주간 회고로 다시 접는 전체 루프를 제품으로 만든다.

각 화면은 신호 수집·시간 배치·agent 실행·governance·회고 중 하나의 책임을 맡고, 전체 흐름은 다시 다음 작업 사이클로 되돌아온다. 아키텍처는 Rust side-effect boundaryReact operating UI가 분리되어, 많은 integration을 다루면서도 사용자의 명시적 판단 게이트를 유지한다.

문제 정의

현대적인 개인 개발자의 업무는 한 도구로 들어오지 않는다. 캘린더 일정, GitHub PR, Notion 백로그, 로컬 worktree, Hermes 패널, Codex job, 루틴, 브레인덤프가 서로 다른 속도로 동시에 들어온다. 실제 병목은 자동화 부족보다 "지금 무엇을 봐야 하는지"를 잃는 데 있다.

Work Radar는 이 문제를 task manager가 아니라 운영면의 문제로 본다. 모든 일을 하나의 list로 평탄화하는 대신, 각 신호가 어떤 레일에 있어야 하는지 드러낸다.

  • Capture Board는 들어온 신호를 Eisenhower matrix로 받는다
  • Today는 신호가 오늘의 시간을 점유하게 만든다
  • PR Radar·Worktree Diff는 코드 상태를 운영 위험으로 분리해 보여준다
  • Jobs는 agent 실행을 bounded log로 남긴다
  • Control Room은 자동 개발 시스템이 지금 실행 가능한지, 어디서 사람이 개입해야 하는지를 보여준다

Control Room · Boule Governance

Control Room은 Work Radar의 핵심이다. Boule Governance, 즉 자동 개발 구현 시스템을 단일 job queue가 아니라 운영 가능한 복잡계로 다룬다. 자동 개발은 specplantasksessionhandoff가 서로 연결되며 진행되는 event-sourced workflow이고, 여러 agent session과 worktree, human gate가 동시에 존재하면 상태는 쉽게 창발한다. Control Room은 그 창발 상태를 숨기지 않고 posture·readiness·vitals·flow graph로 접어낸다.

설계의 핵심은 ticker와 autonomy를 분리한 것이다. ticker는 app/operator가 제공하는 bounded heartbeat clock이고, autonomy level은 heartbeat가 돌 때 무엇을 허용할지 정하는 permission envelope이다. 따라서 tick_enabled=trueautonomyLevel=manual은 모순이 아니라 "Clock on, autonomy manual — 사람 게이트 대기 중" 상태다.

안전 경계도 명확하다. snapshot은 read-only이고 repo path는 renderer 입력이 아니라 DB에서 resolve된다. ticker는 무한 daemon이 아니라 app-bound runner로, per-repo no-overlap lock과 timeout을 가진다. halted_decision·needs_human·stalled는 fail-closed로 attention latch를 켜고, 원인이 남아 있으면 다음 tick에서 다시 걸린다.

자동화 경계 — Calendar · MCP · Hermes

외부 연동은 모두 같은 원칙 아래 붙는다. 외부 agent와 협업 채널은 Work Radar의 판단을 대체하지 않는다.

  • Google Calendar — Today/Routine의 시간 상태를 외부 캘린더와 맞추는 mirror surface다. 읽기는 ambient signal로 병합하되, 쓰기는 stage_calendar_write가 로컬 mirror를 먼저 갱신하고 pending_calendar_writes 큐에 넣는다. 백그라운드 SyncEngine이 bounded retry로 flush한다.
  • MCP gateway — 내장 stdio MCP 서버의 write tool(wr_github_comment, wr_calendar_create_event 등)은 기본적으로 실행하지 않고 external_actions approval queue에 제안만 넣는다. token이나 raw credential은 MCP 표면에 노출되지 않는다.
  • Hermes ACPsession/request_permissionAskUserCard로 바꿔 사용자가 승인한 action만 즉시 실행 경로를 탄다. 그래서 Hermes의 확인 card가 human gate가 되고, 같은 결정을 두 번 묻지 않는다.

결과적으로 자동화는 timeout·max turns·cost cap·accept/reject 로그를 남기는 감사 가능한 운영 단위가 된다.

핵심 메시지

Work Radar의 철학은 자동화의 양을 늘리는 것이 아니라, 자동화가 만들어내는 상태를 사람이 다룰 수 있는 형태로 만드는 것이다. Capture Board와 Today는 흩어진 신호를 시간 위에 올리고, PR Radar와 Worktree Diff는 코드 운영 위험을 분리해서 읽게 하며, Jobs와 Agent Bar는 실행 주체의 현재성과 감사 trail을 남긴다.

Control Room은 이 철학의 결론이다. Boule Governance는 자동 개발을 하나의 queue가 아니라 복잡계로 보고, 창발 상태를 graph·readiness·heartbeat·latch로 압축해 운영자가 승인하거나 멈추거나 다시 흘려보낼 수 있게 만든다. 그래서 Work Radar는 AI app보다 AI work를 운영하기 위한 cockpit에 가깝다.

동작 흐름

Signalscapture·calendar·PRShapeclassify·scheduleWorkjobs·worktrees·agentsGovernBoule gates·readinessLearnweekly review

화면

기술 스택

  • Tauri 2
  • Rust
  • SQLite
  • Vite
  • React
  • TypeScript
  • Tailwind v4
  • shadcn/ui
  • TanStack Query
  • Zustand
  • Google Calendar
  • GitHub
  • Notion
  • Codex CLI
  • Hermes ACP
  • cmux
  • MCP