WrengleWrengle
AI agents

AI agents

Beta

The assistant panel uses one conversation workflow for built-in chat backends and external ACP agents: the same composer, attached context, transcript, tool cards, permission prompts, edit review, and saved-conversation controls. Use the Run with picker in the composer footer to choose a backend. The built-in assistant defaults to Auto.

Run with choiceWhat it is
Auto (default)Uses the most recently connected or successfully verified AI key confirmed available in the OS keychain; otherwise checks OpenAI → Anthropic → Wrengle Local. The panel shows the effective provider and model.
wrengle LocalThe built-in local assistant, hosted through ACP. It uses Wrengle's managed local model path and can chat with current-note context.
OpenAIA built-in BYOK assistant, hosted through ACP. It uses the OpenAI key configured in Wrengle settings and can request note reads/edits through the same permission flow as other ACP agents.
AnthropicA built-in BYOK assistant, hosted through ACP. It uses the Anthropic key configured in Wrengle settings and can request note reads/edits through the same permission flow as other ACP agents.
External ACP agentA separate coding-agent CLI (Claude Code, Gemini, Codex, ...) hosted in the panel over the Agent Client Protocol. Wrengle launches it as a local subprocess. Agents with the required MCP capability can also use Wrengle's vault-scoped note tools.

The persistent Agent and Terminal tabs in the right panel's header bar switch between the assistant and the embedded shell. Terminal is a destination, not an assistant backend. Switching views does not stop the current agent conversation or running terminal sessions. The tabs remain available even when no plugin panels are installed.

The shared interface does not make every backend equally capable. Wrengle enables only the continuation, MCP, tool, and review behavior supported by the selected backend and reports when a saved conversation can be displayed but not resumed.

Continuing saved conversations

Wrengle Local, OpenAI, and Anthropic keep bounded user-and-assistant history across turns. Opening a saved built-in conversation restores that bounded history so a follow-up can continue the earlier discussion. Live permission requests, pending tool calls, and other unsettled protocol state are not replayed. New Thread starts without the earlier conversation context.

For an external ACP conversation, Wrengle first tries the agent's advertised sessionCapabilities.resume support and then its top-level loadSession support. If neither capability is available, or the continuation request fails, Wrengle keeps the saved transcript visible but starts a new ACP session and shows a transcript-only notice. In that fallback, the displayed transcript is reference material for you; it is not silently injected into the new agent session.

Automatic backend selection

Auto prefers the AI provider whose key was most recently connected or successfully verified as available in the OS keychain. If that provider is unavailable, or an older installation has no provider-history hint, Auto checks connected OpenAI and Anthropic keys in that order, uses the chosen provider's catalog default model, and finally falls back to a selectable Wrengle Local model.

Only a key reported as connected and readable from the OS keychain qualifies. This does not validate the key with the provider: invalid, revoked, or quota-exhausted credentials can still fail when a request is made. Adding, replacing, or removing a key re-resolves Auto; an explicit Wrengle Local, provider, or external-agent selection remains sticky. Resetting the assistant backend returns it to Auto. If an explicitly selected cloud provider loses its key, Wrengle reports that credential as missing instead of showing a local-model download warning or silently changing backends.

Auto can therefore select a cloud assistant as soon as a connected key is available. Cloud assistants can receive the prompt and any approved note or workspace context needed for the request. Choosing Wrengle Local keeps that assistant inference on the device. Turning Cloud voice features off affects automatic voice speech and analysis routes, not the separately selected or Auto-resolved assistant.

Cloud model catalog

Wrengle offers a curated set of models that has been checked against its chat, structured-output, and note-tool request paths. It does not mirror every model returned by a provider's model-list API.

ProviderSelectable modelsWrengle default
OpenAIGPT-5.6 Luna, GPT-5.6 Terra, GPT-5.6 SolGPT-5.6 Luna
AnthropicClaude Opus 5, Claude Sonnet 5, Claude Haiku 4.5Claude Sonnet 5

Only current models are offered for new selections in Settings → Models, the assistant's Run with picker, workflow AI steps, and cloud voice analysis. Existing explicit selections of an older catalog model remain unchanged and are shown only as a saved compatibility choice until you select a current model. An OpenAI route left on Auto or Wrengle default resolves to GPT-5.6 Luna.

A previously persisted custom model ID can remain visible under Saved model (unreviewed compatibility). It is not part of the curated catalog, may not have Wrengle's current request guarantees, and can be rejected by the provider or by Wrengle's safety checks.

The OpenAI GPT-5.6 alias is not listed separately: Wrengle uses the explicit Luna, Terra, and Sol IDs so the selected cost, latency, and quality tier stays visible. Provider access, regional availability, rate limits, and charges still depend on your API account. Changing the default can therefore change request behavior and cost even when you do not edit a saved Auto selection; consult the provider's current pricing before using cloud models for high-volume workflows.

Claude Fable 5 is not offered in this release. Its mandatory 30-day retention and refusal behavior require a dedicated privacy and fallback design before Wrengle can add it safely. Invitation-only and unreviewed models, including Mythos 5, are also excluded from the catalog; Fable and Mythos IDs are blocked at dispatch even if they remain in an older saved setting.

Dictating assistant prompts

Focus the assistant composer and start the selected voice mode with ⌘⇧V on macOS or Ctrl+Shift+V on other platforms. You can also hold ⌘⇧D / Ctrl+Shift+D for a temporary Quick Dictation session, then release to stop and commit the partial. Speech drafts editable text in the composer using the Verbatim or Light edit cleanup selected under Settings → Dictation. Wrengle does not send dictated assistant prompts automatically; review the draft and send it yourself.

In Quick Dictation, every trigger word is ordinary draft text. In Voice Control, the focused composer also converts trigger areas into drafting prefixes: saying agent summarize this drafts summarize this, and saying terminal run tests drafts run tests instead of executing a command. Use Voice Control from another focused surface when you want to send a request to the configured agent backend or control the editor, workspace, or terminal by voice.

AI agents in workflows

The Workflows canvas can use the default workspace model or a configured local or provider-backed model for an AI step. A cloud-backed AI step receives the workflow Goal, that step's instructions, and its upstream artifacts; a local model keeps those prompt inputs on-device.

Workflow Action, Terminal, and Coding agent steps remain human-gated. Terminal drafts run only after explicit submission with your normal operating-system permissions; orchestration does not sandbox them. Coding-agent targets are draft-only in this release, and terminal or coding-agent output is not automatically fed back into orchestration or other agents.

For workflow creation, starters, Dry run and Run behavior, scheduled activation, pinned live versions, privacy boundaries, and current operational limits, see Workflows and automations.

How external ACP agents work

When you select an ACP agent, Wrengle spawns its command as a local subprocess and speaks ACP over stdio. If the agent supports HTTP MCP, Wrengle also exposes the following host-managed tools through the same assistant workflow:

ToolBehaviorApproval
list_notesList a bounded set of Markdown note paths in the open vault.No approval
read_noteRead a vault-relative note as Markdown.No approval
read_note_blocksRead an existing note as anchored structured blocks for surgical edits.No approval
search_notesSearch the open vault by relevance, then return bounded matches.No approval
write_noteCreate a new note; it refuses to replace an existing note.Preview and approval required
edit_blocksPropose structured edits to an existing note.Preview and approval required
replace_selectionReplace the editor's current selection.Preview and approval required

MCP reads and searches are vault-scoped and do not require approval. read_note_blocks reports each block's nesting depth, parent, and whether it is directly editable. Supported code blocks also report language, using an empty string when no language is set; omitting language from an update preserves its current value, while an explicit empty string clears it. Surgical edit_blocks operations can target only blocks reported with editable: true, which are supported top-level blocks. Backtick code fences are editable only when their source exactly matches Wrengle's canonical writer format. Other valid backtick-fence forms remain grouped, shield anchors in their body, and are read-only; tilde-fenced and indented code remain opaque and cannot be targeted. Toggle containers and every nested descendant are read-only context. Updating an editable top-level list item preserves its existing descendants, while a direct operation against a nested list item or continuation paragraph is rejected instead of being silently ignored or moved. Editor-native review flows can replace a top-level list item as one complete subtree when a descendant change is needed. Every MCP create, edit, or selection replacement is previewed through Wrengle and requires explicit approval. Wrengle writes editor-canonical content, checks the current vault and note base again at commit time, and rejects stale, conflicting, or out-of-scope writes.

Structured block reads and edits fail closed when a note's Markdown body exceeds 262,144 physical lines. This bound prevents newline-dense notes within the 16 MiB file limit from consuming disproportionate memory; shorten the note before using read_note_blocks or edit_blocks.

Agents without HTTP MCP support remain file-only through Wrengle's ACP filesystem callbacks; they do not receive the named MCP note tools. Available behavior is therefore capability-qualified rather than inferred from the agent preset.

Wrengle's prompts and previews govern only work routed through Wrengle's host tools and ACP callbacks. The external agent subprocess is not an operating-system sandbox: it inherits the ambient file, command, process, and network permissions of the launched command and can use those permissions without a Wrengle approval card. Run only agent commands you trust.

For note edits, Wrengle previews the proposed document through the editor's Markdown-to-blocks codec before approval. When you approve an ACP note write, Wrengle writes the editor-canonical note content, not the raw text candidate from the agent. This keeps standard Markdown lists, checklists, tables, code blocks, headings, and block anchors aligned with the structured editor. If Wrengle cannot resolve a safe canonical note payload, it rejects the write instead of saving a lossy raw rewrite. Current ACP approvals write one canonical note payload at a time, so multi-note, batch edit, or existing-note frontmatter rewrite requests are rejected until they can be represented as separate approved writes.

The built-in OpenAI and Anthropic backends do not launch a subprocess. They use the API keys stored in Wrengle settings and still use ACP-style transcript, context, and permission UI in the assistant panel.

Reviewing note edits

Built-in assistants and MCP-capable external agents read existing notes as anchored blocks and propose surgical edits against those block IDs. Creating a new note uses the separate create-only write_note tool, so changing an existing table should update that table instead of reproducing the rest of the note or inserting a second table. File-only ACP agents can still use Wrengle's canonical whole-file review path when their filesystem callbacks produce a supported note proposal.

Wrengle shows supported changes inline before anything is written. Text blocks have their own Keep and Skip controls. A table is one approval block: its rows and changed cells are shown together, and Keep or Skip applies to the whole table. Row-level and cell-level approval are not available. Changes that move nested block identities, alter descendants, or include structure or styling that the inline diff cannot show use a whole-note preview so dependent operations are accepted or rejected together. Other structured changes that cannot be represented completely as safe block operations use the same Accept and Reject all fallback rather than silently omitting part of the proposal.

The final Accept action submits the changes that were not skipped. The editor keeps them provisional until the vault write is acknowledged. Wrengle rechecks the note at write time; if it changed after the preview was approved, the write fails and the editor reloads the newer disk content instead of overwriting it.

Requirements

External presets launch through npx, so they need Node.js 20 or newer with npx on your PATH; the current Gemini CLI declares Node 20 as its minimum. If Node is missing or older than 20, or npx is unavailable, Wrengle shows a "Node.js 20+ and npx required" notice instead of starting the agent. Built-in backends have no Node requirement.

Login and billing

Wrengle does not manage agent credentials. Each agent authenticates with its own CLI, and billing follows the account or API credential that CLI uses:

  • Claude Code — follow the current Claude Code authentication setup. Run claude auth login for a Claude account, claude auth login --console for an Anthropic Console account with API-usage billing, or supply an ANTHROPIC_API_KEY for API-key authentication.
  • Gemini CLI — Google ended Gemini CLI service for free, Google AI Pro, and Google AI Ultra individual accounts on 18 June 2026. The pinned Wrengle preset remains for eligible Gemini Code Assist organisation licences, GEMINI_API_KEY, and supported Google Cloud/Vertex authentication. Do not assume that an ordinary consumer Google sign-in still works.
  • Codex — follow the current Codex CLI authentication guide. Run codex login to sign in with ChatGPT. For API-key authentication, pipe the key to codex login --with-api-key (for example, printenv OPENAI_API_KEY | codex login --with-api-key); setting OPENAI_API_KEY alone is not the login step used by this preset.

To check or change which account an agent uses, run that CLI in a terminal (e.g. claude/status).

Add a built-in preset

Open Settings → Agents. Under the Add from preset label, click Add next to a preset. A confirmation dialog shows the exact command that will run on your machine before the agent is added:

PresetNotes
Claude CodeRuns npx -y @agentclientprotocol/claude-agent-acp@0.44.0. Added by default. Authenticate with claude auth login, claude auth login --console, or ANTHROPIC_API_KEY as appropriate.
Gemini CLIRuns npx -y @google/gemini-cli@0.46.0 --acp. Use an eligible Gemini Code Assist organisation licence, GEMINI_API_KEY, or supported Google Cloud/Vertex authentication; individual-account service ended on 18 June 2026.
CodexRuns npx -y @zed-industries/codex-acp@0.16.0 (the codex-acp adapter). Authenticate with codex login for ChatGPT or pipe an API key to codex login --with-api-key.

Each preset is added to your agent list and appears in the panel dropdown. Presets you've already added show a disabled Added button.

Custom subprocess agents are not enabled yet. The dropdown only starts built-in chat backends and approved external presets.

docs / ai-agentsAll documentation