Skip to content

Configuration keys

Speedwave maintains its global configuration in ~/.speedwave/config.json. Individual projects can also provide an optional .speedwave.json file in their repository, which is merged with global settings across a strictly limited scope (see repository configuration capabilities).

PropertyDescription
projectsList of registered projects. Entry structure is detailed below.
active_projectName of the currently active project.
selected_ideIDE selection for the IDE Bridge: ide_name and port.
ui.beta_enabledEnables early-stage features in the Desktop application. Also controls PII tokenization enforcement (see policy properties). Disabled by default; configured only by the user.
telemetryOTLP telemetry export configuration. Configured exclusively by the user. Detailed below.

Each item within projects[]:

PropertyDescription
nameProject name.
dirAbsolute path to the project directory on the host machine.
claudeConfiguration overrides for the container running Claude Code. Detailed below.
integrationsIntegration activation toggles for the project. Detailed below.
plugin_settingsPlugin configuration values indexed by plugin slug.
policyData protection and PII tokenization policies for the project. Detailed below.
PropertyDescription
claude.envEnvironment variables passed to Claude Code in the container.
claude.settingsValues merged into ~/.claude/settings.json.
claude.llmModel provider and routing configuration. Detailed below.

Before merging repository-level .speedwave.json settings into claude.env, two sets of properties are filtered out: Anthropic authorization and routing keys (ANTHROPIC_BASE_URL, ANTHROPIC_AUTH_TOKEN, ANTHROPIC_CUSTOM_HEADERS) and reserved system variables (PATH, HOME, LD_PRELOAD, NODE_OPTIONS, etc.). The only Anthropic variable a repository may set is ANTHROPIC_MODEL. For the complete list of variables and their scopes, see Environment variables.

The claude.llm section uses schema version 3, featuring structured provider arrays while maintaining backwards compatibility for earlier flat definitions.

PropertyDescription
schema_versionLLM configuration schema version (3). Absence indicates version 1.
providersConfigured provider entries. Each contains id, kind, and model fields. Detailed below.
activeActive provider and model selection for the project session.
proxy_enabledEmergency proxy kill-switch (defaults to true). Configured exclusively by the user.
providerLegacy flat provider identifier (migrated automatically).
modelLegacy flat model identifier (migrated automatically).
base_urlLegacy flat local server URL (migrated automatically).
context_tokensLegacy flat context window size in tokens.
has_api_keyLegacy flag indicating presence of an API key file.
has_custom_headersLegacy flag indicating presence of custom headers.
PropertyDescription
idProvider identifier (slug). Defines the token filename and the SPW_KEY_<ID> environment variable name.
kindProvider backend type: anthropic_oauth, anthropic_api_key, local, or open_router.
base_urlEndpoint URL for local provider types.
modelTarget model name used for routing decisions.
has_api_keySet to true when a provider key file exists on disk.
context_tokensModel context window size in tokens (if known).
has_custom_headersSet to true when custom headers are configured for a migrated local entry.
PropertyDescription
provider_idIdentifier id matching an entry in providers[].
modelSpecifies the active model. If the referenced provider entry does not specify a model, values configured solely in active are rejected.

The integrations section stores activation flags for individual integrations in the format { "enabled": <bool> }. All integrations are disabled by default.

PropertyDescription
integrations.slackSlack integration
integrations.sharepointSharePoint integration
integrations.redmineRedmine integration
integrations.gitlabGitLab integration
integrations.githubGitHub integration
integrations.atlassianAtlassian integration (Jira, Confluence)
integrations.officeOffice documents integration
integrations.playwrightPlaywright test automation
integrations.context7Context7 integration
integrations.os.remindersmacOS Reminders
integrations.os.calendarmacOS Calendar
integrations.os.mailmacOS Mail
integrations.os.notesmacOS Notes
integrations.plugins.<slug>Installed plugin activation toggle

The policy property configures PII tokenization policies for the project. Tokenization enforcement is active when ui.beta_enabled is true or when policies are mandated via MDM. When enforcement is active and policy is omitted, the default built-in setting tokenizes all seven standard rules.

PropertyDescription
policy.policiesEnabled policy identifiers: built-in strict, gdpr-art32, eu-ai-act-art5, or a custom identifier from policy.customPolicies.
policy.customPoliciesCustom policy definitions selected via policy.policies. Detailed below.
PropertyDescription
idUnique policy identifier (cannot conflict with built-in names).
nameHuman-readable name displayed in the Desktop application.
categories{tokenize, log} flags for each built-in rule. Omitted rules are disabled.
rulesCustom regex-based rules with {tokenize, log} flags and optional checksum validators (pesel, nip, iban, luhn).
keywordsKeyword substitutions: {match, alias, caseSensitive}. Matched terms are replaced with their assigned alias.

Organizations can also enforce policies globally using managed-config.json.

The telemetry section configures OTLP telemetry export for Speedwave metrics and logs. This is a top-level setting configured exclusively by the user; repository .speedwave.json files cannot set it.

PropertyDescriptionDefault
telemetry.enabledMaster telemetry toggle. When true, endpoint is required.false
telemetry.endpointOTLP collector destination URL.none
telemetry.protocolTransport protocol: grpc, http/protobuf, or http/json.grpc
telemetry.export_metricsEnables metrics export.true
telemetry.export_logsEnables log and event export.false
telemetry.headersCollector authentication headers in Key=Value,... format (sensitive).none
telemetry.resource_attributesCustom resource attributes in key=value,... format.none
telemetry.include_account_uuidIncludes user account UUID in exported metrics.true
telemetry.log_user_promptsPrivacy control: includes raw user prompt content.false
telemetry.log_assistant_responsesPrivacy control: includes assistant response text.false
telemetry.log_tool_detailsPrivacy control: includes tool parameters and commands.false
telemetry.log_raw_api_bodiesPrivacy control: includes 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 sets only the CLAUDE_CODE_ENABLE_TELEMETRY environment variable. When true, it also configures OTEL_EXPORTER_OTLP_ENDPOINT, OTEL_EXPORTER_OTLP_PROTOCOL, OTEL_EXPORTER_OTLP_HEADERS, OTEL_RESOURCE_ATTRIBUTES, OTEL_METRICS_INCLUDE_ACCOUNT_UUID, four OTEL_LOG_* privacy variables, and export interval values. See Environment variables for environmental scoping.

IT administrators can lock any of these settings using a system-level managed-config.json file (macOS: /Library/Application Support/Speedwave/managed-config.json; Windows: <ProgramData>/Speedwave/managed-config.json). Managed settings override user configurations. Invalid managed files or unresolvable policies halt startup to prevent fallback to less restrictive defaults.

The file also includes a forced_policies list specifying policy identifiers required for all projects. The presence of an identifier activates enforcement; unrecognized policy IDs halt project initialization.

What a repository .speedwave.json can configure

Section titled “What a repository .speedwave.json can configure”

Repository .speedwave.json files are parsed only for claude and integrations properties, subject to sanitization rules:

PropertyRepository handling
claude.env ANTHROPIC_MODELAllowed
claude.env Anthropic routing and auth keysRemoved during merge
claude.env reserved system variables (PATH, LD_PRELOAD, etc.)Removed during merge
claude.llm.modelAllowed (treated as a suggestion)
claude.llm.provider / base_url / context_tokensIgnored
claude.llm.providers / activeIgnored (user-only setting)
claude.llm.proxy_enabledIgnored (user-only setting)
integrations.*Allowed
ui.beta_enabled, telemetry, projects, active_project, selected_ide, plugin_settingsNot present in repository schema