Dropstone CLI

Config

Dropstone JSON 설정 파일 사용하기.

JSON 설정 파일을 사용하여 Dropstone을 구성할 수 있습니다.


형식

Dropstone은 JSONJSONC(주석이 있는 JSON) 형식을 모두 지원합니다.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "model": "dropstone/dropstone-pro",
  "autoupdate": true,
  "server": {
    "port": 4096,
  },
}

위치

설정 파일은 여러 위치에 배치할 수 있으며, 각 위치에는 서로 다른 우선순위가 적용됩니다.

Note

설정 파일은 교체되지 않고 병합됩니다. 아래 설정 위치의 설정이 결합됩니다. 이후의 설정은 충돌하는 키에 대해서만 이전 설정을 덮어씁니다. 모든 설정의 충돌하지 않는 설정은 유지됩니다.

예를 들어, 전역 설정에 autoupdate: true가 있고 프로젝트 설정에 model: "dropstone/dropstone-pro"가 있는 경우, 최종 설정에는 두 설정이 모두 포함됩니다.


우선순위 순서

설정 소스는 다음 순서로 로드됩니다(이후 소스가 이전 소스를 덮어씀):

  1. 원격 설정 (.well-known/dropstone에서) - 조직 기본값
  2. 전역 설정 (~/.config/dropstone/dropstone.json) - 사용자 기본 설정
  3. 사용자 지정 설정 (DROPSTONE_CONFIG 환경 변수) - 사용자 지정 재정의
  4. 프로젝트 설정 (프로젝트의 dropstone.json) - 프로젝트별 설정
  5. .dropstone 디렉터리 - 에이전트, 명령, 플러그인
  6. 관리 설정 파일 (macOS의 /Library/Application Support/dropstone/) - 관리자 제어
  7. macOS 관리 기본 설정 (MDM을 통한 .mobileconfig) - 최우선 순위, 사용자가 재정의할 수 없음

즉, 프로젝트 설정이 전역 기본값을 재정의할 수 있고, 전역 설정이 원격 조직 기본값을 재정의할 수 있습니다. 관리 설정이 모든 것을 재정의합니다.

Note

.dropstone~/.config/dropstone 디렉터리는 하위 디렉터리에 복수 이름을 사용합니다: agents/, commands/, modes/, plugins/, skills/, tools/. 단수 이름(예: agent/)도 이전 버전과의 호환성을 위해 지원됩니다.


원격

조직은 자체 도메인의 .well-known/dropstone 엔드포인트를 통해 기본 구성을 제공할 수 있습니다. Dropstone은 해당 조직에 계정이 등록된 사용자가 처음 로그인할 때 이를 자동으로 가져옵니다.

원격 설정이 먼저 로드되어 기본 레이어 역할을 합니다. 다른 모든 설정 소스(전역, 프로젝트)는 이러한 기본값을 재정의할 수 있습니다.

예를 들어, 조직에서 기본적으로 비활성화된 MCP 서버를 제공하는 경우:

{
  "mcp": {
    "jira": {
      "type": "remote",
      "url": "https://jira.example.com/mcp",
      "enabled": false
    }
  }
}

로컬 설정에서 특정 서버를 활성화할 수 있습니다:

{
  "mcp": {
    "jira": {
      "type": "remote",
      "url": "https://jira.example.com/mcp",
      "enabled": true
    }
  }
}

전역

전역 Dropstone 설정을 ~/.config/dropstone/dropstone.json에 배치하세요. 모델 및 권한과 같은 사용자 전체 기본 설정에는 전역 설정을 사용하세요.

세션 수준 설정(키바인드, 스크롤, 마우스 캡처)에는 ~/.config/dropstone/tui.json을 사용하세요.

전역 설정은 원격 조직 기본값을 재정의합니다.


프로젝트별

프로젝트 루트에 dropstone.json을 추가하세요. 프로젝트 설정은 표준 설정 파일 중 최우선 순위를 가지며, 전역 및 원격 설정을 모두 재정의합니다.

프로젝트별 세션 설정은 그 옆에 tui.json을 추가하세요.

Tip

프로젝트별 설정을 프로젝트 루트에 배치하세요.

Dropstone이 시작되면 현재 디렉터리에서 설정 파일을 찾거나 가장 가까운 Git 디렉터리까지 위로 탐색합니다.

이 파일은 Git에 커밋해도 안전하며 전역 설정과 동일한 스키마를 사용합니다.


사용자 지정 경로

DROPSTONE_CONFIG 환경 변수를 사용하여 사용자 지정 설정 파일 경로를 지정하세요.

export DROPSTONE_CONFIG=/path/to/my/custom-config.json
dropstone run "Hello world"

사용자 지정 설정은 우선순위 순서에서 전역 설정과 프로젝트 설정 사이에 로드됩니다.


관리 설정

조직은 사용자가 재정의할 수 없는 구성을 적용할 수 있습니다. 관리 설정은 최우선 순위 계층에서 로드됩니다.

파일 기반

시스템 관리 설정 디렉터리에 dropstone.json 또는 dropstone.jsonc 파일을 배치하세요:

플랫폼경로
macOS/Library/Application Support/dropstone/
Linux/etc/dropstone/
Windows%ProgramData%\dropstone

이 디렉터리는 쓰기 위해 관리자/루트 권한이 필요하므로 사용자가 수정할 수 없습니다.

macOS 관리 기본 설정

macOS에서 Dropstone은 ai.dropstone.managed 기본 설정 도메인에서 관리 기본 설정을 읽습니다. MDM(Jamf, Kandji, FleetDM)을 통해 .mobileconfig를 배포하면 설정이 자동으로 적용됩니다.

Dropstone은 다음 경로를 확인합니다:

  1. /Library/Managed Preferences/<user>/ai.dropstone.managed.plist
  2. /Library/Managed Preferences/ai.dropstone.managed.plist

plist 키는 dropstone.json 필드에 직접 매핑됩니다. MDM 메타데이터 키(PayloadUUID, PayloadType 등)는 자동으로 제거됩니다.

.mobileconfig 만들기

ai.dropstone.managed PayloadType을 사용하세요. Dropstone 설정 키는 페이로드 사전에 직접 들어갑니다:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
  "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>PayloadContent</key>
  <array>
    <dict>
      <key>PayloadType</key>
      <string>ai.dropstone.managed</string>
      <key>PayloadIdentifier</key>
      <string>com.example.dropstone.config</string>
      <key>PayloadUUID</key>
      <string>GENERATE-YOUR-OWN-UUID</string>
      <key>PayloadVersion</key>
      <integer>1</integer>
      <key>share</key>
      <string>disabled</string>
      <key>server</key>
      <dict>
        <key>hostname</key>
        <string>127.0.0.1</string>
      </dict>
      <key>permission</key>
      <dict>
        <key>*</key>
        <string>ask</string>
        <key>bash</key>
        <dict>
          <key>*</key>
          <string>ask</string>
          <key>rm -rf *</key>
          <string>deny</string>
        </dict>
      </dict>
    </dict>
  </array>
  <key>PayloadType</key>
  <string>Configuration</string>
  <key>PayloadIdentifier</key>
  <string>com.example.dropstone</string>
  <key>PayloadUUID</key>
  <string>GENERATE-YOUR-OWN-UUID</string>
  <key>PayloadVersion</key>
  <integer>1</integer>
</dict>
</plist>

uuidgen으로 고유한 UUID를 생성하세요. 조직의 요구 사항에 맞게 설정을 사용자 지정하세요.

MDM을 통한 배포

  • Jamf Pro: Computers > Configuration Profiles > Upload > 대상 기기 또는 스마트 그룹에 범위 지정
  • FleetDM: gitops 저장소의 mdm.macos_settings.custom_settings 아래에 .mobileconfig를 추가하고 fleetctl apply를 실행하세요.

기기에서 확인

테스트를 위해 .mobileconfig를 더블 클릭하여 로컬로 설치한 다음(시스템 설정 > 개인정보 보호 및 보안 > 프로필에 표시됨), 다음을 실행하세요:

dropstone debug config

모든 관리 기본 설정 키는 확인된 설정에 나타나며 사용자 또는 프로젝트 설정으로 재정의할 수 없습니다.


스키마

기본 설정 스키마는 dropstone.io/config.json에 정의되어 있습니다.

세션 수준 설정(tui.json)은 dropstone.io/tui.json을 사용합니다.

편집기는 스키마를 기반으로 유효성 검사와 자동 완성을 수행할 수 있어야 합니다.


세션 설정

세션 수준 설정(스크롤 동작, 마우스 캡처, diff 렌더링 등)에는 전용 tui.json(또는 tui.jsonc) 파일을 사용하세요.

{
  "$schema": "https://dropstone.io/schema/tui.json",
  "scroll_speed": 3,
  "scroll_acceleration": {
    "enabled": true
  },
  "diff_style": "auto",
  "mouse": true
}

dropstone.json의 레거시 theme, keybinds 및 세션 관련 키는 더 이상 사용되지 않으며 가능한 경우 자동으로 마이그레이션됩니다.


서버

server 옵션을 통해 dropstone servedropstone web 명령에 대한 서버 설정을 구성할 수 있습니다.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "server": {
    "port": 4096,
    "hostname": "0.0.0.0",
    "mdns": true,
    "mdnsDomain": "myproject.local",
    "cors": ["http://localhost:5173"]
  }
}

사용 가능한 옵션:

  • port - 수신 대기할 포트.
  • hostname - 수신 대기할 호스트 이름. mdns가 활성화되고 호스트 이름이 설정되지 않은 경우 기본값은 0.0.0.0입니다.
  • mdns - mDNS 서비스 검색을 활성화합니다. 네트워크의 다른 기기가 Dropstone 서버를 검색할 수 있게 합니다.
  • mdnsDomain - mDNS 서비스의 사용자 지정 도메인 이름. 기본값은 dropstone.local입니다. 동일한 네트워크에서 여러 인스턴스를 실행할 때 유용합니다.
  • cors - 브라우저 기반 클라이언트에서 HTTP 서버를 사용할 때 CORS에 허용할 추가 출처. 값은 전체 출처(스킴 + 호스트 + 선택적 포트)여야 합니다(예: https://app.example.com).

서버에 대해 자세히 알아보기.


shell 옵션을 사용하여 대화형 터미널에 사용되는 셸을 구성할 수 있습니다. 호환되는 셸은 에이전트 도구 호출에도 사용됩니다.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "shell": "pwsh"
}

지정하지 않으면 Dropstone이 운영 체제에 따라 적절한 기본값을 자동으로 검색하여 사용합니다(예: Windows의 pwsh 또는 cmd.exe, macOS/Linux의 /bin/zsh 또는 /bin/bash). 절대 경로 또는 짧은 이름을 제공할 수 있습니다.


도구

tools 옵션을 통해 LLM이 사용할 수 있는 도구를 관리할 수 있습니다.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "tools": {
    "write": false,
    "bash": false
  }
}

도구에 대해 자세히 알아보기.


모델

model 옵션으로 기본 모델을 설정하세요. Dropstone은 세 가지 등급을 제공합니다:

등급모델 ID
Fastdropstone/dropstone-fast
Prodropstone/dropstone-pro
Heavydropstone/dropstone-heavy
{
  "$schema": "https://dropstone.io/schema/config.json",
  "model": "dropstone/dropstone-pro"
}

variant로 기본 추론 깊이를 고정하세요:

{
  "$schema": "https://dropstone.io/schema/config.json",
  "model": "dropstone/dropstone-pro",
  "variant": "high"
}

유효한 variant 값은 low, medium, high, xhigh입니다. 전체 분류는 Models를 참조하세요.

small_model 옵션은 제목 생성과 같은 가벼운 작업을 위한 별도의 모델을 구성합니다. 기본적으로 Dropstone은 적절한 등급을 선택하며, 명시적으로 재정의할 수 있습니다:

{
  "$schema": "https://dropstone.io/schema/config.json",
  "model": "dropstone/dropstone-pro",
  "small_model": "dropstone/dropstone-fast"
}

에이전트

agent 옵션을 통해 특정 작업에 대한 전문화된 에이전트를 구성할 수 있습니다.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "agent": {
    "code-reviewer": {
      "description": "Reviews code for best practices and potential issues",
      "model": "dropstone/dropstone-pro",
      "prompt": "You are a code reviewer. Focus on security, performance, and maintainability.",
      "tools": {
        // 검토 전용 에이전트의 파일 수정 도구 비활성화
        "write": false,
        "edit": false,
      },
    },
  },
}

~/.config/dropstone/agents/ 또는 .dropstone/agents/의 마크다운 파일을 사용하여 에이전트를 정의할 수도 있습니다. 자세히 알아보기.


기본 에이전트

default_agent 옵션을 사용하여 기본 에이전트를 설정할 수 있습니다. 이 옵션은 명시적으로 지정되지 않은 경우 사용할 에이전트를 결정합니다.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "default_agent": "plan"
}

기본 에이전트는 기본 에이전트여야 합니다(하위 에이전트 아님). "build" 또는 "plan"과 같은 내장 에이전트이거나 직접 정의한 사용자 지정 에이전트일 수 있습니다. 지정된 에이전트가 존재하지 않거나 하위 에이전트인 경우 Dropstone은 경고와 함께 "build"로 대체합니다.

이 설정은 대화형 세션, 일회성 실행(dropstone run), GitHub Action 등 모든 인터페이스에 적용됩니다.


명령

command 옵션을 통해 반복적인 작업에 대한 사용자 지정 명령을 구성할 수 있습니다.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "command": {
    "test": {
      "template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes.",
      "description": "Run tests with coverage",
      "agent": "build",
      "model": "dropstone/dropstone-fast",
    },
    "component": {
      "template": "Create a new React component named $ARGUMENTS with TypeScript support.\nInclude proper typing and basic structure.",
      "description": "Create a new component",
    },
  },
}

~/.config/dropstone/commands/ 또는 .dropstone/commands/의 마크다운 파일을 사용하여 명령을 정의할 수도 있습니다. 자세히 알아보기.


키맵

tui.json에서 keymap으로 키보드 단축키를 사용자 지정하세요.

{
  "$schema": "https://dropstone.io/schema/tui.json",
  "keymap": {
    "sections": {
      "global": {
        "command.palette.show": "ctrl+p"
      }
    }
  }
}

keymap은 내장 기본값과 병합되므로 변경하려는 단축키만 구성하면 됩니다.

이전 keybinds 필드는 더 이상 사용되지 않으며 keymap이 없을 때만 적용됩니다.

자세히 알아보기.


스냅샷

Dropstone은 스냅샷을 사용하여 에이전트 작업 중 파일 변경 사항을 추적하므로 세션 내에서 변경 사항을 실행 취소하고 되돌릴 수 있습니다. 스냅샷은 기본적으로 활성화되어 있습니다.

대규모 저장소 또는 하위 모듈이 많은 프로젝트의 경우 스냅샷 시스템으로 인해 인덱싱이 느려지고 디스크 사용량이 크게 늘어날 수 있습니다. snapshot 옵션을 사용하여 스냅샷을 비활성화할 수 있습니다.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "snapshot": false
}

스냅샷을 비활성화하면 에이전트가 만든 변경 사항을 UI를 통해 롤백할 수 없습니다.


자동 업데이트

Dropstone은 시작 시 새 업데이트를 자동으로 다운로드합니다. autoupdate 옵션으로 이를 비활성화할 수 있습니다.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "autoupdate": false
}

업데이트를 원하지 않지만 새 버전이 있을 때 알림을 받으려면 autoupdate"notify"로 설정하세요. 이 기능은 Homebrew와 같은 패키지 관리자로 설치하지 않은 경우에만 작동합니다.


포맷터

formatter 옵션을 통해 코드 포맷터를 활성화하고 구성할 수 있습니다. 생략하면 포맷터가 비활성화된 상태로 유지됩니다.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "formatter": true
}

객체를 사용하여 내장 포맷터를 활성화한 상태로 재정의 또는 사용자 지정 포맷터를 구성할 수 있습니다.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "formatter": {
    "prettier": {
      "disabled": true
    },
    "custom-prettier": {
      "command": ["npx", "prettier", "--write", "$FILE"],
      "environment": {
        "NODE_ENV": "development"
      },
      "extensions": [".js", ".ts", ".jsx", ".tsx"]
    }
  }
}

포맷터에 대해 자세히 알아보기.


LSP 서버

lsp 옵션을 통해 LSP 서버를 활성화하고 구성할 수 있습니다. 생략하면 LSP가 비활성화된 상태로 유지됩니다.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "lsp": true
}

객체를 사용하여 내장 LSP 서버를 활성화한 상태로 재정의 또는 사용자 지정 LSP 서버를 구성할 수 있습니다.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "lsp": {
    "typescript": {
      "disabled": true
    }
  }
}

LSP 서버에 대해 자세히 알아보기.


권한

기본적으로 Dropstone은 명시적인 승인 없이 모든 작업을 허용합니다. permission 옵션을 사용하여 이를 변경할 수 있습니다.

예를 들어, editbash 도구에 사용자 승인이 필요하도록 하려면:

{
  "$schema": "https://dropstone.io/schema/config.json",
  "permission": {
    "edit": "ask",
    "bash": "ask"
  }
}

권한에 대해 자세히 알아보기.


압축

compaction 옵션을 통해 컨텍스트 압축 동작을 제어할 수 있습니다.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "compaction": {
    "auto": true,
    "prune": true,
    "reserved": 10000
  }
}
  • auto - 컨텍스트가 가득 차면 세션을 자동으로 압축합니다(기본값: true).
  • prune - 토큰을 절약하기 위해 오래된 도구 출력을 제거합니다(기본값: true).
  • reserved - 압축을 위한 토큰 버퍼. 압축 중 오버플로를 방지하기에 충분한 창을 남깁니다.

감시자

watcher 옵션을 통해 파일 감시자 무시 패턴을 구성할 수 있습니다.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "watcher": {
    "ignore": ["node_modules/**", "dist/**", ".git/**"]
  }
}

패턴은 glob 구문을 따릅니다. 파일 감시에서 노이즈가 많은 디렉터리를 제외하는 데 사용하세요.


MCP 서버

mcp 옵션을 통해 사용하려는 MCP 서버를 구성할 수 있습니다.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "mcp": {}
}

자세히 알아보기.


플러그인

플러그인은 사용자 지정 도구, 훅 및 통합으로 Dropstone을 확장합니다.

플러그인 파일을 .dropstone/plugins/ 또는 ~/.config/dropstone/plugins/에 배치하세요. plugin 옵션을 통해 npm에서 플러그인을 로드할 수도 있습니다.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "plugin": ["@my-org/custom-plugin", "./local-plugin.ts"]
}

자세히 알아보기.


지침

instructions 옵션을 통해 사용 중인 모델에 대한 지침을 구성할 수 있습니다.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "instructions": ["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"]
}

이 옵션은 지침 파일의 경로 및 glob 패턴 배열을 사용합니다. 규칙에 대해 자세히 알아보기.


실험적

experimental 키에는 활발히 개발 중인 옵션이 포함되어 있습니다.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "experimental": {}
}

불안정

실험적 옵션은 안정적이지 않습니다. 사전 통지 없이 변경되거나 제거될 수 있습니다.


변수

설정 파일에서 변수 치환을 사용하여 환경 변수와 파일 내용을 참조할 수 있습니다.


환경 변수

{env:VARIABLE_NAME}을 사용하여 환경 변수를 치환하세요:

{
  "$schema": "https://dropstone.io/schema/config.json",
  "model": "{env:DROPSTONE_MODEL}"
}

환경 변수가 설정되지 않은 경우 빈 문자열로 대체됩니다.


파일

{file:path/to/file}을 사용하여 파일 내용을 치환하세요:

{
  "$schema": "https://dropstone.io/schema/config.json",
  "instructions": ["./custom-instructions.md"]
}

파일 경로는 다음과 같을 수 있습니다:

  • 설정 파일 디렉터리를 기준으로 한 상대 경로
  • 또는 / 또는 ~로 시작하는 절대 경로

이 기능은 다음과 같은 경우에 유용합니다:

  • 설정을 복잡하게 만들지 않고 대용량 지침 파일을 포함할 때.
  • 여러 설정 파일에서 공통 구성 조각을 공유할 때.
Ctrl+I