본문으로 건너뛰기

© 2026 Molayo

GitHub요약2026. 05. 20. 18:43

mixpeek/amux

요약

amux는 AI 에이전트를 효율적으로 관리하고 실행하기 위한 오픈 소스 컨트롤 플레인입니다. 웹 대시보드, 칸반 보드, 브라우저 자동화 및 에이전트 간 오케스트레이션 기능을 제공하며, 자가 치유(Self-healing) 기능을 통해 에이전트 세션의 안정성을 보장합니다.

핵심 포인트

  • 자가 치유(Self-healing) 와치독을 통해 컨텍스트 압축, 자동 재시작, 멈춘 프롬프트 해제 지원
  • REST API와 공유 글로벌 메모리를 활용한 에이전트 간 오케스트레이션 및 작업 위임 가능
  • 웹 대시보드, 모바일 PWA, 네이티브 iOS 앱을 통해 병렬 에이전트 세션 모니터링 및 제어
  • 칸반 보드, CRM, 노트, 이메일 등 에이전트 운영에 필요한 다양한 생산성 도구 통합
  • Claude Code 지원 및 외부 의존성 없는 단일 파일 구성 지향

AI 에이전트를 위한 오픈 소스 컨트롤 플레인 (control plane). 웹 대시보드, 칸반 보드 (kanban board), 노트, CRM, 이메일, 브라우저 자동화 (browser automation), 슬래시 명령어 (slash-command) 스킬, 그리고 에이전트 간 오케스트레이션 (agent-to-agent orchestration) 기능을 통해 브라우저나 휴대폰에서 수십 개의 병렬 에이전트 세션을 실행하세요. 자가 치유 (Self-healing) 기능, 단일 파일 구성, 외부 의존성 제로 (zero external dependencies)를 지향합니다. 현재 tmux를 통해 Claude Code를 지원합니다.

amux.io· 시작하기 · FAQ · 블로그

git clone https://github.com/mixpeek/amux && cd amux && ./install.sh
amux register myproject --dir ~/Dev/myproject --yolo
amux start myproject
...

라이선스: MIT + Commons Clause — 자유롭게 사용, 수정 및 셀프 호스팅이 가능합니다. 상업적 재판매에는 별도의 라이선스가 필요합니다.

문제amux의 솔루션
컨텍스트 압축 (context compaction)으로 인해 새벽 3시에 Claude Code가 충돌함자가 치유 와치독 (Self-healing watchdog) — 자동 압축, 재시작, 마지막 메시지 재생
...
자가 치유 (Self-healing)— 컨텍스트를 자동 압축하고, 손상 시 재시작하며, 멈춰버린 프롬프트를 해제합니다. 자세히 알아보기 →
병렬 에이전트 (Parallel agents)— 중지/시작 시에도 유지되는 UUID를 가진 수십 개의 세션을 실행합니다.
에이전트 오케스트레이션 (Agent orchestration)— 에이전트가 REST API + 공유 글로벌 메모리 (shared global memory)를 통해 피어(peer)를 발견하고 작업을 위임합니다. 자세히 알아보기 →
채널 (Channels)— @멘션 기능을 통한 1:1 세션 간 메시징으로 에이전트들이 실시간으로 채팅, 위임 및 조율할 수 있습니다.
칸반 보드 (Kanban board)— SQLite 기반으로 자동 생성된 키, 원자적 점유 (atomic claiming), 커스텀 컬럼, iCal 동기화를 지원합니다.
대화 포크 (Conversation fork)— 세션 기록을 별도의 브랜치에 있는 새 세션으로 복제합니다.
Git 충돌 감지 (Git conflict detection)— 에이전트들이 디렉토리와 브랜치를 공유할 때 경고를 보내며, 클릭 한 번으로 격리할 수 있습니다.
토큰 추적 (Token tracking)— 캐시 읽기를 제외한 세션별 일일 지출을 추적합니다.

웹 대시보드 (Web dashboard)— 세션 카드, 라이브 터미널 미리보기, 마크다운 에디터가 포함된 파일 탐색기, 모든 출력물에 대한 검색을 제공합니다. 자세히 알아보기 →
모바일 PWA (Mobile PWA)— iOS/Android에 설치 가능하며, 백그라운드 동기화 (Background Sync)를 통해 재연결 시 명령어를 재생합니다. 자세히 알아보기 →
네이티브 iOS 앱 (Native iOS app)— App Store에서 이용 가능합니다.

Notes (노트)— 리치 에디터 (rich editor), 페이지 내 찾기 (find-in-page), 세션 간 공유 (inter-session sharing) 기능을 갖춘 완전한 마크다운 (markdown) 노트 시스템
CRM— 연락처, 회사, 상호작용 로그, 후속 조치 추적 및 태그
Email (이메일)— Mail.app API 연동을 통한 이메일 송수신
Browser automation (브라우저 자동화)— 저장된 인증 프로필 (auth profiles), 스크린샷, AI 에이전트 모드를 포함한 공유 Playwright 인스턴스
Skills / slash commands (스킬 / 슬래시 명령어)— 에이전트가 호출할 수 있는 프로젝트 수준의 사용자 정의 명령어 (예: /commit, /review-pr)
Scheduler (스케줄러)— cron 표현식과 관리 UI를 갖춘 이름이 지정된 반복 작업
File explorer (파일 탐색기)— 에이전트 작업 디렉토리 탐색, 파일 미리보기, 페이지 내 검색을 통한 마크다운 편집

Single file (단일 파일)— HTML/CSS/JS가 인라인으로 포함된 하나의 Python 파일. 수정 시 저장과 동시에 재시작됩니다. 자세히 알아보기 →

ANSI가 제거된 tmux 출력을 파싱합니다 — 후크 (hooks), 패치 (patches), Claude Code의 수정 사항이 필요 없습니다.

조건동작
컨텍스트 (Context) < 50%/compact 전송 (5분 쿨다운)
redacted_thinking … cannot be modified재시작 + 마지막 메시지 재생
대기 상태 정체 + CC_AUTO_CONTINUE=1프롬프트 유형에 따라 자동 응답
YOLO 세션 + 안전 프롬프트 (safety prompt)자동 응답 (모델의 질문에는 절대 실행되지 않음)
/rate-limit-options (모든 세션, 플릿 전체)1번 자동 클릭, 리셋 시간 기록, 리셋 시 자동 재개

단일 Max/Pro 계정의 사용 한도에 도달하면, 해당 계정의 모든 활성 Claude Code 세션이 몇 초 이내에 동일한 /rate-limit-options 프롬프트에서 차단됩니다. amux의 워치독 (watchdog)은 이를 플릿 전체(fleet-wide)에서 감지하여

더 풍부한 재개 (resume) 프롬프트가 필요한 오케스트레이터 (orchestrators) 또는 슈퍼바이저 (supervisors)에게 유용합니다:

echo 'CC_RATE_LIMIT_RESUME_TEXT="peek workers, surface phase STOPs, resume monitoring"' \
>> ~/.amux/sessions/orchestrator.env

플릿 자동 재개 모드 (Fleet auto-resume mode)~/.amux/server.env 파일에서 AMUX_RATE_LIMIT_MODE를 설정하세요:

모드동작
off프롬프트를 감지하고 1번을 누르지만, 자동으로 재개하지는 않음 — 사용자가 수동으로 조종해야 함
capped (기본값)UTC 일자별 세션당 AMUX_RATE_LIMIT_BUDGET 횟수(기본값 3회)까지 자동 재개 — 한도 도달 후에는 수동 모드로 전환
unlimited한도 없이 매번 자동 재개

속도 제한 (rate-limited) 세션에서 사용자가 수동으로 개입하는 경우(2번/3번 옵션 선택, 새로운 내용 입력, 아카이브 등)는 리셋 시점에 상태 인식 스크롤백 (state-aware scrollback) 확인을 통해 감지되며, 해당 세션에 대한 자동 재개는 건너뜁니다.

수동 검증: 개발 서버에 기능을 설치한 다음, 테스트 세션의 tmux 스크롤백에 가짜 프롬프트를 주입하세요:

tmux send-keys -t amux-rl-test \
$'What do you want to do?\n❯ 1. Stop and wait for limit to reset\n 2. Add funds\n 3. Upgrade your plan\nresets 23:59\n' \
Enter

약 3~15초 이내에 대시보드 카드에 배지가 표시되어야 하며, ~/.amux/logs/server.log[rate-limit] session=... auto-selected option 1, reset_at=...가 포함되어야 합니다.

시뮬레이션 주의사항: tmux send-keys는 텍스트를 가공되지 않은 터미널 출력 (raw terminal output)이 아닌 Claude의 입력 프롬프트에 전달하며, Claude는 실제 속도 제한 이벤트와 다르게 이를 렌더링하거나 재렌더링할 수 있습니다. 주의해야 할 두 가지 함정은 다음과 같습니다:

  • 엄격한 리셋 시간 파서 (reset-time parser)가 Claude의 실제 렌더링과 일치하지 않을 수 있습니다. 이 경우 워치독 (watchdog)은 5분간의 안전 폴백 (safety fallback)을 적용하여 자동 재개 경로가 여전히 엔드 투 엔드 (end-to-end)로 작동하도록 합니다. 실제 속도 제한 윈도우 (rate-limit windows)는 항상 1시간보다 길기 때문에, 폴백이 조기 재개를 유발하는 일은 없습니다.

  • 메뉴 텍스트가 제출되지 않은 채 Claude의 입력 영역에 남아 있는 경우, 감지기가 약 12초마다 (10초 쿨다운 + 3초 틱) 다시 실행됩니다. C-c를 전송하세요.

배지/필 (badge/pill) 동작을 관찰하는 동안 루프를 중단하고 싶다면, 초기 감지 이후의 세션에 다음을 전송하세요: tmux send-keys -t amux-rl-test C-c

이 시뮬레이션은 무결성 검사 (sanity check)입니다. 실제 렌더링에 대한 통합 테스트 (integration test)는 실제 속도 제한 (rate-limit) 이벤트가 발생했을 때만 수행할 수 있습니다. 개발 계정에서 속도 제한에 걸린 경우, tmux capture-pane -p -t amux-<session> -S -300 명령어를 사용하여 내용을 파일로 캡처한 뒤 파서 (parser)에 입력하세요:

python3 -c "import sys; sys.path.insert(0,'.'); \
import importlib.util as iu; \
spec = iu.spec_from_file_location('a','amux-server.py'); \
...
# 다른 세션으로 작업 전송
curl -sk -X POST -H 'Content-Type: application/json' \
-d '{"text":"implement the login endpoint and report back"}' \
...

에이전트 (Agents)들은 전역 메모리 (global memory)에 전체 API 레퍼런스 (API reference)를 보유하므로, 평이한 영어로 오케스트레이션 (orchestration)을 수행하는 것만으로도 잘 작동합니다.

세션 카드 (Session cards)— 실시간 상태 (작업 중 / 입력 필요 / 유휴), 토큰 통계, 빠른 실행 칩 (quick-action chips)
피크 모드 (Peek mode)— 검색 기능이 포함된 전체 스크롤백, 파일 미리보기, 전송 바 (send bar)
워크스페이스 (Workspace)— 여러 에이전트를 나란히 관찰할 수 있는 전체 화면 타일 레이아웃 (tiled layout)
보드 (Board)— SQLite 기반의 칸반 (kanban) 보드로, 원자적 작업 점유 (atomic task claiming), iCal 동기화 및 사용자 정의 컬럼 지원
노트 (Notes)— 풍부한 Quill 에디터, 페이지 내 찾기, 세션 간 공유 기능이 포함된 마크다운 (markdown) 문서
CRM— 회사, 직책, 이메일, 전화번호, LinkedIn, 상호작용 기록 및 후속 조치 추적 기능이 포함된 연락처 관리
채널 (Channels)— 실시간 에이전트 조율을 위한 @멘션 기능이 포함된 1:1 세션 간 채팅
파일 (Files)— 구문 강조 (syntax highlighting) 및 페이지 내 검색 기능과 함께 모든 세션의 작업 디렉토리 내 파일을 탐색 및 편집
스케줄러 (Scheduler)— 반복적인 cron 스타일의 에이전트 작업 생성, 편집 및 모니터링
보고서 (Reports)— 벤더 결제 API에서 데이터를 가져오는 플러그형 지출 대시보드

amux register <name> --dir <path> [--yolo] [--model sonnet]
amux start <name>
amux stop <name>
...

세션 이름은 접두사 일치 (prefix matching)를 지원합니다 — 모호하지 않다면 amux attach mymyproject로 해석됩니다.

tmuxpython3가 필요합니다.

git clone https://github.com/mixpeek/amux && cd amux
./install.sh # /usr/local/bin에 amux를 설치합니다

TLS를 다음 순서로 자동 생성합니다: Tailscale 인증서 → mkcert → 자체 서명(self-signed) 폴백(fallback). 휴대폰 접속의 경우, Tailscale이 가장 쉬운 방법입니다. 원격 접속 가이드 →

PWA는 오프라인 지원을 위해 서비스 워커(service worker)를 사용합니다. 즉, 연결이 없는 상태에서도 세션 관리, 보드 확인, 메시지 전송이 모두 가능합니다. 서비스 워커가 등록되려면 휴대폰의 브라우저가 HTTPS 인증서를 신뢰해야 합니다. 만약 mkcert를 사용 중이라면, 휴대폰은 기본적으로 해당 CA를 신뢰하지 않습니다. 휴대폰이 인증서를 다운로드하고 설치할 수 있도록 HTTP를 통해 제공하세요:

python3 -c "
import http.server, os, socketserver
CA = os.path.expanduser('~/Library/Application Support/mkcert/rootCA.pem')
...

그 다음 휴대폰에서 http://<your-ip>:8888을 여세요 (Tailscale 사용 중이라면 Tailscale IP를, 동일한 Wi-Fi 환경이라면 LAN IP를 사용하세요).

iOS: 설정 → 일반 → VPN 및 기기 관리 → 프로필 설치, 그 다음 설정 → 일반 → 정보 → 인증서 신뢰 설정 → 전체 신뢰 활성화.

Android: 설정 → 보안 → 인증서 설치 → CA 인증서 → 다운로드한 파일 선택.

amux가 다른 AI 코딩 도구들과 어떻게 비교되는지 확인해 보세요:

  • amux vs Claude Managed Agents — 세션당 비용 $0인 셀프 호스팅(self-hosted) 대안

  • amux vs Claude Code Agent Teams — 내장된 서브 에이전트(sub-agents) vs 독립적인 세션 플릿(fleet)

  • amux vs Cursor — AI IDE vs 헤드리스(headless) 에이전트 오케스트레이터(orchestrator)

  • amux vs Aider — 단일 세션 페어 프로그래밍 vs 병렬 에이전트

  • amux vs Devin — 독점적인 자율 엔지니어 vs 오픈 소스 플릿

  • amux vs GitHub Copilot — 인라인 완성(inline completions) vs 자율 에이전트 플릿

  • amux vs OpenHands — 샌드박스(sandboxed) 에이전트 vs tmux 네이티브 플릿

  • amux vs Windsurf — AI IDE vs 병렬 에이전트

  • amux vs Bolt.new — 브라우저 기반 생성 vs 로컬 에이전트 플릿

  • amux vs AutoGen — Microsoft 프레임워크 vs Claude 네이티브 오케스트레이터

  • amux vs DIY tmux 스크립트 — 수동 관리 시 놓치게 되는 것들

  • 모든 비교 보기 →

  • 병렬 기능 개발 (Parallel feature development) — 기능당 하나의 에이전트, 일주일 치 작업을 하루 만에 배포

  • 잠자는 동안 진행되는 AI 코딩 — 밤새 작동하는 자가 치유 (Self-healing) 에이전트

  • 대규모 테스트 생성 — 아침이면 완료되는 전체 테스트 커버리지

  • 대규모 리팩터링 (Refactoring) — 모듈당 하나의 에이전트

  • 자동 코드 리뷰 — PR(Pull Request) 전반에 걸친 병렬 리뷰 에이전트

  • 버그 분류 및 수정 (Bug triage and fixing) — 각 버그를 개별 에이전트에 할당

  • 문서 생성 — 기능을 배포하는 동안 작성되는 문서

  • 레거시 코드 현대화 — 격리된 브랜치를 통한 병렬 재작성

  • 모든 유스케이스 (Use cases) 보기 →

  • Python 개발자 — 데이터 파이프라인, API, 스크립트를 위한 병렬 에이전트

  • TypeScript 개발자 — 타입 안정성 (Type-safe)을 갖춘 병렬 개발

  • React 개발자 — 컴포넌트, 테스트, 스토리를 병렬로 처리

  • Go 개발자 — 빠른 컴파일, 병렬 모듈 작업

  • Rust 개발자 — 컴파일러가 실행되는 동안 에이전트 실행

  • 백엔드 (Backend) 개발자 — API, 마이그레이션, 테스트를 병렬로 처리

  • 모든 스택 (Stacks) 보기 →

  • 1인 개발자 — 조율된 에이전트 함대로 전체 팀을 대체

  • 스타트업 CTO — 채용 없이 엔지니어링 산출물 극대화

  • 엔지니어링 매니저 — 구현은 위임하고 아키텍처 제어권 유지

  • 프리랜서 개발자 — 더 많은 클라이언트를 수용하고 더 빠르게 결과물 전달

  • 부트스트랩 (Bootstrapped) 창업자 — 1인 창업자의 시간 예산 내에서 제품 배포

  • 모든 역할 (Roles) 보기 →

  • 시작 가이드

  • 10개 이상의 에이전트 병렬 실행하기

  • 에이전트 간 오케스트레이션 (Agent-to-agent orchestration)

  • 자가 치유 (Self-healing) 설정

  • YOLO 모드 설정하기

  • amux에서 MCP 서버 사용하기

  • 비용 최적화

  • FAQ

  • REST API 레퍼런스

  • 블로그

  • 용어 사전

로컬 우선 (Local-first). 내장된 인증 기능 없음 — Tailscale을 사용하거나 localhost에 바인딩하세요. 절대로 포트 8822를 인터넷에 노출하지 마세요.

amux serve

기본적으로 0.0.0.0에 바인딩됩니다. 라우터 뒤에 있는 워크스테이션에서는 괜찮지만, 공용 VPS에서는 서버가 시작되는 즉시 대시보드에 인터넷을 통해 접근할 수 있게 됩니다. 실행 후 ss -tlnp | grep 8822로 확인하고, 외부에서 curl -k https://<public-ip>:8822/를 실행하여 검증하세요.

--bind 옵션으로 리스닝 인터페이스 (Listening interfaces)를 제한할 수 있습니다.

(쉼표로 구분된 IP 목록):

amux serve # 기본값: 0.0.0.0 (모든 인터페이스)
amux serve 8822 --bind 127.0.0.1 # 루프백 (loopback) 전용
amux serve 8822 --bind 127.0.0.1,100.64.0.5 # 루프백 + Tailscale IP
...

나열된 호스트당 하나의 HTTPS 서버(및 port+1의 HTTP 인증서 헬퍼 (HTTP cert helper))가 생성됩니다. --bind 옵션 없이 amux serve 8822를 실행하면 기존 동작을 유지합니다.

--bind 옵션을 사용하더라도, 멀티 홈드 호스트 (multi-homed hosts)에서는 방화벽 규칙을 설정하는 것이 권장됩니다. iptables 예시 (localhost + docker0 허용, 나머지는 차단):

sudo iptables -I INPUT -p tcp --dport 8822 -s 127.0.0.1 -j ACCEPT
sudo iptables -I INPUT -p tcp --dport 8822 -s 172.17.0.0/16 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 8822 -j DROP
...

AI 자동 생성 콘텐츠

본 콘텐츠는 GitHub AI Coding Assistants의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0