개발삭제로그 · 1화
관제탑 대시보드를 만들었다가 삭제했다: 한눈에 보려던 워크플로우가 끝내 한눈에 들어오지 않았다
프로젝트와 봇과 자동화가 어디서 멈췄는지 한 화면에서 보려고 판옵을 만들었다. 9일 동안 커밋 54개를 넣었고, 관측 대상을 늘릴수록 화면은 무거워졌다. 7월 10일 이후 기능은 한 줄도 늘지 않았고, 이제 지운다. 지우기 전에 무엇을 원했고 왜 안 됐는지 남긴다.
판옵(PANOPTICON)은 내 작업 전체를 지켜보는 관제탑으로 만든 웹 대시보드다. 여러 프로젝트, 텔레그램 봇, 예약 작업, AI 에이전트가 얽힌 내 작업 흐름을 한 화면에서 보고, 어디서 일이 멈췄는지 바로 찾는 게 목표였다. 6월 말에 시작해 7월 2일부터 10일까지 커밋 54개를 넣었다. 8월 말에 한 번 손본 뒤로는 거의 열지 않았다. 효용이 없다고 판단해서 지우기로 했다. 이 글은 지우기 전에 남기는 기록이다.
원한 건 내 작업의 지도 한 장이었다
7월 초의 내 작업은 이미 한 사람이 머릿속에 담기 어려웠다. 헤르메스의 봇들이 새벽마다 돌고, AC POST가 아침마다 신문을 내고, 여러 앱이 각자의 예약 작업을 돌렸다. 무언가 멈추면 어디서 멈췄는지 찾는 데만 한참 걸렸다. 그걸 한눈에 보고 싶었다.
설계는 꽤 진지했다. 중심 단위는 저장소가 아니라 미션, 곧 내가 달성하려는 목적이다. 미션 안에서 일이 넘어가는 지점을 연결고리로 보고, 연결고리마다 입력과 출력과 실패 신호를 모아 정상, 약함, 끊김, 소식 없음을 판정한다. 관제탑은 지켜보기만 하고 명령하지 않는다는 원칙도 문서로 적었다. 할 일 앱도, 로그 뷰어도, 자동화 실행기도 아니라고.
첫 화면은 만든 사람의 언어였다
7월 2일, 헤르메스를 대시보드에 처음 올린 뒤 내가 남긴 피드백은 이랬다. 시각화로 쉽게 보고 싶은데 사이트가 너무 불친절하다.
그날 적은 진단은 다섯 줄이다. 모든 패널이 한꺼번에 떠서 어디를 봐야 할지 모른다. “conf:medium · score:98” 같은 재료만 있고 판단이 없다. 헤르메스 중심이라 다른 프로젝트가 안 보인다. 미션 지도는 방향 없는 배치에 라벨이 겹쳐서 시각화라기보다 더 어렵다. 그리고 LinkSignal, computedStatus 같은 용어가 전부 만든 사람의 언어다.
그날 커밋 14개 가운데 아홉 개가 화면 재설계였다. 홈은 프로젝트 카드 보드로, 상세는 왼쪽에서 오른쪽으로 흐르는 흐름도로 바꾸고, 처음 멈춘 노드에 “여기서 멈춤” 표시를 하나만 달았다. 상태는 작동 중, 주의, 멈춤, 소식 없음, 신호 없음 다섯 단어로 줄였다. “입력 18건 출력 0” 대신 “받기만 하고 내보내지 못하고 있어요”라고 문장으로 쓰게 했다. 판단 먼저, 데이터는 나중이라는 원칙도 이때 적었다.
보드에 올리려면 실물부터 알아야 했다
헤르메스를 보드에 제대로 올리려면 헤르메스가 실제로 어떻게 생겼는지부터 알아야 했다. 7월 4일에 임시로 넣어 둔 구조를 실제 봇과 워커와 예약 작업으로 바꿨다. 같은 주에 헤르메스의 옛 런타임 두 벌을 은퇴시키는 대청소가 진행됐고, 그 정리의 마스터 문서가 판옵 저장소의 문서 폴더에 남아 있다. 그 대청소 이야기는 Hermes 개발로그 4화에 썼다. 돌아보면 판옵을 만들며 남은 가장 쓸모 있는 결과물이 이 지도 그리기였다.
관측을 늘릴수록 화면은 무거워졌다
그 뒤 일주일은 관측 대상을 늘리는 데 썼다. 7월 5일 폴더 트리와 증거 수집기, 6일 실시간 관측과 원인 판정과 알림 중계, 7일 AC POST 편집국 관측, 8일 커버리지와 토큰 사용량까지 보는 실시간 관제탑. 9일과 10일에는 ClipBridge, Observer, 스토브리그, Alexandria, 모던타임스, 로컬 LLM까지 보드에 올렸다.
마지막 날인 7월 10일에는 커밋이 31개였다. 계기판 타일, 봇 단위 집계, 펼침 카드, 타일 끌어서 순서 바꾸기, 상세 전용 페이지, 프로젝트 이름 바로 고치기, 모델 인사 카드, 7일 토큰 집계까지 넣었다. 보드에는 미션과 연결고리 항목이 150개 넘게 등록됐다. 화면을 한눈에 보이게 하려고 넣은 기능들이 하나같이 화면에 정보를 더했다.
그날 이후 기능 커밋은 없다.
마지막 손질은 관측 자체를 지키는 일이었다
8월 26일에 한 번 열어 봤고, 다음 날 고친 건 판옵의 기능이 아니라 판옵 자신이었다. 토큰 사용량을 읽으려고 Codex와 Claude 세션 기록을 통째로 읽다가, 815MB짜리 기록 하나 때문에 증거 API 전체가 오류로 무너지고 있었다. 큰 파일은 앞부분과 끝부분만 읽게 고치고, 다른 서비스와 겹친 포트를 옮겼다. 지켜보는 도구를 지키는 데 손이 더 들고 있었다.
효용이 없었던 이유는 세 가지였다
내가 원한 건 한눈에 내 워크플로우를 파악하는 것이었다. 만들고 보니 그게 제대로 구현되지 않았다. 기록을 다시 보면 이유가 세 가지쯤 보인다.
첫째, 한 화면에 전부 올리려 했다. 관측 대상이 늘수록 “한눈에”와는 멀어졌다. 7월 2일에 적은 진단, 모든 패널이 한꺼번에 뜬다는 문제는 결국 다른 모양으로 되돌아왔다.
둘째, 보이는 신호와 알고 싶은 것이 달랐다. 판정의 재료는 로그 이벤트, 파일 수정 시각, 예약 작업의 프로세스 번호였다. 작업이 돌았는지는 알려 줘도, 결과물이 쓸 만했는지는 알려 주지 못했다. 초록불이 켜져 있어도 그날 카드뉴스가 제대로 나왔는지는 결국 따로 열어 봐야 알았다.
셋째, 지도는 손으로 유지해야 했다. 새 프로젝트가 생길 때마다 구조를 등록하고, 이름을 붙이고, 수집기를 이어야 했다. 프로젝트는 매주 생기는데 지도는 7월 10일에 멈춰 있었다. 7월 29일에 시작한 위키룸도, 8월 2일에 시작한 레오폴드도 판옵의 지도에는 없다.
남기는 것
판옵은 지우지만 몇 가지는 남는다. 작동 중, 주의, 멈춤, 소식 없음으로 상태를 줄이는 어휘, 판단을 먼저 쓰고 숫자는 뒤로 미는 원칙, 결과를 보지 않고 관측만 하는 관제탑의 경계. 판단 먼저라는 원칙은 8월 말 레오폴드 보고서를 비서처럼 고칠 때 다시 나온다.
그 뒤에 만든 상태판들은 하나같이 좁다. Agent Status Deck은 AI 세션 상태만, Control Tower는 집 컴퓨터 네 대와 로컬 모델만 본다. 질문이 하나라서 한눈에 들어온다.
배운 것
한눈에 보고 싶다는 욕심은 기능을 더해서는 채워지지 않았다. 화면 하나가 답하는 질문이 하나일 때만 한눈에 들어왔다. 그리고 모든 걸 지켜보는 도구는 지켜볼 대상이 늘어날 때마다 같이 고쳐야 하는 또 하나의 시스템이 됐다. 지우기로 한 지금, 판옵이 남긴 가장 큰 결과물은 대시보드가 아니라 그걸 만들려고 처음 그려 본 내 작업의 지도였다.