Mac용 로컬 코딩 하네스 Radiant
요약
Mac용 로컬 코딩 하네스인 Radiant는 오픈 소스로 제공되며, 하나의 창에서 코딩 에이전트와 채팅하고 터미널을 구동할 수 있게 합니다. 이 도구는 클라우드 및 로컬 모델 모두를 지원하며, 작업 관리(Task), 루프(Loop), 그래프(Graph) 등 복잡한 개발 워크플로우를 시각적으로 구현하여 코딩 과정을 체계화합니다.
핵심 포인트
- Mac 전용 로컬 코딩 하네스로, 오픈 소스입니다.
- 클라우드/로컬 모델을 아우르는 통합 코딩 환경을 제공합니다.
- 작업(Task), 루프(Loop), 그래프(Graph) 기능을 통해 복잡한 에이전트 워크플로우를 시각화하고 관리할 수 있습니다.
기능 (Features)
실제 작업을 수행하는 에이전트(Agents that do real work)
-
에이전트 채팅(Agent chat): Anthropic, OpenAI, OpenRouter, xAI, Nous, Groq, Mistral 등 모든 모델 또는 자체 Mac에서 Ollama와 LM Studio를 사용하여 스트리밍 응답과 보이는 모델 사고 과정을 통해 이용 가능합니다. 세션은 중립적인 형식으로 메시지를 저장하므로 대화 도중 모델을 전환하고 컨텍스트를 유지할 수 있습니다.
-
실제 도구(Real tools): 채팅의 프로젝트 폴더에서 파일을 읽고, 쓰고, 편집하며 셸 명령어를 실행할 수 있습니다. 모든 명령어 전에 사용자에게 질문하거나, 저위험 명령어는 자동 실행(작은 의사결정 모델로부터 각각 의견을 받음)하도록 하거나, 모두 허용할 수 있습니다.
-
실행 취소(Undo): 파일을 수정하는 모든 응답에는 체크포인트가 남습니다. 파일로 되돌리고 대화 기록을 유지할 수 있습니다.
-
변경 사항 패널(Changes panel): 채팅 폴더에서 에이전트가 변경한 내용을 나열하는 오른쪽 사이드바 탭입니다. M/A/D/R/U 문자, +/- 라인 개수, 인라인 diff, 체크한 파일에 대한 커밋 박스, 그리고 한 시간 동안 복원 가능한 실행 취소 기능이 있습니다. 어떤 내용도 푸시되지 않습니다. 사이드바 행은 각 채팅의 브랜치와 변경된 라인을 보여줍니다.
-
사용자의 Claude Code 및 Codex 구독(선택 사항): Claude Code 및 Codex 앱에서 시작한 세션을 나열하고, 이를 Radiant에서 계속하거나, 또는 채팅 모델로 둘 중 하나를 선택할 수 있습니다. 이들은 자체 로그인으로 실행되므로 API 키가 필요하지 않습니다. 켜기 전까지는 Mac에 비공개이며, 다른 장치를 허용해야만 접근 가능합니다.
-
탭으로 열리는 채팅(Open chats as tabs): 모델, 사고 수준, 권한 모드를 단어로 표시하는 작성기 바와
-
샌드박스 명령어 (Sandbox commands) (선택 사항) — macOS는 에이전트가 실행하는 모든 명령어 주변에 울타리(fence)를 적용합니다: 프로젝트 폴더 내부에만 작성하고, 선택할 경우 인터넷 연결도 차단합니다. 막힌 명령어는 에이전트에게 사용자에게 물어보도록 지시합니다.
-
메시지 하나, 답변 하나 (One message, one reply) — 두 번 도착하는 메시지(재시도된 연결, 반복된 음성 요청)는 한 번만 실행됩니다. 어떤 이유로든 멈춘 차례(turn)는 채팅창에 그 이유를 설명하고 계속하기 버튼을 제공하며, 빈 답변은 절대 없습니다.
-
작동 중 방향 조절 (Steer while it works) — 차례 중간에 입력된 메시지는 대기열에 쌓입니다. Steer는 에이전트를 멈추고 이들을 즉시 전송합니다. Stop은 이미 작성된 내용을 유지합니다.
더 오래 실행되는 작업 (Work that runs longer)
-
작업 보드 (Task board) — 실행 과정이 카드를 이동시키는 칸반(kanban) 보드입니다: 대기 중(Queued), 진행 중(Working), 사용자 필요(Needs you) (에이전트가 무언가를 요청하는 순간), 검토(Review), 완료(Done). 작업을 클릭하면 두 개의 열로 구성된 뷰를 볼 수 있습니다: 왼쪽에는 설명과 사용자의 댓글 피드, 기록 및 도구 사용 이력이 표시되고, 오른쪽에는 상태, 우선순위, 레이블, 마감일, 의존성이 표시됩니다. 작업은 다른 작업에 의존할 수 있으며, 에이전트는 보드를 읽고 하위 작업을 추가하며 자체적으로 댓글을 남길 수 있습니다.
-
루프 (Loops) — 각 단계가 통과해야 하는 검사(check)를 가진 일련의 단계입니다 (종료 코드 0인 명령어 또는 다른 에이전트가 판단하는 문장). 실패한 단계는 이유를 가지고 다시 순환합니다. 검사는 또한 *차단됨(blocked)*을 답변할 수 있는데, 이는 어떤 시도도 통과할 수 없음을 의미하며, 남은 시도를 소모하는 대신 루프를 즉시 종료합니다.
-
그래프 (Graphs) — 실제로 기다림이 필요한 여러 작업입니다: 서로 의존하지 않는 단계들은 동시에 실행됩니다. 실행 과정에서는 모든 단계와 순환(round)이 얼마나 많은 자원(토큰 및 목록 가격 기준 달러)을 사용했는지 보여주며, 반복되는 그래프는 토큰 예산에서 멈출 수 있습니다.
-
장기 빌드 (Long builds) — 순환에 제한이 없습니다. 유일한 상한선은 실제 비용으로 측정하는 설정된 지출 예산이며, 계속해서 같은 종류의 명령어 실패를 일으키는 차례는 토큰을 소모하기보다 중단됩니다.
-
긴 대화는 중요한 것을 유지합니다 — 과거 모델의 컨텍스트 창 절반만큼, Jev는 작업이 더 이상 필요로 하지 않는 오래된 도구 결과(그리고 나중에 동일한 호출로 대체된 모든 결과)를 따로 보관하여, 작업이 의존하는 것은 제자리를 지킵니다. 대화가 모델의 용량을 초과할 때, 요약되기 전에 다른 것에 대한 이전 교환들은 별도로 보관됩니다 — 채팅에는 남아 있지만 전송되지는 않습니다.
모델 선택, 잘하기
- 이미 구독하고 있는 서비스(Claude, ChatGPT, Grok, GitHub Copilot, Qwen 또는 Nous Portal)로 로그인하거나 API 키를 붙여넣으세요.
- 메시지별 적절한 모델 사용 — 간단한 메시지는 Jev가 약 300ms 만에 결정하는 동일 제공업체의 빠른 모델로 보낼 수 있습니다 (작은 의사결정 모델). 또는 OpenRouter 목록 상단의 Jev Router를 선택하고 모든 메시지에 대한 어떤 모델이든 선택하게 하여, 실제 답변을 한 모델로 각 응답에 라벨이 지정됩니다.
- Mac에서 측정된 로컬 모델 — 각각의 모델은 다운로드하기 전까지는 '잘 실행됨(Runs well)', '타이트함(Runs tight)' 또는 '실행 불가(Won't run)'로 표시됩니다.
작업 공간
- Activity 패널 — 모든 도구 호출과 그 출력에 대한 실시간 피드와 에이전트가 생성하는 내용을 보여주는 미리보기(Preview) 탭을 제공합니다.
- 터미널 패널 — 실제 로그인 셸(node-pty + xterm.js)입니다.
- 사용자 Chrome에서의 브라우저 제어 — Radiant Browser Bridge 확장 프로그램을 사용하면, 이미 로그인된 사용자 본인의 브라우저에서 에이전트가 페이지를 읽고, 클릭하며, 사이트가 발생시키는 네트워크 호출을 확인할 수 있습니다.
- 음성(Voice) — OpenAI GPT-Live 또는 Google Gemini Live의 모든 채팅에서 음성 대화를 유지할 수 있으며, 사용자의 모델, 도구 및 승인이 작업을 수행합니다.
- 스킬 및 MCP — 전역적으로 또는 에이전트별로 재사용 가능한 스킬, 메시지가 필요할 때만 연결되는 MCP(Multi-Cloud Platform) 도구 서버, 그리고 142개의 준비된 에이전트를 제공합니다.
- 테마링(Theming) — 라이트, 미디엄, 다크 모드와 14가지 프리셋(Tokyo Night, Catppuccin, Everforest, Gruvbox, Nord, Dracula, Rosé Pine, Solarized 등) 또는 OKLCH로 파생되고 대비 확인이 가능한 나머지 팔레트로 사용자의 자체 배경 및 텍스트 색상을 설정할 수 있습니다.
- 설계상 개인 정보 보호(Private by design) — API 키는
~/.radiant/config.json(모드 0600)에 저장되며 브라우저로 절대 전송되지 않습니다. 에이전트의 셸은 사용자 비밀 정보를 환경 변수에서 사용하지 않으며, 서버는 다른 Mac 및 휴대폰과의 공유를 활성화하지 않는 한 127.0.0.1에 바인딩됩니다. 이 공유 기능은 접근 토큰으로 제한됩니다.
Radiant for iPhone and iPad
App Store에서 다운로드할 수 있습니다. Apple의 MLX를 사용하여 기기에서 직접 오픈 모델을 실행하며, Hugging Face에서 검색하여 모델이 장치에 적합한지 확인한 후 다운로드하고 휴대폰을 벗어나지 않고 채팅할 수 있습니다. 또한 사용자의 키가 키체인(Keychain)에 보관되는 상태로 Apple Intelligence 및 클라우드 모델과도 통신합니다. 이 앱은 네이티브 SwiftUI이며, 소스 코드는 apps/ios에 있습니다.
Mac 앱 설치
최신 버전의 Radiant for Mac을 다운로드하여 (Apple Silicon용), 열고 Applications 폴더에 Radiant를 드래그하세요. Apple에서 서명하고 공증했기 때문에 다른 앱처럼 실행되며, 스스로 업데이트됩니다.
또는 직접 빌드할 수 있습니다:
npm install
npm run dist # release/Radiant-<version>-arm64.dmg 생성
소스에서 실행하기 (개발 모드)
npm install
npm run dev # :5834 서버, http://localhost:5833에서 핫 리로드가 가능한 UI
npm run app은 UI를 빌드하고 패키징 없이 Electron 앱을 실행합니다.
사용 방법
- 세션을 시작합니다. Ollama 또는 LM Studio가 로컬에서 실행 중인 경우, 로컬 모델이 자동으로 선택됩니다 — 계정 필요 없음, 키 필요 없음, 장치 외부로 아무것도 전송되지 않습니다.
- 클라우드 모델을 사용하려면 ⚙ 설정을 열고 제공업체 옆에 API 키를 붙여넣으세요. 모델 선택기(우측 상단)에는 접근 가능한 모든 모델이 나열됩니다.
- 세션의 작업 공간 폴더(상단 바의 경로 칩)를 프로젝트로 지정하고 에이전트에게 무언가를 빌드하거나, 수정하거나, 설명해 달라고 요청하세요. 셸 명령을 실행하기 전에 질문하며, 파일 편집 내용은 활동 패널에 표시됩니다.
- ▤ 버튼은 사이드 패널(활동 피드 및 터미널)을 토글합니다.
아키텍처
server/— Express + WebSocket 백엔드: 스트리밍 제공업체 클라이언트 (providers.js, Anthropic + OpenAI 호환), 에이전트 도구 (tools.js), 설정 및 세션 저장소 (config.js)src/— React UI (Vite): 채팅, 모델 선택기, 설정, 활동 피드, xterm 터미널electron/— 서버를 인프로세스(in-process)로 부팅하고 그 위에 창을 여는 얇은 Electron 쉘
구독자 로그인 기능은 server/oauth.js에 구현되어 있습니다 — Claude, ChatGPT, Nous Portal, xAI (Grok), Qwen 및 GitHub Copilot용 디바이스 코드(device-code) 및 PKCE 플로우를 지원하여 API 키 대신 이미 결제한 요금제를 사용할 수 있습니다. 제공업체 레지스트리(provider registry)의 auth 필드가 각 제공업체의 플로우가 선택되는 기준이 됩니다.
라이선스
Radiant는 Templeton Technologies의 제품이며 MIT License 하에 출시되었습니다.
쉽게 말해: 사용하고, 수정하고, 재배포하고, 기반으로 구축하며, 판매할 수 있습니다 — 상업적으로든 그렇지 않든. 유일한 조건은 저작권 고지(copyright notice)가 함께 이동하는 것입니다. 정확한 약관은 LICENSE를 참조하십시오.
Radiant는 이전에 Functional Source License (FSL-1.1-MIT) 하에 있었으며, 이는 경쟁적 사용을 금지했습니다. 이제는 MIT 라이선스입니다: Open Source Definition에 따라 완전히 오픈 소스이며, 예외 조항이 없습니다.
Copyright © 2026 Templeton Technologies.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Coding Assistants의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기