Skip to content

⚙️ Configuración (Desktop)

Esta página documenta dónde y cómo se guardan los ajustes de Context Code Desktop: providers, modelos, secretos, apariencia, voices y atajos. Para la configuración por chat (permisos por sesión, modo plan, providers por chat) consulta: /desktop/permisos.


🗂️ Dónde se guardan los ajustes

La app usa dos niveles de persistencia:

Frontend — localStorage (preferencias de UI)

Ubicado en el perfil del WebView. Claves principales (en src/App.tsx:161-689):

  • desktop_panels_reset_v8 — estado de reset de paneles.
  • desktop_sidebar_width, desktop_dock_width, desktop_terminal_dock_width — anchos de paneles laterales.
  • desktop_sidebar_collapsed — sidebar plegado.
  • desktop_show_floating_panel, desktop_show_token_usage_panel — visibilidad de paneles flotantes.
  • desktop_pinned_workspace_ids — workspaces fijados.
  • desktop_window_maximized — estado maximizado.
  • desktop_allow_no_cli, desktop_core_runtime_enabled — modos de motor.
  • context-code-bridge-linked-chat, context-code-bridge-allowlist-whatsapp — bridges (WhatsApp/Telegram).

Backend Rust — SQLite cifrado

Ubicado en %LOCALAPPDATA%/ContextCodeDesktop/ (Windows) o ~/.local/share/ContextCodeDesktop/ (Linux/Mac).

Archivos:

  • provider-state.sqlite3 — perfiles de proveedores, modelos, base_url, last_model, perfil activo.
  • secure_storage (tabla) — API keys cifradas con AES-256-GCM (core/auth.rs:3,75). El bridge (WhatsApp/Telegram) usa campos propios dentro de la misma tabla (commands/bridge.rs:34,93).
  • .mcp.json y settings.json — configuración de servidores MCP y skills; editados directamente por la UI de Skills/MCP (commands/mcp_skills.rs:94-316).

🧠 Panel de Configuración por Chat (ChatConfigEditor)

src/components/ChatConfigEditor.tsx ofrece 5 pestañas para configurar el chat activo:

1. Models (proveedor + modelo)

  • Selector de proveedor estilo "tema": dropdown agrupado (Nube OAuth / API Keys / Local) con logos, descripciones y estado de conexión (ProviderSelector).
  • Selector de modelo: dropdown con recomendados, disponibles y opción "personalizado" (ModelSelector).
  • Configuración de credencial: API key inline (cifrada al guardar), botón de OAuth para Claude/OpenAI/Gemini, base URL custom para Ollama/LM Studio/Bedrock/Vertex/Foundry.

Lista de proveedores soportados (src/components/chatConfig/providerMeta.tsx):

  • OAuth (☁️): Anthropic Claude, OpenAI GPT, Gemini Google.
  • API Key (🔑): FreeModel, Gemini API, OpenRouter, Nvidia NIM, Zhipu AI (ZAI), MiniMax AI, Amazon Bedrock, Google Vertex AI, Azure AI Foundry, DeepSeek, xAI (Grok), GMI Cloud, NovitaAI, StepFun, HuggingFace, OpenCode Zen, Arcee AI, Alibaba (Qwen), Kimi (Moonshot).
  • Local (💻): Ollama, LM Studio.

2. TTS (text-to-speech)

  • TtsSettings con catálogo de voces del sistema y Edge TTS.
  • Configuración: voz por defecto, velocidad, tono, idioma preferido.
  • Almacenamiento: lib/speechUtils.ts.

3. STT (speech-to-text)

  • SttSettings con Whisper local y Edge.
  • Whisper descarga el modelo bajo demanda (evento whisper://download); Edge usa el servicio de Microsoft.
  • Permisos: requiere acceso a micrófono (Windows: WebView2 / Mac: TCC).

4. Permissions

  • Toggles filesystem | shell | network | confirmations.
  • Presets: ReadOnly, SafeEdit (default), FullPower.
  • Ver: /desktop/permisos.

5. Appearance (tema, fuente)

  • Selector de tema (ThemeSelector): 28+ built-in (Context Code, Light, Dark, Solarized, Dracula, Nord, High-Contrast, Sepia, Midnight, Forest, Monokai, Gruvbox, Tokyo Night, Catppuccin, One Dark, GitHub Light/Dark/Dimmed/High-Contrast, Rose Pine, Ayu Dark, Material, Synthwave, Cobalt, Everforest).
  • Crear / editar / borrar temas personalizados (vía upsertCustomTheme / deleteCustomTheme).
  • Fuente y tamaño de fuente: FONT_FAMILY_OPTIONS y FONT_SIZE_OPTIONS.

🔐 Gestión de secretos

  • API keys: se almacenan en la tabla secure_storage cifradas con AES-256-GCM. La passphrase se deriva del perfil de usuario (no expuesta al frontend).
  • Variables de entorno: si defines ANTHROPIC_API_KEY, OPENAI_API_KEY, etc., tienen prioridad sobre el almacenamiento seguro (env_api_key en core/config.rs:540).
  • Bridge tokens (WhatsApp/Telegram): cifrados en secure_storage con un campo por bridge; gestión desde el panel BridgesPanel.

No uses tauri-plugin-stronghold ni keyring del sistema: el cifrado es local-first (no depende del llavero del SO).


🧾 Settings y MCP

La app lee/escribe directamente settings.json y .mcp.json del workspace activo. Estos archivos siguen la convención del CLI:

  • settings.jsonpermissions, enableAllProjectMcpServers, etc.
  • .mcp.json — declaración de servidores MCP (stdio/sse).

Edítalos desde la UI de Skills/MCP (SkillsMcpPanel.tsx + SkillsGallery.tsx); los cambios se sincronizan con el CLI embebido y con el motor nativo.

Ver: /desktop/mcp.

Desarrollado con pasión e Inteligencia Artificial.