이 글은 agent-office라는 멀티 에이전트 시뮬레이션 앱을 로컬에서 고쳐가며 실행해 본 기록이다. 처음에는 단순히 “AI 에이전트들이 사무실에서 움직이는 UI” 정도로 보였지만, 손을 대다 보니 더 흥미로운 질문으로 이어졌다.
로컬에서 돌아가거나 기록된 에이전트들의 상태를 하나의 사무실 풍경으로 볼 수 있을까?
이번 실험의 결론부터 말하면, 가능했다. 다만 처음부터 가볍게 가능했던 것은 아니다. Ollama 기반 사고 루프는 내 로컬 환경에서 꽤 무거웠고, Colyseus 버전 차이와 오래된 의존성 문제도 있었다. 그래서 먼저 앱을 “가볍게 관찰 가능한 상태”로 만든 뒤, Paperclip 백업 데이터를 가져와 사무실 UI에 뿌리는 데모까지 붙였다.

시작점
처음 다룬 저장소는 harishkotra/agent-office였다. 구조는 대략 다음과 같았다.
- 서버는 Colyseus 기반의 멀티플레이 룸을 관리한다.
- UI는 Vite/React/Phaser 기반으로 사무실 맵과 패널을 보여준다.
- Alice, Bob 같은 에이전트가 위치, 행동, 생각, 작업, 감정 상태를 가진다.
- Ollama를 붙이면 로컬 모델이 에이전트의 다음 행동을 결정한다.
개념은 매력적이었다. 에이전트를 채팅 로그나 터미널 출력으로만 보는 것이 아니라, “공간 안의 동료”처럼 보는 방식이기 때문이다. 하지만 원본 그대로는 내 로컬에서 매끄럽게 돌리기 어려웠다.
먼저 한 정리
가장 먼저 한 일은 실행 기반을 정리하는 것이었다.
- 의존성 보안 업그레이드
pixel-agents-repo중첩 구조 제거- Ollama URL/model 설정을 환경변수화
- Colyseus 서버/클라이언트 버전 차이 대응
- 로컬 테스트용 AI 비활성화 모드 추가
특히 중요한 변화는 이것이었다.
1 | AGENT_OFFICE_AI_ENABLED=false |
AGENT_OFFICE_AI_ENABLED=false를 두면 Ollama 사고 루프를 끄고 UI와 이벤트 흐름만 확인할 수 있다. 처음에는 이것이 단순한 우회처럼 보였지만, 결과적으로는 더 좋은 실험 기반이 되었다. 무거운 추론을 잠시 제거하자, “에이전트 상태를 시각화하는 인터페이스” 자체를 훨씬 빠르게 다룰 수 있었다.
Demo Test 버튼
AI 루프를 꺼두면 화면은 가벼워지지만, 에이전트가 생각하거나 작업하는 모습도 사라진다. 그래서 Demo Test 버튼을 추가했다.
이 버튼은 서버의 /api/demo-test를 호출한다. 그러면 서버가 deterministic demo event를 만들어 방에 broadcast한다.
- Alice에게 QA 체크리스트 작업 부여
- Bob에게 blocker triage 작업 부여
- chat 이벤트 전송
- highlight 이벤트 전송
- task board 업데이트
- relationship graph 업데이트
여기서 핵심은 “가짜 데이터”라기보다 “로컬 관찰용 fixture”에 가깝다는 점이다. LLM이 없어도 UI, WebSocket, task board, highlight feed가 살아 있는지 확인할 수 있다.
Paperclip과 연결하기
다음 질문은 자연스럽게 Paperclip으로 넘어갔다.
Paperclip은 내가 로컬에서 실험하던 멀티 에이전트 오케스트레이션 프로젝트다. 현재 서버 소스는 이동되었거나 지워진 상태였지만, .paperclip 인스턴스 데이터는 남아 있었다.
발견한 경로는 다음과 같다.
1 | C:/Users/crescent/.paperclip/instances/default/ |
그 안에는 PostgreSQL 데이터 디렉터리, 로그, 그리고 SQL 백업이 있었다.
1 | C:/Users/crescent/.paperclip/instances/default/data/backups/ |
Paperclip 서버를 다시 띄우지 않아도, 최신 SQL 백업을 읽으면 회사, 에이전트, 프로젝트, 이슈, 활동 로그를 복원할 수 있었다. 그래서 AgentOffice 서버에 Paperclip Demo Import 기능을 붙였다.
Paperclip Demo Import
Paperclip Demo Import 버튼은 서버의 /api/paperclip-demo-import를 호출한다.
서버는 최신 Paperclip SQL 백업을 찾아서 다음 테이블을 파싱한다.
companiesagentsprojectsissuesactivity_log
그리고 이 데이터를 AgentOffice의 세계로 변환한다.
| Paperclip 데이터 | AgentOffice 표현 |
|---|---|
| company | scenario/highlight 제목 |
| agent | 사무실 캐릭터 |
| issue | task board 항목 |
| activity_log | highlight 이벤트 |
| agent status | 캐릭터 action/mood/risk/momentum |
실제 최신 백업에서는 다음 데이터가 들어왔다.
1 | company: Read-Master |
Paperclip 서버가 꺼져 있어도, 과거의 에이전트 조직 상태를 사무실 UI로 다시 불러오는 데는 충분했다.
흥미로웠던 점
이번 실험에서 가장 흥미로웠던 점은 AgentOffice가 단순한 “AI 캐릭터 놀이”가 아니라는 것이다.
조금만 바꾸면 이것은 로컬 에이전트 시스템들을 위한 관측 레이어가 된다.
터미널 로그는 시간순 기록을 잘 보여준다. 대시보드는 상태 요약을 잘 보여준다. 하지만 사무실 UI는 관계와 분위기를 보여준다. 어떤 에이전트가 바쁜지, 어떤 이슈가 떠 있는지, 조직 전체가 안정적인지 불안정한지 한눈에 느낄 수 있다.
이런 시각화는 정확한 운영 도구라기보다 “인지적 표면”에 가깝다. 내가 지금 무엇을 보고 있는지, 어떤 에이전트가 살아 있는지, 어떤 일이 걸려 있는지를 빠르게 감각화하게 해준다.
이번에 얻은 구조
현재 구조는 이렇게 정리할 수 있다.
1 | Paperclip SQL Backup |
이 흐름은 서버가 살아 있는 시스템뿐 아니라, 백업/로그/스냅샷만 남은 시스템도 시각화할 수 있게 한다. 이 지점이 마음에 든다. 에이전트 실험은 자주 깨지고, 이동하고, 버려진다. 그래도 흔적이 남아 있다면 다시 하나의 장면으로 불러올 수 있다.
남은 과제
아직 이 실험은 완성된 제품이 아니다. 다음 단계는 명확하다.
- Paperclip 서버가 살아 있을 때 live API polling 연결
- 여러 Paperclip agent를 좌석/팀/역할별로 배치
- activity log를 timeline replay로 재생
- issue 상태별 색상과 zone 표시
- Ollama/LLM loop를 필요할 때만 켜는 hybrid mode
- 번들 크기 줄이기와 UI 패널 정리
특히 live 연결이 붙으면 AgentOffice는 단순한 데모가 아니라 “로컬 에이전트 관제실”에 가까워질 수 있다.
마무리
이번 실험은 꽤 작은 로컬 수선에서 시작했다. 의존성을 올리고, 무거운 모델 호출을 끄고, 데모 버튼을 붙이는 정도였다. 그런데 그 위에 Paperclip 백업을 얹자 방향이 바뀌었다.
에이전트를 꼭 채팅창 안에만 둘 필요는 없다. 작업, 관계, 활동 로그, 실패 흔적까지 하나의 공간으로 볼 수 있다.
AgentOffice는 아직 거칠다. 하지만 이 거친 화면 안에는 내가 좋아하는 가능성이 있다. 로컬의 여러 AI 실험을 한 사무실 안에 불러와서, 사람처럼 보는 것이 아니라 시스템처럼 느끼는 가능성이다.
댓글
GitHub 계정으로 의견을 남길 수 있습니다. 댓글은 GitHub Discussions에 저장됩니다.