프로젝트 소개

ainess는 이미 설치된 AI 코딩 CLI를 조율된 팀으로 변환해 주는 데스크톱 애플리케이션(Tauri 2, MIT 라이선스)입니다. 모델이나 API 키를 번들로 제공하는 대신, Claude Code, Antigravity, GitHub Copilot CLI, Gemini CLI, Codex CLI, opencode, Ollama, Aider와 같은 기존 도구를 감지하고 구동하며, 설정 패널에서 대부분의 도구를 설치할 수 있습니다. "custom" 에이전트 유형은 {prompt}가 인수로 대체된 모든 명령을 실행할 수 있습니다. 세션과 자격 증명은 각 CLI가 보관하는 곳에 그대로 유지되며, 앱은 키를 요청, 저장 또는 읽지 않는다고 명시하고 있습니다. Windows는 이 앱이 개발되고 테스트된 플랫폼입니다. 오케스트레이션 작동 방식 에이전트는 일회성 CLI 프로세스입니다. 각 호출은 하나의 "실행(run)"이며, 모든 제공자가 자체 세션 ID를 통해 재개되므로 실행 간에 대화가 유지됩니다. 에이전트는 역할에 따라 계층 구조로 배치됩니다. 추론하고 작업을 분할 및 위임하지만 직접 구현하지는 않는 플래너, 작업을 수행하는 구현자, 그리고 이를 확인하는 리뷰어가 있습니다. 위임은 플래너 답변의 펜스 블록(fenced block)을 통해 이루어지며, 오케스트레이터가 이를 파싱하여 실행으로 변환하고 결과로 다시 피드백하는 사이클(라운드라고 하며 최대 횟수 설정 가능)을 거칩니다. 자식 에이전트는 플래너의 대화를 볼 수 없으므로 작업은 독립적이어야 합니다. 또한 에이전트는 일시 중지하고 사용자에게 옵션이 포함된 질문을 던질 수 있으며, 답변 후 동일한 세션에서 실행이 계속됩니다. 앱 내부 기능 프로젝트는 워크스페이스 폴더를 지정하며 자체 팀, 상태, 히스토리 및 채팅을 유지합니다. 저장된 "포메이션(formation)"은 스킬 및 MCP 서버와 함께 새 프로젝트에 적용할 수 있습니다. 6개 열(백로그부터 완료까지)로 구성된 칸반 보드가 자동으로 채워집니다. 프롬프트가 작업을 생성하고, 위임 사항이 그 아래에 달리며, 승인 대기 항목은 "needs you"에 머물고, 완료된 실행은 리뷰 또는 준비 상태로 이동합니다. 동일한 작업은 레이어드 의존성 그래프로 렌더링되어 드래그 연결을 통해 차단 관계를 선언할 수 있습니다. 기타 뷰로는 오케스트레이터와의 채팅 스레드(도구 사용, 접이식 위임, 저장된 프롬프트 "명령"), 위임 관계와 남은 쿼터를 보여주는 계층 그래프, 원시 이벤트 피드와 실제 PTY 터미널이 있는 우측 독, 에이전트별 또는 글로벌하게 설정 가능한 승인 프로세스, 직접 및 공유 멀티 에이전트 채팅, 알림, git 저장소 상태(브랜치, 변경된 파일, ahead/behind, CI 상태가 포함된 오픈 PR) 및 컨텍스트 우클릭 메뉴가 있습니다. 자체 브랜치를 가진 에이전트별 git worktree를 통해 두 명의 구현자가 git 인덱스 충돌 없이 동시에 작업할 수 있으며, 패널을 통해 이를 열거나 병합 또는 폐기할 수 있습니다(커밋되지 않은 작업이 있는 경우 병합 거부). 원격 및 CLI 내장 서버는 LAN을 통해 동일한 React UI를 단일 독립 페이지로 게시하며, URL의 토큰으로 보호됩니다(토큰 없이는 401 오류). 이를 통해 휴대폰에서 보드를 확인하고, 작업을 전송하고, 실행을 중단하며, 질문에 답할 수 있습니다. cloudflared 또는 ngrok을 통한 선택적 공개 URL과 정적 도메인을 지원합니다. 해당 페이지는 백그라운드에서 실행 중일 때 브라우저 알림을 제공하며, 이를 위해서는 보안 컨텍스트가 필요합니다. 토큰 인증 방식의 HTTP API는 상태, SSE 이벤트 스트림, 프롬프트, 지시, 중단, 승인 및 채팅 엔드포인트를 노출합니다. 동일한 오케스트레이터를 CLI를 통해 헤드리스로 사용할 수 있으며, 작업 실행, 프로젝트/에이전트/포메이션 관리, 설치 감지, 쿼터 및 사용량 확인, 히스토리 탐색, 승인 처리, 채팅 및 휴대폰 페이지 서버 구동 명령을 제공합니다. 추가 기능 및 데이터 스킬, MCP 서버, 공유 컨텍스트 및 프로필이 에이전트 프롬프트에 주입됩니다. 훅(Hooks)은 task.started, task.finished, 위임 또는 approval.requested와 같은 오케스트레이터 이벤트에 반응하여 Slack/Discord 또는 일반 웹훅, 로컬 명령, 시스템 알림, 또는 템플릿 변수를 사용해 다른 에이전트로 연결되는 지시를 실행합니다. 모든 설정, 히스토리, 채팅, 작업 보드, 쿼터 표시 및 로그는 사용자의 AppData 폴더 내 일반 파일로 저장됩니다. 히스토리는 프로젝트당 최근 300회 실행과 3000개 메시지를 유지하며, 로그는 매일 순환되어 14일간 보관되고, 토큰은 기록 전 마스킹 처리됩니다. 인터페이스는 스페인어(기본 사전), 영어, 브라질 포르투갈어, 중국어 간체, 일본어, 프랑스어, 독일어로 번역되어 있으며 재시작 없이 전환 가능합니다. 릴리스는 main 브랜치의 버전 범프를 통해 GitHub Actions로 빌드 및 서명되며, 설치된 앱은 자동으로 업데이트됩니다.