Dropstone Docs

Configuração

Usando a configuração JSON do Dropstone.

Você pode configurar o Dropstone usando um arquivo de configuração JSON.


Formato

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,
  },
}

Localizações

Você pode colocar sua configuração em alguns locais diferentes e eles têm uma ordem de precedência diferente.

Note:

Arquivos de configuração são mesclados juntos, não substituídos. As configurações dos seguintes locais de configuração são combinadas. Configurações posteriores substituem as anteriores apenas para chaves conflitantes. Configurações não conflitantes de todas as configurações 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 substituem as anteriores):

  1. Configuração remota (de .well-known/dropstone) - padrões organizacionais
  2. Configuração global (~/.config/dropstone/dropstone.json) - preferências do usuário
  3. Configuração personalizada (variável de ambiente DROPSTONE_CONFIG) - substituições personalizadas
  4. Configuração de projeto (dropstone.json no projeto) - configurações específicas do projeto
  5. Diretórios .dropstone - agentes, comandos, plugins
  6. Arquivos de configuração gerenciados (/Library/Application Support/dropstone/ no macOS) - controlados por administrador
  7. Preferências gerenciadas do macOS (.mobileconfig via MDM) - prioridade máxima, não substituível pelo usuário

Isso significa que configurações de projeto podem substituir padrões globais, e configurações globais podem substituir padrões organizacionais remotos. Configurações gerenciadas substituem 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 (por exemplo, agent/) também são suportados para compatibilidade com versões anteriores.


Remota

As organizações podem fornecer configuração padrão por meio de um endpoint .well-known/dropstone em seu domínio. O Dropstone busca isso automaticamente no primeiro login para usuários cuja conta está registrada nessa organização.

A configuração remota é carregada primeiro, servindo como a camada base. Todas as outras fontes de configuração (global, projeto) podem substituir 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 em toda a aplicação, como modelos e permissões.

Para configurações em nível de sessão (keybinds, scroll, captura de mouse), use ~/.config/dropstone/tui.json.

A configuração global substitui os padrões organizacionais remotos.


Por projeto

Adicione dropstone.json na raiz do seu projeto. A configuração de projeto tem a precedência mais alta entre os arquivos de configuração padrão - ela substitui configurações globais e remotas.

Para configurações de sessão específicas do projeto, adicione tui.json ao lado dela.

Dica:

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.

Também é seguro ser verificado 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 as configurações globais e de projeto na ordem de precedência.


Configurações gerenciadas

As organizações podem impor configurações que os usuários não podem substituir. As configurações gerenciadas são carregadas na camada de prioridade mais alta.

Baseado em arquivo

Coloque um arquivo dropstone.json ou dropstone.jsonc no diretório de configuração gerenciada do sistema:

PlataformaCaminho
macOS/Library/Application Support/dropstone/
Linux/etc/dropstone/
Windows%ProgramData%\dropstone

Esses diretórios requerem acesso de administrador/root para escrita, portanto 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ência ai.dropstone.managed. Implante um .mobileconfig via MDM (Jamf, Kandji, FleetDM) e as configurações são aplicadas automaticamente.

O Dropstone verifica estes caminhos:

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

As chaves plist mapeiam diretamente para campos dropstone.json. As chaves de metadados 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 de 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 corresponder aos requisitos da sua organização.

Implantando via MDM

  • Jamf Pro: Computers > Configuration Profiles > Upload > escopo para dispositivos de destino ou grupos inteligentes
  • FleetDM: Adicione o .mobileconfig ao seu repositório gitops em mdm.macos_settings.custom_settings e execute fleetctl apply

Verificando em um dispositivo

Clique duas vezes no .mobileconfig para instalar localmente para teste (aparece em System Settings > Privacy & Security > Profiles), depois execute:

dropstone debug config

Todas as chaves de preferência gerenciada aparecem na configuração resolvida e não podem ser substituídas pela configuração de usuário ou projeto.


Esquema

O esquema de configuração principal é definido em dropstone.io/config.json.

A configuração em 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 em nível de sessão: comportamento de scroll, captura de mouse, renderização de diff, e assim por diante.

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

As chaves theme, keybinds e relacionadas a sessão legadas em dropstone.json estão descontinuadas e 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 - Nome do host para escutar. Quando mdns está habilitado e nenhum nome de host é definido, o padrão é 0.0.0.0.
  • mdns - Habilitar descoberta de serviço mDNS. Isso permite que outros dispositivos na rede descubram seu servidor Dropstone.
  • mdnsDomain - Nome de domínio personalizado para 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 de um cliente baseado em navegador. Os valores devem ser origens completas (esquema + host + porta opcional), por exemplo, 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 de agente.

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

Se não especificado, o Dropstone descobrirá e usará automaticamente um padrão sensato com base no seu sistema operacional (por exemplo, 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 camadas:

CamadaID do Modelo
Fastdropstone/dropstone-fast
Prodropstone/dropstone-pro
Heavydropstone/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 uma camada apropriada; você pode substituí-la 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": "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": {
        // Disable file modification tools for review-only agent
        "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 é explicitamente especificado.

{
  "$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 voltará para "build" com um aviso.

Esta configuração se aplica em 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": "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",
    },
  },
}

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 padrões integrados, portanto você só precisa configurar os atalhos que deseja alterar.

O campo keybinds mais antigo está descontinuado e só se aplica quando keymap não está presente.

Saiba mais aqui.


Snapshot

O Dropstone usa snapshots para rastrear alterações de arquivo durante operações de 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 as alterações feitas pelo agente não podem ser revertidas através da interface.


Atualização automática

O Dropstone baixará automaticamente qualquer nova atualização quando iniciar. Você pode desabilitar isso com a opção autoupdate.

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

Se você não deseja atualizações, mas quer 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 substituições 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 substituições 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 - Compactar automaticamente a sessão quando o contexto está cheio (padrão: true).
  • prune - Remover saídas de ferramentas antigas para economizar tokens (padrão: true).
  • reserved - Buffer de token para compactação. Deixa janela suficiente para evitar overflow durante compactação

Observador

Você pode configurar padrões de ignorância do observador de arquivo 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 barulhentos da observação de arquivo.


Servidores MCP

Você pode configurar servidores MCP que deseja usar através da opção mcp.

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

Saiba mais aqui.


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"]
}

Saiba mais aqui.


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 leva 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 prévio.


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 arquivo.


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 ~

Estes são úteis para:

  • Incluir arquivos de instrução grandes sem poluir sua configuração.
  • Compartilhar trechos de configuração comum entre vários arquivos de configuração.
Ctrl+I