Config
Usando o arquivo de configuração JSON do Dropstone.
Você pode configurar o Dropstone usando um arquivo de configuração JSON.
Formato
O Dropstone suporta os formatos JSON e JSONC (JSON com comentários).
{
"$schema": "https://dropstone.io/schema/config.json",
"model": "dropstone/dropstone-pro",
"autoupdate": true,
"server": {
"port": 4096,
},
}
Locais
Você pode colocar sua configuração em alguns locais diferentes, e eles têm uma ordem de precedência distinta.
Note
Os arquivos de configuração são mesclados, não substituídos. As configurações dos seguintes locais são combinadas. Configurações posteriores sobrescrevem as anteriores apenas para chaves conflitantes. Configurações não conflitantes de todas as fontes são preservadas.
Por exemplo, se sua configuração global define autoupdate: true e sua configuração de projeto define model: "dropstone/dropstone-pro", a configuração final incluirá ambas as configurações.
Ordem de precedência
As fontes de configuração são carregadas nesta ordem (fontes posteriores sobrescrevem as anteriores):
- Configuração remota (de
.well-known/dropstone) - padrões organizacionais - Configuração global (
~/.config/dropstone/dropstone.json) - preferências do usuário - Configuração personalizada (variável de ambiente
DROPSTONE_CONFIG) - sobrescritas personalizadas - Configuração do projeto (
dropstone.jsonno projeto) - configurações específicas do projeto - Diretórios
.dropstone- agentes, comandos, plugins - Arquivos de configuração gerenciados (
/Library/Application Support/dropstone/no macOS) - controlados pelo administrador - Preferências gerenciadas do macOS (
.mobileconfigvia MDM) - prioridade mais alta, não sobrescrevíveis pelo usuário
Isso significa que configurações de projeto podem sobrescrever padrões globais, e configurações globais podem sobrescrever padrões organizacionais remotos. Configurações gerenciadas sobrescrevem tudo.
Note
Os diretórios .dropstone e ~/.config/dropstone usam nomes no plural para subdiretórios: agents/, commands/, modes/, plugins/, skills/, tools/. Nomes no singular (ex.: agent/) também são suportados para compatibilidade retroativa.
Remota
Organizações podem fornecer configuração padrão via um endpoint .well-known/dropstone em seu domínio. O Dropstone busca isso automaticamente no primeiro login para usuários cuja conta está vinculada a essa organização.
A configuração remota é carregada primeiro, servindo como a camada base. Todas as outras fontes de configuração (global, projeto) podem sobrescrever esses padrões.
Por exemplo, se sua organização fornece servidores MCP que estão desabilitados por padrão:
{
"mcp": {
"jira": {
"type": "remote",
"url": "https://jira.example.com/mcp",
"enabled": false
}
}
}
Você pode habilitar servidores específicos em sua configuração local:
{
"mcp": {
"jira": {
"type": "remote",
"url": "https://jira.example.com/mcp",
"enabled": true
}
}
}
Global
Coloque sua configuração global do Dropstone em ~/.config/dropstone/dropstone.json. Use a configuração global para preferências de todo o usuário, como modelos e permissões.
Para configurações de nível de sessão (atalhos de teclado, rolagem, captura de mouse), use ~/.config/dropstone/tui.json.
A configuração global sobrescreve os padrões organizacionais remotos.
Por projeto
Adicione dropstone.json na raiz do seu projeto. A configuração do projeto tem a maior precedência entre os arquivos de configuração padrão - ela sobrescreve tanto a configuração global quanto a remota.
Para configurações de sessão específicas do projeto, adicione tui.json ao lado dele.
Tip
Coloque a configuração específica do projeto na raiz do seu projeto.
Quando o Dropstone inicia, ele procura um arquivo de configuração no diretório atual ou percorre até o diretório Git mais próximo.
Isso também é seguro para ser versionado no Git e usa o mesmo esquema que o global.
Caminho personalizado
Especifique um caminho de arquivo de configuração personalizado usando a variável de ambiente DROPSTONE_CONFIG.
export DROPSTONE_CONFIG=/path/to/my/custom-config.json
dropstone run "Hello world"
A configuração personalizada é carregada entre a configuração global e a do projeto na ordem de precedência.
Configurações gerenciadas
Organizações podem impor configurações que os usuários não podem sobrescrever. As configurações gerenciadas são carregadas no nível de prioridade mais alto.
Baseado em arquivo
Coloque um arquivo dropstone.json ou dropstone.jsonc no diretório de configuração gerenciada do sistema:
| Plataforma | Caminho |
|---|---|
| macOS | /Library/Application Support/dropstone/ |
| Linux | /etc/dropstone/ |
| Windows | %ProgramData%\dropstone |
Esses diretórios exigem acesso de administrador/root para gravação, então os usuários não podem modificá-los.
Preferências gerenciadas do macOS
No macOS, o Dropstone lê preferências gerenciadas do domínio de preferências ai.dropstone.managed. Implante um .mobileconfig via MDM (Jamf, Kandji, FleetDM) e as configurações são aplicadas automaticamente.
O Dropstone verifica estes caminhos:
/Library/Managed Preferences/<user>/ai.dropstone.managed.plist/Library/Managed Preferences/ai.dropstone.managed.plist
As chaves do plist mapeiam diretamente para os campos de dropstone.json. As chaves de metadados do MDM (PayloadUUID, PayloadType, etc.) são removidas automaticamente.
Criando um .mobileconfig
Use o PayloadType ai.dropstone.managed. As chaves de configuração do Dropstone vão diretamente no dicionário do payload:
<?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>
Gere UUIDs únicos com uuidgen. Personalize as configurações para atender aos requisitos da sua organização.
Implantando via MDM
- Jamf Pro: Computadores > Perfis de Configuração > Upload > escopo para dispositivos ou grupos inteligentes de destino
- FleetDM: Adicione o
.mobileconfigao seu repositório gitops sobmdm.macos_settings.custom_settingse executefleetctl apply
Verificando em um dispositivo
Clique duas vezes no .mobileconfig para instalar localmente para teste (aparece em Ajustes do Sistema > Privacidade e Segurança > Perfis) e depois execute:
dropstone debug config
Todas as chaves de preferências gerenciadas aparecem na configuração resolvida e não podem ser sobrescritas pela configuração do usuário ou do projeto.
Esquema
O esquema principal de configuração é definido em dropstone.io/config.json.
A configuração de nível de sessão (tui.json) usa dropstone.io/tui.json.
Seu editor deve ser capaz de validar e autocompletar com base no esquema.
Configuração de sessão
Use um arquivo dedicado tui.json (ou tui.jsonc) para configurações de nível de sessão: comportamento de rolagem, captura de mouse, renderização de diffs, e assim por diante.
{
"$schema": "https://dropstone.io/schema/tui.json",
"scroll_speed": 3,
"scroll_acceleration": {
"enabled": true
},
"diff_style": "auto",
"mouse": true
}
Chaves legadas theme, keybinds e relacionadas à sessão em dropstone.json estão obsoletas e são migradas automaticamente quando possível.
Servidor
Você pode configurar as configurações do servidor para os comandos dropstone serve e dropstone web através da opção server.
{
"$schema": "https://dropstone.io/schema/config.json",
"server": {
"port": 4096,
"hostname": "0.0.0.0",
"mdns": true,
"mdnsDomain": "myproject.local",
"cors": ["http://localhost:5173"]
}
}
Opções disponíveis:
port- Porta para escutar.hostname- Hostname para escutar. Quandomdnsestá habilitado e nenhum hostname é definido, o padrão é0.0.0.0.mdns- Habilita a descoberta de serviço mDNS. Isso permite que outros dispositivos na rede descubram seu servidor Dropstone.mdnsDomain- Nome de domínio personalizado para o serviço mDNS. O padrão édropstone.local. Útil para executar várias instâncias na mesma rede.cors- Origens adicionais para permitir CORS ao usar o servidor HTTP a partir de um cliente baseado em navegador. Os valores devem ser origens completas (esquema + host + porta opcional), ex.:https://app.example.com.
Saiba mais sobre o servidor aqui.
Shell
Você pode configurar o shell usado para o terminal interativo usando a opção shell. Shells compatíveis também são usados para chamadas de ferramentas do agente.
{
"$schema": "https://dropstone.io/schema/config.json",
"shell": "pwsh"
}
Se não for especificado, o Dropstone descobrirá automaticamente e usará um padrão sensato com base no seu sistema operacional (ex.: pwsh ou cmd.exe no Windows, /bin/zsh ou /bin/bash no macOS/Linux). Você pode fornecer um caminho absoluto ou um nome curto.
Ferramentas
Você pode gerenciar as ferramentas que um LLM pode usar através da opção tools.
{
"$schema": "https://dropstone.io/schema/config.json",
"tools": {
"write": false,
"bash": false
}
}
Saiba mais sobre ferramentas aqui.
Modelo
Defina seu modelo padrão com a opção model. O Dropstone oferece três níveis:
| Nível | ID do modelo |
|---|---|
| Fast | dropstone/dropstone-fast |
| Pro | dropstone/dropstone-pro |
| Heavy | dropstone/dropstone-heavy |
{
"$schema": "https://dropstone.io/schema/config.json",
"model": "dropstone/dropstone-pro"
}
Fixe uma profundidade de raciocínio padrão com variant:
{
"$schema": "https://dropstone.io/schema/config.json",
"model": "dropstone/dropstone-pro",
"variant": "high"
}
Os valores válidos de variant são low, medium, high, xhigh. Veja Modelos para o detalhamento completo.
A opção small_model configura um modelo separado para tarefas leves, como geração de títulos. Por padrão, o Dropstone escolhe um nível apropriado; você pode sobrescrevê-lo explicitamente:
{
"$schema": "https://dropstone.io/schema/config.json",
"model": "dropstone/dropstone-pro",
"small_model": "dropstone/dropstone-fast"
}
Agentes
Você pode configurar agentes especializados para tarefas específicas através da opção agent.
{
"$schema": "https://dropstone.io/schema/config.json",
"agent": {
"code-reviewer": {
"description": "Revisa código para boas práticas e problemas potenciais",
"model": "dropstone/dropstone-pro",
"prompt": "Você é um revisor de código. Foque em segurança, desempenho e manutenibilidade.",
"tools": {
// Desabilita ferramentas de modificação de arquivos para agente somente de revisão
"write": false,
"edit": false,
},
},
},
}
Você também pode definir agentes usando arquivos markdown em ~/.config/dropstone/agents/ ou .dropstone/agents/. Saiba mais aqui.
Agente padrão
Você pode definir o agente padrão usando a opção default_agent. Isso determina qual agente é usado quando nenhum é especificado explicitamente.
{
"$schema": "https://dropstone.io/schema/config.json",
"default_agent": "plan"
}
O agente padrão deve ser um agente primário (não um subagente). Pode ser um agente integrado como "build" ou "plan", ou um agente personalizado que você definiu. Se o agente especificado não existir ou for um subagente, o Dropstone usará "build" como fallback com um aviso.
Essa configuração se aplica a todas as interfaces: sessões interativas, execuções únicas (dropstone run) e a GitHub Action.
Comandos
Você pode configurar comandos personalizados para tarefas repetitivas através da opção command.
{
"$schema": "https://dropstone.io/schema/config.json",
"command": {
"test": {
"template": "Execute a suíte de testes completa com relatório de cobertura e mostre quaisquer falhas.\nFoque nos testes com falha e sugira correções.",
"description": "Executar testes com cobertura",
"agent": "build",
"model": "dropstone/dropstone-fast",
},
"component": {
"template": "Crie um novo componente React chamado $ARGUMENTS com suporte a TypeScript.\nInclua tipagem adequada e estrutura básica.",
"description": "Criar um novo componente",
},
},
}
Você também pode definir comandos usando arquivos markdown em ~/.config/dropstone/commands/ ou .dropstone/commands/. Saiba mais aqui.
Mapa de teclas
Personalize atalhos de teclado em tui.json com keymap.
{
"$schema": "https://dropstone.io/schema/tui.json",
"keymap": {
"sections": {
"global": {
"command.palette.show": "ctrl+p"
}
}
}
}
keymap é mesclado com os padrões integrados, então você só precisa configurar os atalhos que deseja alterar.
O campo mais antigo keybinds está obsoleto e só se aplica quando keymap não está presente.
Snapshot
O Dropstone usa snapshots para rastrear alterações de arquivos durante operações do agente, permitindo que você desfaça e reverta alterações dentro de uma sessão. Os snapshots estão habilitados por padrão.
Para repositórios grandes ou projetos com muitos submódulos, o sistema de snapshot pode causar indexação lenta e uso significativo de disco. Você pode desabilitar snapshots usando a opção snapshot.
{
"$schema": "https://dropstone.io/schema/config.json",
"snapshot": false
}
Observe que desabilitar snapshots significa que alterações feitas pelo agente não podem ser revertidas pela interface.
Atualização automática
O Dropstone baixará automaticamente quaisquer novas atualizações quando iniciar. Você pode desabilitar isso com a opção autoupdate.
{
"$schema": "https://dropstone.io/schema/config.json",
"autoupdate": false
}
Se você não quiser atualizações, mas quiser ser notificado quando uma nova versão estiver disponível, defina autoupdate como "notify".
Observe que isso só funciona se não foi instalado usando um gerenciador de pacotes como Homebrew.
Formatadores
Você pode habilitar e configurar formatadores de código através da opção formatter. Omita-a para manter os formatadores desabilitados.
{
"$schema": "https://dropstone.io/schema/config.json",
"formatter": true
}
Use um objeto para manter os integrados habilitados enquanto configura sobrescritas ou formatadores personalizados.
{
"$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"]
}
}
}
Saiba mais sobre formatadores aqui.
Servidores LSP
Você pode habilitar e configurar servidores LSP através da opção lsp. Omita-a para manter o LSP desabilitado.
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": true
}
Use um objeto para manter os integrados habilitados enquanto configura sobrescritas ou servidores LSP personalizados.
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": {
"typescript": {
"disabled": true
}
}
}
Saiba mais sobre servidores LSP aqui.
Permissões
Por padrão, o Dropstone permite todas as operações sem exigir aprovação explícita. Você pode alterar isso usando a opção permission.
Por exemplo, para garantir que as ferramentas edit e bash exijam aprovação do usuário:
{
"$schema": "https://dropstone.io/schema/config.json",
"permission": {
"edit": "ask",
"bash": "ask"
}
}
Saiba mais sobre permissões aqui.
Compactação
Você pode controlar o comportamento de compactação de contexto através da opção compaction.
{
"$schema": "https://dropstone.io/schema/config.json",
"compaction": {
"auto": true,
"prune": true,
"reserved": 10000
}
}
auto- Compacta automaticamente a sessão quando o contexto está cheio (padrão:true).prune- Remove saídas antigas de ferramentas para economizar tokens (padrão:true).reserved- Buffer de tokens para compactação. Deixa janela suficiente para evitar estouro durante a compactação.
Observador de arquivos
Você pode configurar padrões de ignorar do observador de arquivos através da opção watcher.
{
"$schema": "https://dropstone.io/schema/config.json",
"watcher": {
"ignore": ["node_modules/**", "dist/**", ".git/**"]
}
}
Os padrões seguem a sintaxe glob. Use isso para excluir diretórios ruidosos da observação de arquivos.
Servidores MCP
Você pode configurar os servidores MCP que deseja usar através da opção mcp.
{
"$schema": "https://dropstone.io/schema/config.json",
"mcp": {}
}
Plugins
Plugins estendem o Dropstone com ferramentas personalizadas, hooks e integrações.
Coloque arquivos de plugin em .dropstone/plugins/ ou ~/.config/dropstone/plugins/. Você também pode carregar plugins do npm através da opção plugin.
{
"$schema": "https://dropstone.io/schema/config.json",
"plugin": ["@my-org/custom-plugin", "./local-plugin.ts"]
}
Instruções
Você pode configurar as instruções para o modelo que está usando através da opção instructions.
{
"$schema": "https://dropstone.io/schema/config.json",
"instructions": ["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"]
}
Isso aceita um array de caminhos e padrões glob para arquivos de instrução. Saiba mais sobre regras aqui.
Experimental
A chave experimental contém opções que estão em desenvolvimento ativo.
{
"$schema": "https://dropstone.io/schema/config.json",
"experimental": {}
}
Instável
Opções experimentais não são estáveis. Elas podem mudar ou ser removidas sem aviso.
Variáveis
Você pode usar substituição de variáveis em seus arquivos de configuração para referenciar variáveis de ambiente e conteúdos de arquivos.
Variáveis de ambiente
Use {env:VARIABLE_NAME} para substituir variáveis de ambiente:
{
"$schema": "https://dropstone.io/schema/config.json",
"model": "{env:DROPSTONE_MODEL}"
}
Se a variável de ambiente não estiver definida, ela será substituída por uma string vazia.
Arquivos
Use {file:path/to/file} para substituir o conteúdo de um arquivo:
{
"$schema": "https://dropstone.io/schema/config.json",
"instructions": ["./custom-instructions.md"]
}
Os caminhos de arquivo podem ser:
- Relativos ao diretório do arquivo de configuração
- Ou caminhos absolutos começando com
/ou~
Eles são úteis para:
- Incluir arquivos de instrução grandes sem poluir sua configuração.
- Compartilhar trechos de configuração comuns entre vários arquivos de configuração.