Skip to content

Configuration keys

Speedwave stores its config at ~/.speedwave/config.json. A project can also carry a repo-level .speedwave.json, which is merged in but restricted to a narrow subset (see what the repo file may set). If you are tuning container memory or CPU limits, this is the reference the performance guide points you to.

KeyMeaning
projectsAll registered projects. Each entry is described below.
active_projectName of the currently active project.
selected_ideThe IDE picked for the IDE bridge: an ide_name and a port.
ui.beta_enabledTurns on work-in-progress UI surfaces in the Desktop app. Off by default. User-only, a repo file cannot set it.
telemetryOTLP telemetry export settings. User-only, a repo file cannot set it. See below.

Each item in projects[]:

KeyMeaning
nameProject name.
dirAbsolute project directory on the host.
claudeOverrides for the container Speedwave runs Claude Code in. See below.
integrationsPer-project integration toggles. See below.
plugin_settingsPer-plugin settings values, keyed by plugin slug.
KeyMeaning
claude.envEnvironment variables passed to Claude Code in the container.
claude.settingsPatch merged into ~/.claude/settings.json.
claude.llmLLM provider and model configuration. See below.

claude.env in the repo layer has two sets of keys stripped before merge: the Anthropic auth and routing keys (ANTHROPIC_BASE_URL, ANTHROPIC_AUTH_TOKEN, ANTHROPIC_CUSTOM_HEADERS), and a reserved list covering things like PATH, HOME, LD_PRELOAD, and NODE_OPTIONS. ANTHROPIC_MODEL is the one Anthropic key a repo may still set. For the full variable list and where each one applies, see environment variables.

claude.llm carries both legacy flat fields and the current provider-list fields. The schema is versioned; the app writes version 3.

KeyMeaning
schema_versionLLM schema version. Absent means legacy v1.
providersConfigured providers. Each entry has an id, a kind, and per-provider model. See below.
activeActive provider and model pointer for a project’s sessions.
proxy_enabledProxy kill-switch. Defaults to true. User-only.
providerLegacy flat provider id. Auto-migrated.
modelLegacy flat model id. Auto-migrated.
base_urlLegacy flat base URL for a local server. Auto-migrated.
context_tokensLegacy flat context window, in tokens.
has_api_keyLegacy presence flag for an API key file.
has_custom_headersLegacy presence flag for a custom-headers file.
KeyMeaning
idSlug for this provider. Also names its token file and its SPW_KEY_<ID> env var.
kindBackend class: anthropic_oauth, anthropic_api_key, local, or open_router.
base_urlBase URL, for the local kind.
modelModel this provider routes. The source of truth for routing.
has_api_keyTrue when the provider’s key file exists on disk.
context_tokensContext window of this provider’s model, when known.
has_custom_headersTrue when a migrated local entry’s custom-headers file applies.
KeyMeaning
provider_idThe id of the selected providers[] entry.
modelPointer to the active provider’s model, not the routing authority. If the provider entry has no model, an active-only model is dropped.

integrations holds per-project enable toggles, each { "enabled": <bool> }. All defaults are disabled.

KeyMeaning
integrations.slackSlack
integrations.sharepointSharePoint
integrations.redmineRedmine
integrations.gitlabGitLab
integrations.githubGitHub
integrations.atlassianAtlassian
integrations.officeOffice documents
integrations.playwrightPlaywright
integrations.context7Context7
integrations.os.remindersmacOS Reminders
integrations.os.calendarmacOS Calendar
integrations.os.mailmacOS Mail
integrations.os.notesmacOS Notes
integrations.plugins.<slug>Toggle for an installed plugin.

telemetry configures OTLP export for Speedwave’s own metrics and logs. It is a top-level, user-only key: a repo .speedwave.json cannot set it. The Desktop app exposes the same fields under Settings > Telemetry.

KeyMeaningDefault
telemetry.enabledMaster switch. When true, an endpoint is required or resolution fails with an error.false
telemetry.endpointOTLP collector endpoint URL.none
telemetry.protocolTransport: grpc, http/protobuf, or http/json.grpc
telemetry.export_metricsExport the metrics signal.true
telemetry.export_logsExport the logs/events signal.false
telemetry.headersCollector auth headers, Key=Value,.... Secret.none
telemetry.resource_attributesCustom resource attributes, key=value,....none
telemetry.include_account_uuidInclude the account UUID as a metric attribute.true
telemetry.log_user_promptsPrivacy gate: include user prompt content.false
telemetry.log_assistant_responsesPrivacy gate: include assistant response content.false
telemetry.log_tool_detailsPrivacy gate: include tool command and parameter details.false
telemetry.log_raw_api_bodiesPrivacy gate: include raw API request and response bodies.false
telemetry.metric_export_interval_msMetrics export interval, in milliseconds.provider default
telemetry.logs_export_interval_msLogs export interval, in milliseconds.provider default

When enabled is false, Speedwave emits only the CLAUDE_CODE_ENABLE_TELEMETRY master-switch variable and nothing else. When it is true, it also emits OTEL_EXPORTER_OTLP_ENDPOINT, OTEL_EXPORTER_OTLP_PROTOCOL, OTEL_EXPORTER_OTLP_HEADERS, OTEL_RESOURCE_ATTRIBUTES, OTEL_METRICS_INCLUDE_ACCOUNT_UUID, the four OTEL_LOG_* privacy-gate variables, and the two export-interval variables. See environment variables for where these apply.

An IT admin can lock any of these fields from a device-level managed-config.json (macOS: /Library/Application Support/Speedwave/managed-config.json; Windows: <ProgramData>/Speedwave/managed-config.json). A locked field always wins over the user’s telemetry config, the file rejects unknown keys outright, and a malformed or unresolvable policy is caught at startup and stops Speedwave from launching rather than falling back silently.

A checked-in .speedwave.json is parsed with only claude and integrations, and is sanitized further on merge.

KeyRepo layer
claude.env ANTHROPIC_MODELAllowed
claude.env Anthropic auth/routing keysStripped
claude.env reserved keys (PATH, LD_PRELOAD, and similar)Stripped
claude.llm.modelAllowed, as a suggestion
claude.llm.provider / base_url / context_tokensIgnored
claude.llm.providers / activeIgnored, user-only
claude.llm.proxy_enabledIgnored, user-only
integrations.*Allowed
ui.beta_enabled, telemetry, projects, active_project, selected_ide, plugin_settingsNot present in the repo schema