원문 캡처 · github.com
원문 캡처 · github.com

Twine은 코딩 에이전트를 한곳에서 조율하는 macOS 작업 공간이다. 워크플로를 구성하고 에이전트 활동을 기록해 살펴보며, 여러 에이전트 사이에서 작업을 전달할 수 있다. Apple Silicon을 탑재한 macOS 26 이상이 필요하고, 에이전트 워크플로를 쓰려면 지원되는 하네스를 하나 이상 설치하고 로그인해야 한다.

Twine은 Homebrew로 설치할 수 있다.

sh
brew install --cask standing-desks/tap/twine-ade

설치한 뒤 응용 프로그램에서 Twine을 연다. 수동 설치를 원하면 최신 릴리스에서 .dmg 파일을 내려받아 연 다음 Twine을 Applications 폴더로 드래그한다. 수동 설치본을 업데이트하는 방법은 설치 안내에 나와 있다. 터미널 워크플로는 하네스 없이 사용할 수 있다.

시작과 워크플로

에이전트 하네스 없이도 약 1분이면 기본 기능을 시험할 수 있다. Twine을 열어 Open Folder…(⌘O)를 선택하고 프로젝트 폴더를 연다. 세션을 만든 뒤 새 탭에 워크플로를 추가하고 Terminal을 선택한다. 터미널에서 git status 같은 명령을 실행하면 출력이 터미널에 표시되고, Traces 패널에는 해당 명령의 단계가 기록된다. 단계를 선택하면 그 출력으로 이동한다.

에이전트 워크플로를 시작하려면 다른 탭을 추가하고 Adversarial을 선택한다. 구현자와 검토자 역할에 각각 하네스를 지정한 뒤 워크플로를 시작하고, 구현자 터미널에 작업을 입력한다. 구현자가 완료 내용을 제출하면 검토자의 터미널로 작업이 전달된다. 검토자는 승인하거나 수정 사항을 보낸다.

세션은 폴더 안에서 진행하는 이름 있는 작업 단위이며, 각 세션의 최상위 탭은 하나의 워크플로를 나타낸다. 내장 워크플로를 선택하거나 직접 에이전트 그래프를 만들 수 있다.

워크플로작동 방식
Terminal분할 창을 선택적으로 사용할 수 있는 일반 셸이다.
Single agent대화형 코딩 에이전트 하나를 사용한다.
Adversarial구현자가 작업하고 검토자가 승인하거나 수정을 요청한다.
Coordinator계획자가 두 작업자에게 공통 계획을 전달한다. 코디네이터는 두 결과를 기다린 뒤 작업을 확인한다.
Custom에이전트와 이벤트 연결을 직접 구성한다. 에이전트를 병렬 실행하거나 결과 일부를 스트리밍하고, 결과를 검토하거나 시간을 비교할 수 있다.

+를 클릭한 뒤 Create your own을 선택하면 새 탭에서 기본 그래프 편집기가 열린다. 저장한 워크플로는 $XDG_CONFIG_HOME/twine/workflows에 TOML 파일로 저장되며, 기본 경로는 ~/.config/twine/workflows다. 파일을 복사해 워크플로를 공유하거나 버전 관리에 넣을 수 있다. 에이전트 지침은 각 하네스의 기본 지침 전달 방식을 사용하며, 설정만으로 에이전트 작업이 시작되지는 않는다.

사용자 안내서에는 다음 기능의 사용법이 있다.

  • Mark done…을 사용하면 에이전트 대신 워크플로를 진행해 완료 내용 제출, 검토 결정, 작업 할당을 할 수 있다. 자세한 내용은 에이전트 워크플로를 참고하면 된다.
  • 터미널을 최대 네 개 창으로 나눌 수 있다. 이미지나 파일을 창에 붙여 넣거나 끌어 놓으면 경로로 입력된다. 자세한 내용은 터미널 창을 참고하면 된다.
  • 열린 폴더의 파일을 구문 강조와 함께 살펴보고 편집할 수 있다. 자세한 내용은 파일 안내를 참고하면 된다.
  • Twine → Settings…(⌘,)에서 터미널 글꼴을 바꾸면 ~/.config/twine/config.toml이 수정되고, 저장할 때 변경 사항이 적용된다. 설정 예시는 다음과 같다.
toml
[terminal] font_family = "JetBrains Mono" font_size = 13.0

추적 기록과 지원 하네스

Traces → In Depth에서 기록된 에이전트 활동을 확인할 수 있다. Overview에는 활동 횟수와 Inspect activity 동작이 표시된다. 하네스가 정보를 제공하는 경우 LLM 호출 기록에는 공개 응답이나 요약, 모델 정보, 사용량 세부 정보가 포함된다. 기록되지 않은 시간 정보나 요청 본문은 기록되지 않았다고 표시된다. Show full details를 선택하면 저장된 전체 입력과 결과를 볼 수 있다.

저장 공간 제어 기능은 사용량을 보여 주고, 특정 단계를 고정하거나 완료된 단계의 고정되지 않은 세부 정보를 지운다. Twine은 간결한 메타데이터를 SQLite에 보관하고 큰 세부 정보는 인접 파일에 중복 저장하지 않는다. 활성 단계와 고정된 세부 정보는 캐시 예산을 초과할 수 있다. Twine은 하네스의 기본 파일을 수정하지 않는다. 추적 설정 예시는 다음과 같다.

toml
[traces] detail_budget_mb = 512 retention_days = 90 # Closed, unpinned workflows; 0 disables age expiry.

저장된 Codex, Claude Code, Pi, OMP 대화 기록은 연결된 단계의 활동을 복구하는 데 쓰일 수 있다. 복구에는 기본 ID를 사용하거나, 같은 대화 안에서 프롬프트와 시간이 명확하게 일치하는 항목을 사용한다. 관찰 기록과 하네스의 기본 기록 모두에 없는 데이터는 복구할 수 없다. OpenCode와 Antigravity는 실시간 관찰자를 사용한다.

하네스는 에이전트 역할을 맡는 외부 CLI 프로그램이다. Twine은 셸의 PATH에서 각 하네스의 명령을 찾아 실행한다.

하네스명령Traces의 프롬프트·도구 세부 정보
Codexcodex제공
Claude Codeclaude제공
pipi제공
OMPomp제공
Antigravityagy제공. 노출되는 경우 모델 호출 세부 정보도 제공
OpenCode v2opencode제공

하네스는 각각 별도로 설치하고 인증해야 한다. 사용할 모델은 각 하네스의 CLI에서 선택하며, 제공자 이용 권한과 사용 요금은 하네스 설정을 따른다. Twine은 하네스 설정 파일을 수정하지 않는다.

개발 상태와 제약

Twine은 초기 개발 단계다. 일상적으로 사용할 수 있지만 릴리스 사이에 기능, 통합 방식, 저장 형식이 바뀔 수 있으며 안정성은 보장되지 않는다. 릴리스별 변경 사항은 변경 기록에 정리돼 있다.

  • 에이전트는 열린 폴더에서 직접 실행된다. Twine은 작업 트리나 샌드박스를 만들지 않으며, 병렬 작업자 사이의 파일 소유권은 권고 사항에 그친다.
  • Twine은 대화형 데스크톱 앱이다. 워크플로를 무인 또는 헤드리스 방식으로 실행하지 않는다.
  • 하네스 지원 여부는 CLI 버전에 따라 달라진다. 하네스가 업데이트되면 Twine이 대응할 때까지 통합 기능이 작동하지 않을 수 있다.
  • 추적은 최선의 노력으로 제공된다. 기록되는 터미널 출력은 터미널당 64 MiB, 전체 512 MiB로 제한되므로 오래된 출력은 만료될 수 있다.
  • 대화를 이어서 실행하려면 하네스가 세션 핸들을 기록해야 한다.

빌드와 프로젝트 구성

소스에서 빌드하려면 활성 개발 도구 체인으로 선택된 Xcode 27.0이 필요하다. Command Line Tools만으로는 충분하지 않다. Xcode Metal Toolchain도 설치해야 하며, 안정 버전 Rust는 rustup으로 설치한다.

sh
git clone https://github.com/standing-desks/twine.git
cd twine
make debug
open out/debug/Build/Products/Debug/Twine.app

디버그 빌드의 데이터는 설치된 Twine과 분리된 out/runtime/debug/에 저장된다. 변경 사항을 확인할 때는 다음 명령을 사용할 수 있다.

sh
make fmt # format the library and the app
make check # lint and unit-test the library and the app
make # list every target

make ui-test는 UI 테스트 모음을 실행하며, 테스트 중 데스크톱을 점유한다.

경로내용
macOS/SwiftUI와 AppKit 프런트엔드
twine-core/동작과 저장 상태를 관리하는 Rust 애플리케이션 라이브러리
twine-bridge/두 구성 요소 사이의 C ABI 어댑터
docs/웹사이트와 안내 문서의 소스

개발 안내서에는 설정, 하네스 통합, 릴리스 방법이 나온다. CONTEXT.md는 코드와 UI에서 사용하는 용어를 정의하며, AGENTS.md는 저장소의 작업 규칙을 담고 있다.

버그 제보와 실제 워크플로에 관한 의견은 GitHub Issues에서 받는다. 제보할 때는 macOS, Twine, 하네스 버전과 기대한 동작, 실제로 발생한 일을 적어야 한다. 큰 변경은 시작하기 전에 이슈를 열어 아이디어를 논의하는 것이 안내돼 있다. 변경 사항은 풀 리퀘스트를 통해 main에 반영된다. 취약점은 공개 이슈 대신 GitHub 보안 권고를 통해 비공개로 제보해야 한다.

기여 방법은 기여 안내에서 확인할 수 있으며, 프로젝트는 Developer Certificate of Origin을 안내한다. Twine은 MIT License로 제공된다. 터미널 에뮬레이션에는 SwiftTerm을 사용한다.