<p align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/cosmicstack-labs/mercury-agent/main/docs/img/readme-hero-dark.png">
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/cosmicstack-labs/mercury-agent/main/docs/img/readme-hero-light.png">
<img alt="Mercury Agent" src="https://raw.githubusercontent.com/cosmicstack-labs/mercury-agent/main/docs/img/readme-hero-light.png" width="520">
</picture>
</p>
<h3 align="center">당신의 기기에서 작동하는 영혼을 가진 AI 에이전트입니다.<br/>행동하기 전에 질문하고, 중요한 것을 기억하며, 당신이 자리를 비워도 계속 작동합니다.</h3>
<p align="center">
<a href="https://www.npmjs.com/package/@cosmicstack/mercury-agent"><img src="https://img.shields.io/npm/v/@cosmicstack/mercury-agent?color=0ea5e9&label=npm" alt="npm version"></a>
<a href="https://github.com/cosmicstack-labs/mercury-agent/blob/main/.github/badges/downloads-breakdown.json"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fcosmicstack-labs%2Fmercury-agent%2Fmain%2F.github%2Fbadges%2Fdownloads.json" alt="total npm downloads"></a>
<a href="https://github.com/cosmicstack-labs/mercury-agent/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/cosmicstack-labs/mercury-agent/ci.yml?branch=main&label=CI" alt="CI"></a>
<a href="https://github.com/cosmicstack-labs/mercury-agent/stargazers"><img src="https://img.shields.io/github/stars/cosmicstack-labs/mercury-agent?style=flat&color=f59e0b" alt="GitHub stars"></a>
<a href="https://nodejs.org/"><img src="https://img.shields.io/node/v/@cosmicstack/mercury-agent?color=16a34a" alt="node"></a>
<a href="LICENSE"><img src="https://img.shields.io/github/license/cosmicstack-labs/mercury-agent?color=64748b" alt="MIT license"></a>
<a href="https://discord.gg/5emMpMJy5J"><img src="https://img.shields.io/badge/discord-join-5865F2?logo=discord&logoColor=white" alt="Discord"></a>
</p>
<p align="center">
<a href="https://trendshift.io/repositories/30943?utm_source=trendshift-badge&utm_medium=badge&utm_campaign=badge-trendshift-30943" target="_blank" rel="noopener noreferrer"><img src="https://trendshift.io/api/badge/trendshift/repositories/30943/daily" alt="cosmicstack-labs%2Fmercury-agent | Trendshift" width="250" height="55"/></a>
</p>
<p align="center">
<a href="https://mercuryagent.sh">Website</a> ·
<a href="https://mercuryagent.sh/docs">Docs</a> ·
<a href="#quickstart">Quickstart</a> ·
<a href="CHANGELOG.md">Changelog</a> ·
<a href="https://discord.gg/5emMpMJy5J">Discord</a> ·
<a href="README.zh-CN.md">简体中文</a>
</p>
대부분의 AI 에이전트는 아침이면 당신을 잊고, 모델이 결정하는 대로 실행하다가 노트북을 닫는 순간 멈춥니다. Mercury는 그렇지 않습니다.
Mercury는 사용자가 직접 작성할 수 있는 페르소나를 가지고, 디스크에 기억이 남아있으며, 모델과 사용자 기기 사이에 위치하는 권한 시스템을 갖춘 오픈 소스 에이전트입니다. 터미널, Telegram, Discord, Slack 또는 Signal에서 메시지를 보내면 동일한 에이전트를 만나게 되며, 동일한 메모리를 가지고 사용자가 소유하는 단일 백그라운드 프로세스로 실행됩니다.
파일을 읽고 쓰고, 명령어를 실행하며, git과 GitHub를 통해 코드를 전송하고, 웹을 조사하며, 일정을 관리합니다. 이 모든 동작은 사용자가 설정한 규칙에 따라 검사되며, 매 턴마다 일일 토큰 예산 내에서 유지됩니다.
여기서 더 나아갑니다:
- Mercury Code는 이를 리포지토리 내부의 신중한 페어 프로그래머로 변환하여 테스트가 통과했을 때만
한눈에 보기
| |
|---|
| 설치 | Node.js가 필요 없는 원라인 설치 프로그램 또는 Node.js 22+에서 npm i -g @cosmicstack/mercury-agent 실행 |
| ... | |
Mercury를 사용하는 이유
대부분의 에이전트는 파일을 읽고, 명령을 실행하며, 페이지를 가져올 수 있습니다. 차이점은 이러한 액션 주변에서 무슨 일이 일어나는지이며, 바로 이 부분에 Mercury가 노력을 기울였습니다.
행동하기 전에 질문합니다. 파일 접근은 폴더별로 범위가 지정되며, 셸 명령어는 블랙리스트와 승인 단계를 거쳐 전달되고, 아웃바운드 요청은 비공개 주소 범위와 비교하여 확인됩니다. 세션별로 Mercury에게 매번 물어볼지 아니면 자유롭게 실행할지 선택할 수 있으며, 공유된 Telegram 또는 Discord 채널의 멤버들은 자신의 접근 범위를 넓힐 수 없습니다.
말하지 않아도 당신을 기억합니다. 대화가 끝날 때마다 Mercury는 몇 가지 지속 가능한 사실(선호 사항, 목표, 프로젝트, 결정)을 신뢰도 점수와 함께 추출하고, 이미 알고 있는 것과 충돌하는 부분을 해결하며, 다음 답변 전에 관련 정보를 상기시킵니다. 모든 것은 ~/.mercury 아래의 SQLite 파일에 저장되며, /memory를 통해 이를 검사하거나 일시 중지 또는 지울 수 있습니다.
예산을 존중합니다. 매 턴마다 일일 토큰 예산이 강제됩니다. 사용량이 늘어나면 Token Saver 모드가 컨텍스트를 줄이고 루틴한 작업은 더 저렴한 모델로 라우팅할 수 있습니다. /budget에서 현재 상태를 확인할 수 있습니다.
스크립트 모음이 아닌 단일 런타임입니다. 단일 백그라운드 프로세스가 사용자의 채널, 봇, 웹 대시보드를 소유합니다. 터미널에서 mercury를 실행하면 해당 프로세스에 즉시 연결되므로, 터미널을 닫는 것이 실행 중인 작업이나 봇을 멈추게 하지 않습니다.
신중한 엔지니어처럼 코드를 작성합니다. Mercury Code는 계획하고 구축하는 과정을 하나의 흐름으로 보여주며, 실시간 체크리스트를 표시하고, 대규모 변경 전에 한 번 질문하며, 빌드, 테스트 또는 타입 검사가 실제로 통과된 후에만 성공을 보고합니다.
부재 중에도 작동합니다. Mercury Bots는 고유한 페르소나, 모델, 메모리, 권한 및 일일 예산을 가진 영속적인 전문 에이전트입니다. 이들은 스케줄에 따라 실행되고, 서로 작업을 인계하며, 완료된 파일을 ~/Documents/Mercury/<Bot name>/ 경로로 전달합니다. Telegram을 통해 전체 플릿(fleet)을 버튼으로 관리할 수 있습니다.
페르소나는 사용자가 소유합니다. Mercury의 캐릭터는 사용자가 편집할 수 있는 일반 Markdown 파일(soul.md, persona.md, taste.md, heartbeat.md)에 의해 정의됩니다.
빠른 시작 (Quickstart)
1. 설치(Install). 설치 프로그램은 OS와 CPU용 독립 실행형 바이너리를 다운로드하고 체크섬을 확인합니다. Node.js가 필요하지 않습니다.
curl -fsSL https://mercuryagent.sh/install.sh | sh
# Windows (PowerShell)
irm https://mercuryagent.sh/install.ps1 | iex
npm을 선호하십니까? Mercury는 해당 경로에 Node.js 22 이상이 필요합니다.
npm i -g @cosmicstack/mercury-agent
2. 실행(Run it).
첫 실행 시 짧은 설정 마법사(setup wizard)가 시작됩니다: 사용자 이름, 에이전트 이름, Mercury Cloud 또는 자체 API 키, 그리고 Telegram과 같은 선택적 채널입니다. 그런 다음 Mercury는 백그라운드 서비스를 시작하고 터미널 UI를 엽니다.
3. 매일 사용합니다.
mercury
mercury code .
mercury doctor
...
업그레이드는 한 개의 명령어로 가능합니다: mercury upgrade. 이미 최신 버전인 경우 아무 작업도 수행하지 않습니다.
작동 방식 (How it works)
flowchart LR
subgraph You
T[Terminal UI]
...
런타임은 로그인 서비스(macOS의 LaunchAgent, Linux의 systemd, Windows의 Task Scheduler)로 실행되며 충돌 후 스스로 재시작됩니다. 모든 채널은 동일한 에이전트, 동일한 권한 및 동일한 메모리를 사용합니다. 터미널은 클라이언트입니다: mercury는 런타임에 연결되고, mercury code는 그 옆에 코딩 세션을 엽니다.
기능 (Features)
채널 (Channels)
| 채널 | 접근 모델 | 주요 기능 |
|---|
| 터미널 | 단일 사용자 | 라이브 스트리밍, 명령어 선택기(/menu), 승인 프롬프트, 백그라운드 작업을 갖춘 전체 화면 UI |
| ... | | |
| 채널이 여러 개 구성된 경우, 알림은 순서대로 첫 번째 사용 가능한 채널(Signal, Telegram, Discord, Slack, 터미널)으로 전송됩니다. | | |
Mercury Code
저장소 내부에서 작동하는 전체 화면 코딩 환경입니다.
mercury code [디렉토리]
/code
- AUTO 모드: 계획을 세우고 빌드를 한 번에 수행하며, 대규모 또는 위험한 변경 전에 한 번 요청합니다.
- 검증된 완료(Verified completion): 작업은 빌드, 테스트 또는 타입 체크가 실행되어 통과했을 때만 완료됩니다. 그렇지 않으면 중단하고 블로커를 명시합니다.
- 라이브 계획(Live plan): 모든 단계가 보류(pending), 활성(active) 또는 완료(done) 상태로 표시됩니다.
- 백그라운드 작업(Background work):
/code agent <작업>을 사용하면 작업을 서브 에이전트에게 위임하고 계속해서 작업할 수 있습니다.
- 작업 공간 보기(Workspace view):
/ws를 사용하여 탐색, 스테이징, 커밋 및 되돌리기(undo)를 수행하며, /code diff는 색상 구분이 된 차이점(diff)을 보여줍니다.
Mercury Bots
주 에이전트 옆에서 실행되면서 이를 방해하지 않는 영구적인 전문 에이전트입니다.
- 온보딩(Onboard): 터미널, Telegram 또는 웹 대시보드에서
/bots create를 사용하여 페르소나, 권한 등급, 단독/군집(solo or fleet), 일일 예산 등을 설정합니다.
- 군집(Fleets): 리드 봇이 크루에게 타이핑된 작업을 위임하고,
bot.yaml에 정의된 파이프라인을 실행하며, 작업 완료 시 하나의 요약본을 받습니다.
- 결과물(Deliverables): 완성된 파일은
~/Documents/Mercury/<Bot 이름>/에 저장되며, 진행 중인 작업은 work/ 아래에 있습니다. Telegram에서는 결과가 첨부 파일로 도착합니다.
- 관리됨(Governed): 턴당 제한, 봇 및 군집당 일일 토큰 예산, 실제 수행한 내용으로 판단되는 결과물, 토큰 소모 대신 냉각되는 루틴을 갖습니다.
- 운영(Operate): Telegram에서 Stop, Start, Run 버튼이 있는
/bots 명단; /bots cost, /bots show, /bots doctor, /bots stop all 명령어를 사용합니다.
설계 참고 자료: BOTS-ARCHITECTURE.md.
Second Brain
- 10가지 메모리 유형: identity, preference, goal, project, habit, decision, constraint, relationship, episode, reflection.
- 대화당 최대 세 가지 사실을 신뢰도(confidence), 중요도(importance) 및 지속성(durability) 점수와 함께 자동 추출합니다.
- 고정된 예산 내에서 답변 전에 가장 관련성이 높은 메모리를 회상(Recall)합니다.
- 매시간 프로필과 활성 상태 요약으로 통합(Consolidation)하며, 오래되거나 신뢰도가 낮은 사실은 만료됩니다.
- 로컬 전용:
~/.mercury/memory/second-brain/second-brain.db (SQLite with FTS5). memory.secondBrain.enabled: false로 비활성화할 수 있습니다.
권한 및 안전성(Permissions and safety)
- 셸(Shell): 재정의될 수 없는 블랙리스트(
sudo, rm -rf / 및 그 변형)와 허용된 범위를 벗어나는 모든 것에 대한 승인 절차를 포함합니다.
- 파일(Files): 폴더별, 채널별, 역할별 읽기 및 쓰기 범위가 설정됩니다.
- 네트워크(Network):
fetch_url은 사설 주소 범위를 차단하고 응답 크기를 제한합니다.
- 모드(Modes): 세션당 Ask Me 또는 Allow All이며,
/permissions로 변경할 수 있습니다.
- 비밀 정보(Secrets): API 키는
~/.mercury/.env에 저장되며, 로그에서 이를 마스킹하고 대시보드 비밀번호는 첫 실행 시 무작위로 설정됩니다.
취약점을 발견하면 SECURITY.md를 통해 보고하세요.
스킬(Skills)
skills.mercuryagent.sh에서 커뮤니티 스킬을 설치할 수 있으며, 이는 Agent Skills 사양을 기반으로 합니다.
mercury skills search prompt
mercury skills view ai-ml/prompt-engineering
mercury skills install ai-ml/prompt-engineering
스킬은 커뮤니티 기여이며 감사(audited)되지 않았으므로, 먼저 검토해야 합니다. 또한 웹 대시보드나 관리자의 경우 Telegram을 통해서도 설치할 수 있습니다.
웹 대시보드, 칸반 및 스케줄러
http://127.0.0.1:6174에서 접근 가능한 대시보드는 로컬호스트에 바인딩되어 채팅, 봇 조종석(bots cockpit), 메모리 탐색기(memory explorer), 프로바이더(providers), 스킬(skills), 권한(permissions), 일정 및 사용량 정보를 제공합니다.
- Mercury가 카드를 하나씩, 의존성 순서에 따라 처리하며, 카드별 토큰 추적 기능을 갖춘 칸반 보드입니다.
- 스케줄러:
schedule_task를 통해 cron 스케줄과 일회성 지연(one-shot delays)을 설정할 수 있으며, 결과는 해당 작업을 생성한 채널로 반환됩니다.
프로바이더 (Providers)
Mercury는 기본 제공되는 프로바이더부터 시도하며, 실패하면 다른 프로바이더로 폴백합니다. 키가 거부된 프로바이더는 키를 수정할 때까지 건너뛰어지며, mercury doctor는 유효하지 않은 키에 대해 경고합니다.
<details>
<summary><b>지원되는 프로바이더 및 기본 모델</b></summary>
| Provider | Default model | Key |
|---|
| Mercury Cloud | mercury-mini | mercury cloud connect와 페어링됨 |
| ... | | |
LiteLLM과 GitHub Copilot 엔드포인트도 mercury doctor를 통해 사용할 수 있습니다. | | |
</details>
참고 자료 (Reference)
<details>
<summary><b>CLI 명령어</b></summary>
| Command | What it does |
|---|
mercury | Mercury를 시작하거나 이미 실행 중인 경우 연결합니다. |
| ... | |
</details>
<details>
<summary><b>채팅 내 명령어 (In-chat commands)</b></summary>
이 명령어들은 로컬에서 실행되며 토큰을 사용하지 않습니다. /help를 입력하면 모든 목록을 볼 수 있습니다.