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 organizacionales
  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 - agentes, comandos, 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 anulables 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 organizacionales remotos. 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 (por ejemplo, agent/) también son compatibles por retrocompatibilidad.


Remota

Las organizaciones pueden proporcionar configuración predeterminada a través de 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, sirviendo 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 (teclas, scroll, captura del mouse), usa ~/.config/dropstone/tui.json.

La configuración global anula los valores predeterminados organizacionales remotos.


Por proyecto

Añade 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, añade 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.

Creando 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 UUIDs ú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 grupos inteligentes
  • FleetDM: Añade 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 a través de 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 - Hostname 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 múltiples 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), por ejemplo https://app.example.com.

Aprende más sobre el servidor aquí.


Shell

Puedes configurar el shell usado para la terminal interactiva usando 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 descubrirá automáticamente y usará un valor predeterminado sensato según tu sistema operativo (por ejemplo, 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 a través de 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 del 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"
}

Agentes

Puedes configurar agentes especializados para tareas específicas a través de 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 agentes usando archivos markdown en ~/.config/dropstone/agents/ o .dropstone/agents/. Aprende más aquí.


Agente predeterminado

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

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

El agente predeterminado debe ser un agente principal (no un subagente). Puede ser un agente integrado como "build" o "plan", o un agente personalizado que hayas definido. Si el agente especificado no existe o es un subagente, 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.


Comandos

Puedes configurar comandos personalizados para tareas repetitivas a través de 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 comandos usando archivos markdown en ~/.config/dropstone/commands/ o .dropstone/commands/. Aprende más aquí.


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 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 deseas ser notificado cuando haya una nueva versión disponible, establece autoupdate en "notify". Ten en cuenta que esto solo funciona si no se instaló usando un gestor de paquetes como Homebrew.


Formateadores

Puedes habilitar y configurar formateadores de código a través de la opción formatter. Omítela para mantener los formateadores deshabilitados.

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

Usa un objeto para mantener los integrados habilitados mientras configuras anulaciones o formateadores 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 formateadores aquí.


Servidores LSP

Puedes habilitar y configurar servidores LSP a través de 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 a través de 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 de herramientas antiguas para ahorrar tokens (predeterminado: true).
  • reserved - Buffer 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 a través de la opción watcher.

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

Los patrones siguen la sintaxis glob. Usa esto para excluir directorios ruidosos del seguimiento de archivos.


Servidores MCP

Puedes configurar los servidores MCP que quieras usar a través de 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 a través de 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 a través de 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 archivos 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 múltiples archivos de configuración.
Ctrl+I