이 프로젝트는 “Kubernetes Job에서 Claude Code를 헤드리스(headless)로 실행할 수 있을까?”라는 질문에서 시작하여, 실제 프레임워크로 발전할 때까지 계속 성장했습니다. 이제는 더 다듬기보다는 공유하는 것이 낫다고 판단될 정도입니다: tatara.
기능: 오퍼레이터(operator)가 저장소(repos)를 감시합니다. 새로운 이슈(issue)가 들어오면, 에이전트(agent)가 이를 분류(triage)하고, 코드를 작성하며, PR(Pull Request)을 생성합니다. 에이전트는 절대 무엇도 머지(merge)하지 않으며, 사람이 모든 PR을 검토합니다. Grafana 알림이 발생하면, 조사 에이전트(investigation agent)가 대시보드에 접근하여 문제를 파악합니다. 또한 주기적인 브레인스토밍 에이전트(brainstorm agent)가 개선 제안을 이슈로 등록하여, 백로그(backlog)가 스스로 채워지도록 합니다.
실제로 해결하기 어려웠던 부분들:
• Job 내부에서 Claude Code를 비대화형(non-interactively)으로 실행하기 — claude -p, OAuth 토큰 스코핑(scoping), 컨테이너에서 트랜스크립트(transcripts)를 파싱하기 위한 중지 훅(stop hooks)
• 에이전트에게 메모리(memory) 부여하기. 매 세션이 콜드 스타트(cold start)로 시작되는 것은 무용지물이었기에, 실행 간에 지속되는 코드베이스의 LightRAG 지식 그래프(knowledge graph)를 구축했습니다.
• 플랫폼 팀이 운영할 수 있는 형태로 만들기: 모든 것이 Kubernetes CR(Custom Resource)이며, 메트릭(metrics), OIDC, 멀티테넌트(multitenant)를 지원합니다.
설계상 에이전트 불가지론적(agent-agnostic)이지만, Claude Code를 기반으로 성장했으며 현재 그것을 사용하여 실행하고 있습니다.
클러스터에 셀프 호스팅(Self-hosted)하며, 사용자의 키와 코드는 절대 외부로 나가지 않습니다. AGPLv3 라이선스입니다.
문서: https://szymonrychu.github.io/tatara-documentation/
submitted by /u/lordsickleman
[link] [comments]