Dropstone CLI

Config

Uso de la configuración JSON de Dropstone.

Puedes configurar Dropstone usando un archivo de configuración JSON.


Formato

Dropstone admite formatos JSON y JSONC (JSON con comentarios).

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

Ubicaciones

Puedes colocar tu configuración en varias ubicaciones diferentes y tienen un orden de precedencia distinto.

Note

Los archivos de configuración se fusionan, no se reemplazan. Los ajustes de las siguientes ubicaciones de configuración se combinan. Las configuraciones posteriores solo anulan a las anteriores en claves conflictivas. Los ajustes no conflictivos de todas las configuraciones se conservan.

Por ejemplo, si tu configuración global establece autoupdate: true y tu configuración de proyecto establece model: "dropstone/dropstone-pro", la configuración final incluirá ambos ajustes.


Orden de precedencia

Las fuentes de configuración se cargan en este orden (las fuentes posteriores anulan a las anteriores):

  1. Configuración remota (desde .well-known/dropstone) - valores predeterminados de la organización
  2. Configuración global (~/.config/dropstone/dropstone.json) - preferencias del usuario
  3. Configuración personalizada (variable de entorno DROPSTONE_CONFIG) - anulaciones personalizadas
  4. Configuración del proyecto (dropstone.json en el proyecto) - ajustes específicos del proyecto
  5. Directorios .dropstone - agents, commands, plugins
  6. Archivos de configuración administrados (/Library/Application Support/dropstone/ en macOS) - controlados por el administrador
  7. Preferencias administradas de macOS (.mobileconfig vía MDM) - máxima prioridad, no se pueden anular por el usuario

Esto significa que las configuraciones de proyecto pueden anular los valores predeterminados globales, y las configuraciones globales pueden anular los valores predeterminados remotos de la organización. Los ajustes administrados lo anulan todo.

Note

Los directorios .dropstone y ~/.config/dropstone usan nombres en plural para los subdirectorios: agents/, commands/, modes/, plugins/, skills/, tools/. Los nombres en singular (p. ej. agent/) también son compatibles por retrocompatibilidad.


Remota

Las organizaciones pueden proporcionar configuración predeterminada mediante un endpoint .well-known/dropstone en su dominio. Dropstone lo obtiene automáticamente en el primer inicio de sesión para los usuarios cuya cuenta está inscrita en esa organización.

La configuración remota se carga primero y sirve como capa base. Todas las demás fuentes de configuración (global, proyecto) pueden anular estos valores predeterminados.

Por ejemplo, si tu organización proporciona servidores MCP que están deshabilitados por defecto:

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

Puedes habilitar servidores específicos en tu configuración local:

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

Global

Coloca tu configuración global de Dropstone en ~/.config/dropstone/dropstone.json. Usa la configuración global para preferencias de todo el usuario, como modelos y permisos.

Para ajustes a nivel de sesión (keybinds, scroll, captura del mouse), usa ~/.config/dropstone/tui.json.

La configuración global anula los valores predeterminados remotos de la organización.


Por proyecto

Agrega dropstone.json en la raíz de tu proyecto. La configuración del proyecto tiene la mayor precedencia entre los archivos de configuración estándar: anula tanto la configuración global como la remota.

Para ajustes de sesión específicos del proyecto, agrega tui.json junto a él.

Tip

Coloca la configuración específica del proyecto en la raíz de tu proyecto.

Cuando Dropstone se inicia, busca un archivo de configuración en el directorio actual o sube hasta el directorio Git más cercano.

También es seguro incluirlo en Git y usa el mismo esquema que el global.


Ruta personalizada

Especifica una ruta de archivo de configuración personalizada usando la variable de entorno DROPSTONE_CONFIG.

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

La configuración personalizada se carga entre la configuración global y la del proyecto en el orden de precedencia.


Ajustes administrados

Las organizaciones pueden imponer configuraciones que los usuarios no pueden anular. Los ajustes administrados se cargan en el nivel de prioridad más alto.

Basados en archivos

Coloca un archivo dropstone.json o dropstone.jsonc en el directorio de configuración administrada del sistema:

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

Estos directorios requieren acceso de administrador/root para escribir, por lo que los usuarios no pueden modificarlos.

Preferencias administradas de macOS

En macOS, Dropstone lee las preferencias administradas del dominio de preferencias ai.dropstone.managed. Implementa un .mobileconfig vía MDM (Jamf, Kandji, FleetDM) y los ajustes se aplican automáticamente.

Dropstone verifica estas rutas:

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

Las claves del plist se asignan directamente a los campos de dropstone.json. Las claves de metadatos de MDM (PayloadUUID, PayloadType, etc.) se eliminan automáticamente.

Creación de un .mobileconfig

Usa el PayloadType ai.dropstone.managed. Las claves de configuración de Dropstone van directamente en el dict del 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>

Genera UUID únicos con uuidgen. Personaliza los ajustes para que coincidan con los requisitos de tu organización.

Implementación vía MDM

  • Jamf Pro: Computers > Configuration Profiles > Upload > scope a dispositivos objetivo o smart groups
  • FleetDM: Agrega el .mobileconfig a tu repositorio gitops bajo mdm.macos_settings.custom_settings y ejecuta fleetctl apply

Verificación en un dispositivo

Haz doble clic en el .mobileconfig para instalarlo localmente para pruebas (aparece en System Settings > Privacy & Security > Profiles), luego ejecuta:

dropstone debug config

Todas las claves de preferencias administradas aparecen en la configuración resuelta y no pueden ser anuladas por la configuración del usuario o del proyecto.


Esquema

El esquema principal de configuración se define en dropstone.io/config.json.

La configuración a nivel de sesión (tui.json) usa dropstone.io/tui.json.

Tu editor debería poder validar y autocompletar según el esquema.


Configuración de sesión

Usa un archivo dedicado tui.json (o tui.jsonc) para ajustes a nivel de sesión: comportamiento del scroll, captura del mouse, renderizado de diffs, etc.

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

Las claves heredadas theme, keybinds y las relacionadas con la sesión en dropstone.json están obsoletas y se migran automáticamente cuando es posible.


Servidor

Puedes configurar los ajustes del servidor para los comandos dropstone serve y dropstone web mediante la opción 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"]
  }
}

Opciones disponibles:

  • port - Puerto en el que escuchar.
  • hostname - Nombre de host en el que escuchar. Cuando mdns está habilitado y no se establece ningún hostname, el valor predeterminado es 0.0.0.0.
  • mdns - Habilita el descubrimiento de servicios mDNS. Esto permite que otros dispositivos en la red descubran tu servidor Dropstone.
  • mdnsDomain - Nombre de dominio personalizado para el servicio mDNS. El valor predeterminado es dropstone.local. Útil para ejecutar varias instancias en la misma red.
  • cors - Orígenes adicionales permitidos para CORS al usar el servidor HTTP desde un cliente basado en navegador. Los valores deben ser orígenes completos (esquema + host + puerto opcional), p. ej. https://app.example.com.

Aprende más sobre el servidor aquí.


Shell

Puedes configurar el shell usado para la terminal interactiva mediante la opción shell. Los shells compatibles también se usan para las llamadas de herramientas del agente.

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

Si no se especifica, Dropstone detectará automáticamente y usará un valor predeterminado razonable según tu sistema operativo (p. ej. pwsh o cmd.exe en Windows, /bin/zsh o /bin/bash en macOS/Linux). Puedes proporcionar una ruta absoluta o un nombre corto.


Herramientas

Puedes gestionar las herramientas que un LLM puede usar mediante la opción tools.

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

Aprende más sobre las herramientas aquí.


Modelo

Establece tu modelo predeterminado con la opción model. Dropstone incluye tres niveles:

NivelID de modelo
Fastdropstone/dropstone-fast
Prodropstone/dropstone-pro
Heavydropstone/dropstone-heavy
{
  "$schema": "https://dropstone.io/schema/config.json",
  "model": "dropstone/dropstone-pro"
}

Fija una profundidad de razonamiento predeterminada con variant:

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

Los valores válidos de variant son low, medium, high, xhigh. Consulta Models para el desglose completo.

La opción small_model configura un modelo separado para tareas ligeras como la generación de títulos. Por defecto, Dropstone elige un nivel apropiado; puedes anularlo explícitamente:

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

Agents

Puedes configurar agents especializados para tareas específicas mediante la opción agent.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "agent": {
    "code-reviewer": {
      "description": "Revisa el código en busca de mejores prácticas y problemas potenciales",
      "model": "dropstone/dropstone-pro",
      "prompt": "Eres un revisor de código. Concéntrate en seguridad, rendimiento y mantenibilidad.",
      "tools": {
        // Deshabilita las herramientas de modificación de archivos para el agente de solo revisión
        "write": false,
        "edit": false,
      },
    },
  },
}

También puedes definir agents usando archivos markdown en ~/.config/dropstone/agents/ o .dropstone/agents/. Aprende más aquí.


Agent predeterminado

Puedes establecer el agent predeterminado usando la opción default_agent. Esto determina qué agent se usa cuando no se especifica ninguno explícitamente.

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

El agent predeterminado debe ser un agent principal (no un subagent). Puede ser un agent integrado como "build" o "plan", o un agent personalizado que hayas definido. Si el agent especificado no existe o es un subagent, Dropstone recurrirá a "build" con una advertencia.

Este ajuste se aplica en todas las interfaces: sesiones interactivas, ejecuciones de una sola vez (dropstone run) y la GitHub Action.


Commands

Puedes configurar commands personalizados para tareas repetitivas mediante la opción command.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "command": {
    "test": {
      "template": "Ejecuta la suite de pruebas completa con informe de cobertura y muestra cualquier fallo.\nConcéntrate en las pruebas que fallan y sugiere correcciones.",
      "description": "Ejecuta pruebas con cobertura",
      "agent": "build",
      "model": "dropstone/dropstone-fast",
    },
    "component": {
      "template": "Crea un nuevo componente React llamado $ARGUMENTS con soporte de TypeScript.\nIncluye tipado adecuado y estructura básica.",
      "description": "Crea un nuevo componente",
    },
  },
}

También puedes definir commands usando archivos markdown en ~/.config/dropstone/commands/ o .dropstone/commands/. Aprende más aquí.


Esfuerzo de revisión

El comando integrado /review ejecuta una revisión en múltiples fases: ángulos de búsqueda independientes generan candidatos, un verificador confirma o refuta cada uno, y solo se informan los hallazgos que sobreviven. Establece review.effort para elegir cuántos ángulos se ejecutan y cuántos hallazgos se conservan.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "review": {
    "effort": "high"
  }
}
ValorÁngulosCandidatos por ánguloHallazgosExtra
low1 pase de diff—8Sin verificación, sin subagents, solo hunks
medium868Verificación sesgada a precisión
high (predeterminado)8610Verificación sesgada a recuperación
xhigh10815Ángulos en línea, solo deduplicación, barrido de brechas
max10815Verificación sesgada a recuperación más barrido de brechas

Un mayor esfuerzo genera más subagents de búsqueda y verificación, por lo que cuesta más y tarda más.


Keymap

Personaliza los atajos de teclado en tui.json con keymap.

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

keymap se fusiona con los valores predeterminados integrados, por lo que solo necesitas configurar los atajos que quieres cambiar.

El campo más antiguo keybinds está obsoleto y solo se aplica cuando keymap no está presente.

Aprende más aquí.


Snapshot

Dropstone usa snapshots para rastrear cambios de archivos durante las operaciones del agente, lo que te permite deshacer y revertir cambios dentro de una sesión. Los snapshots están habilitados por defecto.

Para repositorios grandes o proyectos con muchos submódulos, el sistema de snapshots puede causar indexación lenta y un uso significativo de disco. Puedes deshabilitar los snapshots usando la opción snapshot.

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

Ten en cuenta que deshabilitar los snapshots significa que los cambios realizados por el agente no se pueden revertir a través de la interfaz.


Autoupdate

Dropstone descargará automáticamente cualquier nueva actualización cuando se inicie. Puedes deshabilitar esto con la opción autoupdate.

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

Si no quieres actualizaciones pero quieres que se te notifique cuando haya una nueva versión disponible, establece autoupdate en "notify". Ten en cuenta que esto solo funciona si no se instaló mediante un gestor de paquetes como Homebrew.


Formatters

Puedes habilitar y configurar formatters de código mediante la opción formatter. Omítela para mantener los formatters deshabilitados.

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

Usa un objeto para mantener los integrados habilitados mientras configuras anulaciones o formatters 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"]
    }
  }
}

Aprende más sobre los formatters aquí.


Servidores LSP

Puedes habilitar y configurar servidores LSP mediante la opción lsp. Omítela para mantener LSP deshabilitado.

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

Usa un objeto para mantener los integrados habilitados mientras configuras anulaciones o servidores LSP personalizados.

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

Aprende más sobre los servidores LSP aquí.


Permisos

Por defecto, Dropstone permite todas las operaciones sin requerir aprobación explícita. Puedes cambiar esto usando la opción permission.

Por ejemplo, para asegurar que las herramientas edit y bash requieran aprobación del usuario:

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

Aprende más sobre los permisos aquí.


Compactación

Puedes controlar el comportamiento de compactación del contexto mediante la opción compaction.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "compaction": {
    "auto": true,
    "prune": true,
    "reserved": 10000
  }
}
  • auto - Compacta automáticamente la sesión cuando el contexto está lleno (predeterminado: true).
  • prune - Elimina salidas antiguas de herramientas para ahorrar tokens (predeterminado: true).
  • reserved - Búfer de tokens para la compactación. Deja suficiente ventana para evitar desbordamiento durante la compactación.

Watcher

Puedes configurar patrones de ignorado del watcher de archivos mediante la opción watcher.

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

Los patrones siguen la sintaxis glob. Úsalo para excluir directorios ruidosos del seguimiento de archivos.


Servidores MCP

Puedes configurar los servidores MCP que quieras usar mediante la opción mcp.

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

Aprende más aquí.


Plugins

Los Plugins extienden Dropstone con herramientas, hooks e integraciones personalizadas.

Coloca los archivos de plugins en .dropstone/plugins/ o ~/.config/dropstone/plugins/. También puedes cargar plugins desde npm mediante la opción plugin.

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

Aprende más aquí.


Instrucciones

Puedes configurar las instrucciones para el modelo que estás usando mediante la opción instructions.

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

Esto toma un array de rutas y patrones glob para archivos de instrucciones. Aprende más sobre las reglas aquí.


Experimental

La clave experimental contiene opciones que están en desarrollo activo.

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

Inestable

Las opciones experimentales no son estables. Pueden cambiar o eliminarse sin previo aviso.


Variables

Puedes usar sustitución de variables en tus archivos de configuración para hacer referencia a variables de entorno y contenidos de archivos.


Variables de entorno

Usa {env:VARIABLE_NAME} para sustituir variables de entorno:

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

Si la variable de entorno no está establecida, se reemplazará con una cadena vacía.


Archivos

Usa {file:path/to/file} para sustituir el contenido de un archivo:

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

Las rutas de archivo pueden ser:

  • Relativas al directorio del archivo de configuración
  • O rutas absolutas que comiencen con / o ~

Estas son útiles para:

  • Incluir archivos de instrucciones grandes sin saturar tu configuración.
  • Compartir fragmentos de configuración comunes entre varios archivos de configuración.
Ctrl+I