recon-crypto-mcp
Servidor MCP para que agentes de IA gestionen un portafolio de criptoactivos con autocustodia (Aave, Compound, Morpho, Uniswap V3, Lido, EigenLayer) en Ethereum/Arbitrum/Polygon a través de Ledger + WalletConnect. Las claves privadas nunca salen del dispositivo.
Documentación
VaultPilot MCP
DeFi autocustodial para agentes de IA. El agente propone, tú apruebas en tu Ledger — diseñado para el modelo de amenaza donde el agente, el MCP y el host pueden estar todos comprometidos. Solo el dispositivo es de confianza; las claves privadas nunca salen de él.

Lee posiciones on-chain y prepara transacciones en Ethereum, Arbitrum, Polygon, Base, Optimism, TRON, Solana, Bitcoin y Litecoin. Protocolos compatibles: Aave V3, Compound V3, Morpho Blue, Uniswap V3 (verbos swap + LP), Curve, Lido, EigenLayer, Rocket Pool, Safe (Gnosis) multisig en EVM, MarginFi, Kamino, Marinade, Jito en Solana, SunSwap en TRON, además de LiFi (EVM + EVM↔Solana + TRON + swap/puente BTC) y Jupiter v6 (swap en Solana), con 1inch como verificación cruzada opcional de cotizaciones EVM. Las firmas EVM se realizan mediante WalletConnect → Ledger Live; TRON, Solana, Bitcoin y Litecoin firman mediante USB HID directamente al dispositivo (el puente WalletConnect de Ledger Live no admite esos namespaces hoy). Funciona con Claude Code (CLI/terminal), Cursor y cualquier cliente compatible con MCP a través de stdio. Claude.ai chat (web + aplicación nativa de escritorio) necesita un endpoint MCP alojado — en la hoja de ruta, aún no disponible.
Agentes: leed AGENTS.md. Prompt de una línea para pegar en Claude Code / Cursor / cualquier agente compatible con MCP:
Instala VaultPilot MCP desde https://github.com/szhygulin/vaultpilot-mcp siguiendo AGENTS.md.
Características
- Portafolio — saldos entre cadenas, agregación de posiciones DeFi, totales en USD, colecciones NFT (EVM + Solana vía Helius DAS), PnL a nivel de cartera (
mtd/ytd/30d/7d/1d), informe diario - Posiciones — Aave, Compound, Morpho, Uniswap V3 LP, Curve, MarginFi, Kamino, Safe (Gnosis) multisig; alertas de factor de salud multiprotocolo; simulación de riesgo de liquidación
- Staking — Lido (stake / unstake / wrap stETH↔wstETH) + EigenLayer + Rocket Pool (EVM); TRON Stake 2.0 (freeze / unfreeze / vote / claim); Solana (Marinade, Jito, delegate/deactivate/withdraw nativo)
- Swaps + puentes — LiFi (rutas EVM + EVM↔Solana + TRON + BTC, verificación cruzada opcional con 1inch), Jupiter v6 (Solana), Uniswap V3 directo, Curve, SunSwap (TRON)
- Ejecución — preparar/firmar para cada protocolo compatible + envíos nativos/token, aprobaciones ERC-20 + revocación, wrap/unwrap WETH, vía de escape
prepare_custom_callpara llamadas arbitrarias a contratos verificados. Los envíos en Solana usan una cuenta de nonce duradero por cartera para que la revisión en Ledger no compita con la ventana de blockhash de ~60s; cada preparación en Solana ejecuta una compuertasimulateTransactionpara que los revert a nivel de programa fallen en la preparación, no en la transmisión. - Bitcoin + Litecoin — envíos nativos segwit + taproot, aumentos de tarifa BIP-125 RBF, PSBT multisig (combinar / firmar / finalizar), firma de mensajes BIP-137, estimación de tarifas con mempool.space, RPC opcional de Bitcoin Core / Litecoin Core para lecturas forenses de cadena (forks, censo de mempool, percentiles de tarifas)
- Seguridad — verificación de contratos, comprobaciones de actualizabilidad, enumeración de roles privilegiados, puntuación de riesgo respaldada por DefiLlama, atestación en dispositivo Ledger + fijación de versión de firmware,
verify_tx_decodepara verificación cruzada bytes-vs-intención con un segundo LLM, contactos/libreta de direcciones firmados en disco - Utilidades — resolución ENS, registro símbolo→contrato
resolve_token, saldos de tokens, enumeración de allowances, estado de transacciones, decodificación post-hocexplain_tx,compare_yieldsentre adaptadores de préstamo + LST - Modo demo — personas seleccionadas (
whale/defi-degen/stable-saver/staking-maxi) para un primer contacto sin claves RPC / Ledger / archivo de configuración
Modelo de seguridad
Modelo de compromiso: el agente de IA, el servidor MCP y el ordenador host pueden estar todos controlados por un atacante. Solo el Ledger es de confianza. Cada transacción está criptográficamente vinculada en cada capa para que la manipulación — un destinatario intercambiado, una ruta de swap reescrita, una aprobación introducida de forma encubierta — sea evidente en la pantalla del dispositivo antes de firmar.
user-intent ──► agent ──► MCP server ──► WalletConnect / USB-HID ──► Ledger Live / host ──► Ledger device
Defensa en profundidad: huella preparar↔enviar en el servidor, comprobación independiente del selector en 4byte.directory, decodificación ABI en el lado del agente + recálculo del hash previo a la firma, coincidencia de clear-sign o blind-sign-hash en el dispositivo, verificación cruzada del topic de sesión WalletConnect, compuerta previewToken/userDecision, y get_verification_artifact para verificación cruzada con un segundo LLM en flujos de alto valor. Consulta SECURITY.md para el modelo de amenaza completo, la tabla de defensas, los riesgos residuales y las recetas de verificación.
Endurecimiento en el lado del agente (muy recomendado)
Las directivas CHECKS PERFORMED del propio MCP pueden ser omitidas silenciosamente por un servidor comprometido. Instala el vaultpilot-security-skill complementario para que el agente aplique invariantes de integridad criptográfica independientemente de lo que diga el MCP — decodificación de bytes, lista blanca de destinos de despacho, recálculo de hash, cadena-debe-ser-explícita, verificación cruzada del destinatario del puente, presentación de la clase de aprobación, oferta siempre opcional de segundo LLM en cada vista previa, verificación de intención a nivel de conjunto, fuente de verdad con vinculación duradera:
git clone https://github.com/szhygulin/vaultpilot-security-skill.git \
~/.claude/skills/vaultpilot-preflight
Reinicia Claude Code. El SHA-256 del archivo de skill está fijado en el código fuente del servidor; la manipulación en disco o la colisión de plugins se manifiesta como integrity check FAILED.
/setup conversacional (opcional)
Para una incorporación guiada por chat que detecta la configuración actual y solo recopila las claves que realmente necesitas, instala el vaultpilot-setup-skill complementario:
git clone https://github.com/szhygulin/vaultpilot-setup-skill.git \
~/.claude/skills/vaultpilot-setup
Reinicia y luego escribe /setup.
Cadenas compatibles
EVM — Ethereum, Arbitrum, Polygon, Base, Optimism. Lido lee en Ethereum + Arbitrum, Lido escribe solo en Ethereum. EigenLayer + Morpho Blue + Rocket Pool solo en Ethereum. Compound V3 + Aave V3 + Uniswap V3 + LiFi + Safe multisig abarcan las cinco cadenas; la cobertura de direcciones por protocolo varía — los lectores se cortocircuitan limpiamente donde un protocolo no está desplegado.
TRON — TRX + stablecoins TRC-20 canónicas (USDT, USDC, USDD, TUSD); Stake 2.0 freeze/unfreeze/withdraw-expire-unfreeze + reclamaciones de recompensas por voto; SunSwap (swaps TRX↔TRC-20 en la misma cadena); puente TRON↔EVM enrutado por LiFi. Sin lending/LP (Aave/Compound/Morpho/Uniswap no están desplegados). Vinculación una vez por sesión mediante pair_ledger_tron.
Solana — saldos SOL + SPL, lending MarginFi + Kamino, lecturas de cuentas de stake Marinade / Jito / nativas con valoración equivalente en SOL, cotizaciones Jupiter v6, portafolio NFT Helius DAS. Las escrituras cubren transferencias SOL/SPL, supply/withdraw/borrow/repay en MarginFi + Kamino, swaps Jupiter, stake Marinade + unstake inmediato, depósito en stake-pool Jito, delegate/deactivate/withdraw SOL nativo y puente EVM↔Solana enrutado por LiFi. La cuenta de nonce duradero por cartera (~0.00144 SOL de alquiler, recuperable) protege los envíos de la expiración del blockhash durante la revisión en Ledger (prepare_solana_nonce_init / _close). SPL / MarginFi / Kamino / Jupiter / Jito firman a ciegas contra un Message Hash — activa Allow blind signing en los Ajustes de la app de Solana; las transferencias nativas SOL hacen clear-sign. Vinculación una vez por sesión mediante pair_ledger_solana.
Bitcoin + Litecoin — lectores de saldo, UTXO, estimación de tarifas e historial de transacciones vía Esplora (mempool.space / litecoinspace.org). Envíos nativos segwit + taproot, aumentos de tarifa BIP-125 RBF, PSBT multisig (combinar / firmar / finalizar), firma de mensajes BIP-137, swaps BTC→EVM/Solana enrutados por LiFi. El JSON-RPC opcional de Bitcoin Core / Litecoin Core desbloquea herramientas forenses que Esplora no puede ofrecer (tips de cadena, estadísticas de bloques, resumen de mempool) — consulta INSTALL.md §9 para la configuración. Vinculación una vez mediante pair_ledger_btc / pair_ledger_ltc.
El puente WalletConnect de Ledger Live no respeta el namespace tron: (verificado el 2026-04-14), no expone cuentas de Solana (verificado el 2026-04-23) ni expone namespaces de BTC/LTC, por eso esas rutas usan USB HID. Los lectores se cortocircuitan limpiamente en cadenas donde un protocolo no está desplegado.
Hoja de ruta
Herramientas
~190 herramientas en las categorías de lectura / vincular-Ledger / preparar / firmar+enviar / verificar / diagnóstico. Destacados a continuación; cada herramienta tiene un esquema de entrada Zod y una descripción detallada — consulta el tools/list del servidor MCP para la superficie canónica.
Portafolio + posiciones (solo lectura):
get_portfolio_summary,get_portfolio_diff,get_pnl_summary,get_daily_briefing— agregación USD entre cadenas;tronAddress/solanaAddressopcionales incluyen esas cadenasget_lending_positions(Aave),get_compound_positions,get_morpho_positions,get_marginfi_positions,get_kamino_positions,get_curve_positions,get_safe_positions— posiciones por protocolo + factores de saludget_lp_positions— Uniswap V3 LP + estimación de ILget_staking_positions,get_staking_rewards,estimate_staking_yield— Lido + EigenLayer + Rocket Poolget_solana_staking_positions— enumeración de cuentas de stake Marinade + Jito + nativas con estado de activación y valoración equivalente en SOLget_tron_staking,list_tron_witnesses— estado de TRON Stake 2.0 + lista de SRget_nft_portfolio(EVM + Solana DAS),get_nft_collection,get_nft_history,get_nft_listings(EVM)get_btc_balance/_balances/_account_balance/_multisig_balance/_multisig_utxos/_tx_history/_fee_estimates,get_ltc_balance— lecturas BTC + LTC vía Esploraget_compound_market_info— snapshot Comet sin carteraget_health_alerts,simulate_position_change— herramientas de riesgo de liquidación multiprotocolocompare_yields— clasifica APRs de lending entre Aave / Compound / Morpho / Marinade / Jito / Kamino-lend / MarginFiget_marginfi_diagnostics— registra lo que el SDK incluido omitió, con causa raíz
Tokens, precios, historial:
get_token_balance,get_token_price,get_token_metadata,get_token_allowances,get_coin_price— saldos + precios DefiLlama en EVM/TRON/Solana;get_token_metadatadetecta proxies EIP-1967get_transaction_history— lector de transacciones combinado (externas / ERC-20 / internas / program_interaction de Solana) con métodos decodificados por 4byte + USD históricoget_transaction_status— consulta de inclusión por hashexplain_tx— decodificación post-hoc de una transacción históricaresolve_token,resolve_ens_name,reverse_resolve_ens
Lecturas forenses de cadena (requieren RPC de Bitcoin/Litecoin Core):
get_btc_block_tip/_block_stats/_blocks_recent/_chain_tips/_mempool_summary, equivalentesget_ltc_*build_incident_report,get_market_incident_status— escaneo de pausa + utilización de Compound/Aave y paquete de tip de cadena / anomalía de mempool BTC/LTC
Cotizaciones + señales de seguridad:
get_swap_quote(LiFi, EVM),get_solana_swap_quote(Jupiter v6)check_contract_security,check_permission_risks,get_protocol_risk_score,get_contract_abi,read_contractsimulate_transaction— vista previaeth_callde EVM (el equivalente en Solana se ejecuta dentro depreview_solana_send)verify_tx_decode,get_verification_artifact,get_tx_verification— verificación cruzada con segundo LLM + reemisión de handle con TTL de 15 min (detalles)
Diagnóstico:
get_solana_setup_status— prueba de nonce + PDAs de cuentas MarginFiget_vaultpilot_config_status— diagnóstico de configuración local (fuentes RPC, presencia de claves, recuentos de cuentas vinculadas, sufijo de topic WC, estado de skill). Solo booleanos / recuentos — sin valores secretos.get_ledger_device_info,get_ledger_status,verify_ledger_attestation/_firmware/_live_codesign— descubrimiento de dispositivo + sesión, atestación en dispositivo, fijación de versión de firmware
Contactos + uso compartido de solo lectura:
add_contact/remove_contact/list_contacts/verify_contacts— libreta de direcciones local firmada por Ledger en~/.vaultpilot-mcp/contacts.jsongenerate_readonly_link/import_readonly_token/list_readonly_invites/revoke_readonly_invite— emisión de enlaces de portafolio de solo lectura con ámbitoshare_strategy/import_strategy— snapshots de portafolio anonimizados
Ejecución (firmado por Ledger):
pair_ledger_live(EVM/WC),pair_ledger_tron/_solana/_btc/_ltc(USB HID)prepare_aave_*,prepare_compound_*,prepare_morpho_*— Préstamos EVM (suministrar / pedir prestado / retirar / reembolsar)prepare_lido_stake/_unstake/_wrap/_unwrap(stETH↔wstETH),prepare_eigenlayer_deposit,prepare_rocketpool_stake/_unstakeprepare_swap(LiFi),prepare_native_send,prepare_token_send,prepare_token_approve,prepare_revoke_approval,prepare_weth_unwrapprepare_uniswap_swap— swap V3 directo, misma cadena, selecciona automáticamente el nivel de comisión entre 100/500/3000/10000 bps. Úsalo solo cuando el usuario nombre Uniswap; de lo contrario, prefiere LiFiprepare_uniswap_v3_mint/_increase_liquidity/_decrease_liquidity/_collect/_burn/_rebalance— conjunto completo de verbos LPprepare_curve_swap,prepare_curve_add_liquidityprepare_safe_tx_propose/_approve/_execute,submit_safe_tx_signature— flujo de propuesta multisig Safeprepare_custom_call— vía de escape para llamadas arbitrarias a contratos verificados (puertaacknowledgeNonProtocolTarget: true; omite la lista de permitidos de despacho canónico por diseño)prepare_tron_*— transferencias nativas + TRC-20, WithdrawBalance, Stake 2.0, votar, reclamar recompensas, aprobar TRC-20, swap LiFi, swap SunSwap (prepare_sunswap_swap)prepare_solana_nonce_init/_close— configuración/desmontaje de PDA de nonce duradero de una sola vezprepare_solana_native_send,_spl_send(incluye automáticamente la creación de ATA),prepare_solana_swap(Jupiter),prepare_solana_lifi_swapprepare_marginfi_init,_supply,_withdraw,_borrow,_repayprepare_kamino_init_user,_supply,_withdraw,_borrow,_repayprepare_marinade_stake/_unstake_immediate(se aplica comisión; ruta de ticket de desapuesta diferida),prepare_jito_stake(solo apuesta — desapuesta diferida),list_solana_validatorsprepare_native_stake_delegate/_deactivate/_withdraw— staking nativo de SOLprepare_btc_send,prepare_btc_rbf_bump,prepare_btc_multisig_send,register_btc_multisig_wallet/unregister_btc_multisig_wallet,combine_btc_psbts,sign_btc_multisig_psbt,finalize_btc_psbt,sign_message_btc,prepare_btc_lifi_swap,rescan_btc_accountprepare_litecoin_native_send,sign_message_ltc,rescan_ltc_accountpreview_send(EVM) — fija el gas, emiteLEDGER BLIND-SIGN HASHpara pre-coincidencia, acuñapreviewToken; requerido entre cadaprepare_*ysend_transactionde EVMpreview_solana_send— fija nonce/blockhash, calcula el Hash del Mensaje para coincidencia en el dispositivo, ejecuta simulación, emiteCHECKS PERFORMED; requerido entre cadaprepare_solana_*ysend_transactionsend_transaction— reenvía a Ledger (EVM vía WC, TRON/Solana/BTC/LTC vía USB HID)
Meta:
request_capability— reporta un problema de GitHub por funcionalidad faltante. Por defecto devuelve una URL prellenada (sin autoenvío); limitado a 3/horaset_etherscan_api_key,set_helius_api_key,set_demo_wallet,exit_demo_mode,get_demo_wallet,get_update_command— ajustes de tiempo de ejecución
Requisitos
- Node.js ≥ 18.17
- Lecturas de configuración cero: PublicNode (EVM) + mainnet pública de Solana — limitado por tasa pero suficiente para el primer contacto y uso ligero.
- Uso real: RPC personalizado (Infura / Alchemy / Helius / QuickNode / Triton) vía variables de entorno o
vaultpilot-mcp setup. - Claves opcionales (solicitadas bajo demanda): Etherscan, 1inch (habilita comparación de cotizaciones de swap), ID de proyecto WalletConnect (requerido para firma EVM con Ledger), TronGrid (eleva el límite anónimo de ~15 req/min).
- Firma TRON / Solana: acceso USB HID a un Ledger con la aplicación Tron / Solana instalada. Linux: instala las reglas udev de Ledger (
vaultpilot-mcp setupimprime el comando exacto de una línea). Debian/Ubuntu también necesitansudo apt install libudev-dev build-essentialpara quenode-hidcompile.
Instalación
Tres rutas — instrucciones completas, configuración del cliente MCP, manejo de Gatekeeper / SmartScreen, actualización / desinstalación en INSTALL.md.
| Ruta | Resumen |
|---|---|
| Binario empaquetado (sin Node) | Descarga desde la última versión, chmod +x, <binary> setup. |
| Desde npm | npm install -g vaultpilot-mcp && vaultpilot-mcp setup |
| Desde el código fuente | git clone https://github.com/szhygulin/vaultpilot-mcp.git && cd vaultpilot-mcp && npm install --legacy-peer-deps && npm run build && npm run setup |
Configuración
npm run setup
Selecciona proveedores de RPC, valida claves, opcionalmente empareja Ledger Live, escribe ~/.vaultpilot-mcp/config.json. Las variables de entorno anulan la configuración.
Modo demo
Prueba sin claves de RPC, emparejamiento de Ledger o el asistente:
claude mcp add vaultpilot-mcp --env VAULTPILOT_DEMO=true -- npx -y vaultpilot-mcp
--demo es el indicador CLI equivalente; las variables de entorno explícitas ganan, por lo que VAULTPILOT_DEMO=false es una exclusión determinista para invocaciones con script.
- Las lecturas se ejecutan contra RPC real; cada billetera es una persona pública curada (
whale,defi-degen,stable-saver,staking-maxi). send_transactiondevuelve un sobre de simulación: la transacción sin firmar se somete asimulate_transactionpara detección de reversión, nada se firma, nada se transmite.pair_ledger_*,request_capability,sign_message_*se rechazan directamente. Sin persona seleccionada, las herramientas de clase de firma se rechazan con un error estructurado que apunta aset_demo_wallet.- Los flujos de múltiples pasos cuyas precondiciones son cambios de estado (por ejemplo,
prepare_solana_nonce_init→marinade_stake) no se pueden ensayar de extremo a extremo — los envíos simulados no mutan el estado de la cadena. El MCP muestra una pista de una sola vez cuando detecta la trampa del bucle de agente.
get_demo_wallet lista personas + direcciones + rehearsableFlows. set_demo_wallet({ persona }) activa una. El estado es local al proceso. exit_demo_mode devuelve una guía de transferencia para la configuración permanente. La demo es un andamiaje para el primer contacto, no un sandbox — sin superposición de cadena virtual.
Para la limitación de RPC de Solana bajo expansión de múltiples herramientas, inyecta una clave Helius en tiempo de ejecución: set_helius_api_key({ key }). El modo demo avisa proactivamente después de 10 errores de limitación de RPC público.
Uso con Claude Code (CLI) / Cursor / Claude Desktop
vaultpilot-mcp setup detecta clientes instalados y registra vaultpilot-mcp con cada uno (las configuraciones existentes se respaldan en <file>.vaultpilot.bak). Las configuraciones por proyecto / por espacio de trabajo se omiten — el asistente se ejecuta desde cualquier directorio de trabajo actual. Para la configuración manual o las rutas de configuración por cliente, consulta INSTALL.md §5.
Chat de Claude.ai — limitación. El MCP stdio local instalado vía el asistente se registra limpiamente con la aplicación de escritorio nativa de Claude.ai, pero la lista de permitidos de HTTP saliente del entorno anfitrión bloquea los proveedores de RPC de cadena (PublicNode, mainnet pública de Solana, Alchemy, Helius, etc.). El MCP se inicializa y procesa llamadas de herramientas, pero cada lectura que alcanza un RPC externo falla con 403 / "Host not in allowlist". Lo mismo aplica a Claude Code ejecutándose dentro del sandbox en la nube de Claude.ai. Funciona hoy: Claude Code CLI en tu terminal, Cursor, Claude Desktop en un anfitrión con HTTP saliente sin restricciones. Futuro: un endpoint MCP alojado (hoja de ruta, aún no lanzado) dará al chat de Claude.ai un backend sin restricciones de red; la firma USB-HID de TRON / Solana / Bitcoin / Litecoin requiere un Ledger local y permanece en la ruta de CLI de terminal / Cursor independientemente.
Variables de entorno
Todas opcionales si el campo correspondiente está en ~/.vaultpilot-mcp/config.json; las variables de entorno ganan.
ETHEREUM_RPC_URL,ARBITRUM_RPC_URL,POLYGON_RPC_URL,BASE_RPC_URL,SOLANA_RPC_URL— endpoints RPC personalizadosRPC_PROVIDER(infura|alchemy) +RPC_API_KEY— alternativa a URLs personalizadasETHERSCAN_API_KEY,ONEINCH_API_KEY,TRON_API_KEY,WALLETCONNECT_PROJECT_IDRPC_BATCH=1— opta por el procesamiento por lotes JSON-RPC (desactivado por defecto; muchos endpoints públicos manejan mal los POST por lotes)VAULTPILOT_ALLOW_INSECURE_RPC=1— opta por no realizar verificaciones de RPC https/IP privada (solo anvil/hardhat local)VAULTPILOT_FEEDBACK_ENDPOINT— proxy https opcional para POST directos derequest_capability. El cliente no autentica; el proxy DEBE hacerlo.VAULTPILOT_SKILL_MARKER_PATH— suprime el aviso de habilidad previa al vuelo (usuarios de solo lectura que optan)VAULTPILOT_DISABLE_SKILL_AUTOINSTALL=1— omite lagit cloneperezosa de primera ejecución de habilidades complementarias (sin conexión / sin salida)VAULTPILOT_DEMO=true— habilita el modo demo; solo literal"true", otros valores rechazadosVAULTPILOT_DISABLE_UPDATE_CHECK=1— omite la verificación de actualizaciónregistry.npmjs.orguna vez por sesión (sin conexión)
Desarrollo
npm run dev # tsc --watch
npm test # vitest run
npm run test:watch
Contribuciones
Se aceptan PRs. El bot de CLA Assistant te pedirá firmar el Acuerdo de Licencia de Contribuyente en tu primer PR — una firma cubre todos los PRs futuros. El CLA otorga al proyecto el derecho de relicenciar tu contribución; sin él, la conversión automática BUSL-1.1 → Apache 2.0 en 2030 se estancaría. El propietario del repositorio y Dependabot están exentos.
Licencia
Business Source License 1.1 — consulta LICENSE.
- El uso personal de autocustodia es gratuito, incluidos rendimiento / swap / préstamo / staking en tu propio nombre.
- El uso organizacional interno es gratuito.
- Los servicios alojados y la redistribución integrada requieren una licencia comercial — abre un problema o contacta al mantenedor.
- Se convierte automáticamente a Apache 2.0 el 2030-04-26. Las restricciones de cada versión expiran cuatro años después del lanzamiento.
- Las versiones ≤ 0.8.2 permanecen bajo MIT. El cambio de licencia aplica desde v0.9.0 en adelante.