추가 메뉴

잡담
tunaFlow - CLI 멀티 에이전트 오케스트레이션 클라이언트 (100% AI-authored, Beta)`
지나가던행인이

Lv.1 지나가던행인이 (61.♡.201.240)

2026년 4월 24일 AM 03:59

조회 2,314 공감 0

베타라 아직 여기저기 구멍이 있습니다.

최대한 걸른다고 걸렀는데 프로덕션레벨로 만들기가 쉽지 않네요 ㅎㅎ

기본적으로 에이전트를 2개 이상(로컬LLM포함) 굴리시는 분들에게 유용할 것 같습니다.

대단한건 아니고 멀티에이전트세션에 워크플로우를 살짝 얹었습니다.

반념 넘게 Claude Code / Codex / Gemini CLI 를 병행해서 쓰고 있고 맥북 사고 3개월째 셋팅할땐 vs code 분명히 설치했는데, 문득 생각해보니 VS Code 를 켜놓고 코드 편집기 화면을 보는 시간이 거의 없었네요 에디터는 사실상 "문서 뷰어" 로만 쓰고, 실제 작업은 터미널에서 에이전트랑 계속했습니다. 대 바이브 코딩 시대에 이런 사람이 꽤 될 거라는 생각이었습니다.(그리고 오퍼스4.6 이후로 코딩 관련해서는 저보다 ai가 훨씬 잘합니다. 흠잡을데가 없습니다. 추상화요? 방향만 잘 잡아주면 됩니다. 군더더기 없이 잘해요)

그리고 터미널에서 여러 에이전트를 돌리는 게 정말 귀찮습니다. iTerm2 / tmux 에서 3개 창 띄우고 복붙하고, 어느 에이전트한테 뭘 시켰는지 추적하고, 각 엔진별로 프롬프트 조금씩 다르게 다듬고… 복붙하고 그냥 이걸 한 화면에서 할려고 만들다가 좀 다른데로 샌것 같습니다

원래 tunaPi라고 누워서 메신저로 터미널에이전트한테 일시키려고 만든 앱이 있는데 범용메신저 보다 전용메신저 만들어볼까(tunaDish)하다가 데스크탑 앱도 만들어 볼까? (tunaChat) 하다가 기왕이면 병에 걸려 tunaFlow라고 만들어 봤습니다. 많은 분들께 유용할 지는 잘 모르겠습니다만... 저는 tunaFlow만들면서 seCall도 만들었고, 또 여러가지 저만 쓰는 툴들 잘 만들어서 사용하고 있습니다. ㅎㅎ(5월부터 진행할 외주 개발에도 활용할 예정이구요)

(아래는 클로드가 써준겁니다 😄)

무엇이 달라야 했나

"단순한 CLI 래퍼는 이미 많다" 는 걸 출발점에 두고, 네 가지를 차별점으로 두었습니다.

1. 엔진 parity

Claude / Codex / Gemini / OpenCode 를 같은 ContextPack 규격으로 호출합니다.
엔진별 glue 코드가 feature 레이어에 없습니다.

2. Branch-adopt

대화 중간에서 "다른 방향 한번 실험" 이 필요할 때 git branch 처럼 분기합니다.
분기한 대화는 shadow conversation 이라는 별도 DB 공간에 살고, 메인 대화와
완전히 격리됩니다. 실험 끝나면 요약만 메인으로 가져옵니다.

git branch 쓰듯 자연스러우니 코드 수정도 과감해집니다.

3. Roundtable

에이전트에게 "이 코드 리뷰해줘" 하면 대부분 "좋습니다" 라고 합니다.
자기가 짠 것도, 남이 짠 것도. 사람 팀 코드 리뷰가 작동하는 이유는
리뷰어가 작성자와 다른 사람이기 때문이잖아요. 에이전트에도 같은 구조 적용.

다른 엔진, 다른 페르소나, 필요하면 blind (앞 참가자 응답을 안 보고)
상태에서 토론시킵니다. Sequential (순차) / Deliberative (병렬 + integrator)
두 모드.

4. CLI-first

Claude Pro / ChatGPT Plus / Gemini 유료 구독을 그대로 씁니다. tunaFlow 가
API 를 직접 호출하지 않아서 추가 과금이 없습니다. 대신 subprocess
관리가 골치지만, 구독자 입장에서 돈을 두 번 내지 않아도 되는 건 큽니다.

스택

Tauri 2 · React 18 · TypeScript · Rust · SQLite. ONNX 로 로컬 임베딩.

좀 이상한 점

이 앱의 코드는 제가 단 한 줄도 직접 타이핑하지 않았습니다.

아키텍처 결정, PR 리뷰, 방향 지시만 했고 구현은 전부 Claude Code 가
했습니다. "AI 도구를 AI 가 만든다" 는 재귀적 실험이기도 하고, "인간은
어디까지 방향 설정자로만 머물 수 있는가" 에 본인이 실험 대상이 된
케이스이기도 합니다.

상태

  • 베타 · macOS 한정 (Windows/Linux 후속)

  • i18n 영/한 완결 직전 (세션 41 시점 A2-G 머지 완료)

  • PTY 인앱 터미널 재작업 중 — 외부 터미널 병행 사용

  • 이슈 / 피드백 환영

https://github.com/hang-in/tunaFlow/

tunaFlow 는 여러 오픈소스 프로젝트의 아이디어와 코드를 참고했습니다. 각 메인테이너에게 감사드립니다.

번들 사이드카 (앱과 함께 배포)

  • rawq (MIT) — 코드 검색 사이드카. tunaFlow 는 로컬 패치 빌드를 번들로 포함.

  • code-review-graph (MIT) — CRG 사이드카 (Full 트랙). 그래프 기반 코드 리뷰 분석.

  • context-hub (MIT) — 컨텍스트 공유 사이드카. 첫 실행 시 자동 설치.

설계 / 아키텍처 영향

  • abtop (MIT) — AI 코딩 에이전트의 런타임 관측성 / 진단. Trace 패널과 상태바 디자인에 영향.

  • hermes-agent (MIT) — memory / toolset / iteration-budget 패턴.

  • larksuite-cli (MIT) — CLI action layering / shared-rule / async-contract 패턴.

  • chops (MIT) — ContextPack code-slice 주입 아이디어.

  • codex (Apache 2.0) — CLI 에이전트 프로토콜 참조 구현.

  • xterm.js (MIT) — PTY 패널 터미널 렌더링.

  • react-markdown (MIT) — 채팅 마크다운 렌더링.

  • D2Coding (OFL 1.1) — 번들된 고정폭 폰트.

  • Tauri (MIT / Apache 2.0) — 데스크탑 셸 프레임워크.

댓글 (27)

  • blueship

    blueship Lv.1

    04.24 · 180.♡.248.31

    뭔가 멋진 것 같은데 이게 뭔지를 ai에게 물어봐야겠습니다 ㅎㅎ

  • 지나가던행인이

    지나가던행인이 Lv.1 → blueship 작성자

    04.24 · 61.♡.201.240

    바람직하십니다. 👍

  • 박달냥

    박달냥 Lv.1

    04.24 · 175.♡.197.38

    오…. 이거한번 써보고싶은 마음이 들었네요!! 대단하십니다!!!!! 스타 박으러 갑니다!!

  • 지나가던행인이

    지나가던행인이 Lv.1 → 박달냥 작성자

    04.24 · 61.♡.201.240

    첫스타 감사합니다!(원래 있던 스타는 제가 찍은...🫢)

  • 전기운동화

    전기운동화 Lv.1

    04.24 · 67.♡.99.230

    Branch adopt 좋네요. 일단 코드 방향이 잡히면 AI도 그 틀에서 만들어내느라 삽질할때가 종종 있는데 그럴때 유용하겠네요.

  • 지나가던행인이

    지나가던행인이 Lv.1 → 전기운동화 작성자

    04.24 · 61.♡.201.240

    개인적으로는 RT기능이 제일 좋습니다. 에이전트들끼리 붙혀놓으면 재밌어요 새로운 사실(?)도 많이 발견하구요. 근데 사용량 게이지 훅훅 올라가는게...🥲

  • 해질녘

    해질녘 Lv.1

    04.24 · 211.♡.115.93

    오.. 새벽부터 좋은 게시글을 보고 설치하고 있습니다.

    정말 대단하시네요. ^^

    설치하면서 두번의 오류가 발생하는데, 2번 오류는 해결을 못했네요.

    # 1번 이슈

    git clone https://github.com/hang-in/tunaFlow.git cd tunaFlow npm install npm run tauri dev Cloning into 'tunaFlow'... remote: Enumerating objects: 9320, done. remote: Counting objects: 100% (353/353), done. remote: Compressing objects: 100% (255/255), done. remote: Total 9320 (delta 118), reused 123 (delta 96), pack-reused 8967 (from 2) Receiving objects: 100% (9320/9320), 13.78 MiB | 23.55 MiB/s, done. Resolving deltas: 100% (6248/6248), done. added 405 packages, and audited 406 packages in 5s 131 packages are looking for funding run npm fund for details 2 vulnerabilities (1 moderate, 1 high) To address all issues (including breaking changes), run: npm audit fix --force Run npm audit for details. > tuna-flow@0.1.0 tauri > tauri dev failed to run 'cargo metadata' command to get workspace directory: failed to run command cargo metadata --no-deps --format-version 1: No such file or directory (os error 2) Error failed to run 'cargo metadata' command to get workspace directory: failed to run command cargo metadata --no-deps --format-version 1: No such file or directory (os error 2)

    ## 해결

    에러 핵심은 이겁니다:

    cargo metadata ... No such file or directory (os error 2)
    → cargo 명령어가 시스템에 없거나, 설치돼 있어도 PATH에 안 잡혀 있습니다. Tauri는 Rust/Cargo가 필수예요. Tauri 공식 prerequisite 문서도 Rust 환경이 필요하다고 안내하고 있고, Rust 공식 문서도 rustup으로 설치하면 cargo가 함께 설치된다고 명시합니다.

    해결 순서:

    1) Rust 설치

    macOS / Linux

    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

    설치 후 셸 반영:

    source "$HOME/.cargo/env"

    Windows

    rustup-init.exe로 Rust를 설치하면 cargo도 같이 설치됩니다. 공식 설치 안내도 그렇게 되어 있습니다.

    #2번 이슈

    curl -fsSL https://raw.githubusercontent.com/hang-in/tunaFlow/main/install.sh | bash
    tunaFlow 설치 중... (트랙: lite, 아키텍처: arm64)
    curl: (56) The requested URL returned error: 404

    ##해결

    해결 못했습니다.

  • 지나가던행인이

    지나가던행인이 Lv.1 → 해질녘 작성자

    04.24 · 61.♡.201.240

    감사합니다! install.sh 에 두 개 버그가 있었습니다 — 지금 막 main 에 fix 푸시했습니다.

    1. GitHub /releases/latest API 는 prerelease (v0.1.0-beta) 를 제외해서

    애초에 404 가 떨어지는 상태였습니다.

    2. 그리고 DMG 파일 매칭 패턴도 제가 틀려서, latest 가 살아있었어도

    못 찾는 상태였습니다.

    둘 다 방금 고쳤으니 다시 한 번

    curl -fsSL https://raw.githubusercontent.com/hang-in/tunaFlow/main/install.sh | bash

    돌려주시면 이번엔 정상 다운로드될 겁니다. 1번 (Rust / cargo) 은 prerequisite

    으로 README 에 명시돼 있지만 설명이 빈약했다고 생각합니다. Rust 설치 안내도

    조금 뒤에 더 눈에 띄게 보강하겠습니다. 첫 커뮤니티 리포트 감사합니다.

  • 해질녘

    해질녘 Lv.1 → 지나가던행인이

    04.24 · 211.♡.115.93

    수정 기다리고 있었습니다.

    방금 설치 진행했고 정상적으로 설치는 완료했고,

    tunaflow 는 성공적으로 실행됐습니다. ^^

    참고로, 진행중에 아래의 오류가 있었고,

    ~/Documents/workspace/26work/tunaFlow   main  curl -fsSL https://raw.githubusercontent.com/hang-in/tunaFlow/main/install.sh | bash tunaFlow 설치 중... (트랙: lite, 아키텍처: aarch64) 다운로드 중: https://github.com/hang-in/tunaFlow/releases/download/v0.1.0-beta/tunaFlow_0.1.0-beta_aarch64.dmg ######################################################################## 100.0% Gatekeeper 격리 속성 제거 중... bash: line 107: /usr/local/bin/tunaflow: Permission denied

    sudo rm -f /usr/local/bin/tunaflow

    sudo ln -sf "/Applications/tunaFlow.app/Contents/MacOS/tunaFlow" /usr/local/bin/tunaflow
    sudo chmod +x /usr/local/bin/tunaflow

    하고, 아래 명령어로 재설치 했습니다.

    curl -fsSL https://raw.githubusercontent.com/hang-in/tunaFlow/main/install.sh | bash

  • 지나가던행인이

    지나가던행인이 Lv.1 → 해질녘 작성자

    04.24 · 61.♡.201.240

    덕분에 install.sh 수정을 무사히 마쳤습니다!

    원인: macOS 기본 /usr/local/bin/ 은 root 소유라 cat > /usr/local/bin/tunaflow 가 Permission denied. sudo ln -sf 가 정확한 우회입니다. 방금 install.sh 에 수정 반영했습니다:

    - 직접 쓰기 시도 → 실패하면 sudo 로 폴백 (패스워드 프롬프트)

    - sudo 도 안 되면 경고만 남기고 종료 — 앱 자체는 /Applications/tunaFlow.app 에 이미 복사된 상태라 open -a tunaFlow 또는 Launchpad 에서 정상 실행 가능합니다.

    다음 설치하시는 분들부터는 (install.sh 는 main raw 에서 curl 하므로 재릴리즈 불요) 프롬프트 한 번만 거치면 CLI 래퍼까지 깔끔하게 설치됩니다. 이런 엣지케이스는 사용자 환경 들어가봐야 보이는 영역이라 이런 제보가 정말 도움이 됩니다. 감사합니다!

댓글을 작성하려면 이 필요합니다.