wingman.config.json
The global config lives at .wingman/wingman.config.json. It controls logging, providers, gateway settings, search, voice, and agent bindings.
JSON Schema
Published schema URL:
https://getwingmanai.com/schemas/wingman.config.schema.json
Add this to your config file for editor validation/autocomplete:
Example
Agents list vs filesystem discovery
Agent definitions are discovered from the filesystem under .wingman/agents/<agent-id>/ (via agent.json or agent.md). The agents block in wingman.config.json is optional, but it is the gateway’s source of truth for routing and metadata.
Why you would use agents.list:
- Set a default agent for routing when no binding matches.
- Provide friendly display names in the Control UI / HTTP API.
- Assign a per‑agent workspace so an agent can run against a different repo.
Why you would use agents.bindings:
- Route inbound messages (Discord, Teams, web UI, webhooks) to a specific agent by channel/peer metadata.
Minimal example:
Key sections
- logLevel:
debug | info | warn | error | silent - defaultAgent: agent name used when
--agentis omitted - recursionLimit: maximum reasoning steps for agents (default 5000)
- summarization: conversation-history compression settings
- modelRetry: retry failed model calls with backoff
- toolRetry: retry failed tool calls (optionally scoped to named tools)
- humanInTheLoop: per-tool approval/interrupt policies
- search: provider and max results for the
internet_searchtool - voice: global voice settings; can be overridden per-agent
- cli: CLI theme and output mode (
auto | interactive | json) - skills: skill sources (
hybrid,clawhub, orgithub), ordered GitHub repos, optional legacy GitHub repo fallback, and local install directory - browser: named persistent profile + extension settings for
browser_control - gateway: host, port, auth, control UI, adapters
- agents: optional list/bindings used by the gateway for routing
- mcp: global MCP server definitions
For adapter-specific fields and setup:
Browser settings
browser keys in wingman.config.json control profile and extension mappings for browser_control:
profilesDir,profiles,defaultProfile,transportextensionsDir,extensions,defaultExtensionsrelay.enabled,relay.host,relay.port,relay.requireAuth,relay.authToken,relay.maxMessageBytes
For full setup steps, login bootstrap, command examples, and troubleshooting, see: Browser Automation, Playwright Setup, and Relay Setup.
Summarization settings
Wingman uses DeepAgents' built-in conversation summarization middleware so long-running threads are compressed instead of continuously expanding context.
- Omit
summarizationentirely to use DeepAgents' out-of-the-box defaults. summarization.enabled: explicitly turn conversation compression on/off.summarization.maxTokensBeforeSummary: optional Wingman override for the summarization trigger threshold.summarization.messagesToKeep: optional Wingman override for how many recent messages stay verbatim after summarization.
Retry middleware settings
Wingman can apply LangChain retry middleware for model and tool failures.
modelRetry.enabled(defaulttrue): enablesmodelRetryMiddleware.toolRetry.enabled: enablestoolRetryMiddleware.- Shared retry controls:
maxRetriesbackoffFactorinitialDelayMsmaxDelayMsjitteronFailure(continueorerror)
toolRetry.tools: optional list of tool names to restrict retries to.
Human-in-the-loop settings
Use humanInTheLoop.interruptOn to configure tool-specific approval:
true: require approval with default decisions.false: auto-approve this tool.- object:
allowedDecisions: any ofapprove,edit,rejectdescription: optional custom approval promptargsSchema: optional argument schema for edit flows
HITL is active only when:
humanInTheLoop.enabledistrue, andinterruptOncontains at least one tool entry.
If interruptOn is empty, no runtime interruptions are applied.
Example:
Practical pattern:
- Gate high-impact tools (
command_execute,background_terminal,node_run). - Keep low-risk read tools unblocked unless your environment requires review.
- Use
descriptionto explain why approval is required for each tool.
For agent-specific configuration, see the Agents guide.
