h@llo.ai - Upcoming AI Features

hi @Andreas_Hegenberg, I tried the exact same prompt as the one in the video you shared and it caused BTT to crash.

Here's my BTT info:

  • Device: MacBook Pro (14-inch, 2021)
  • macOS: 26.3.1 (25D2128)
  • BTT Version: 6.252 (2026031207)
  • Alpha: 0 update(s) behind latest Alpha version 6.252 (2026031207).
  • Regular: Installed version is ahead of latest Regular version 6.176.

BetterTouchTool-2026-03-12-210156.ips (47.6 KB)

@fortred2 thanks I think that crash should be resolved in >= 6.253

Quick question. If you accidentally dismiss or hide the AI configuration assistant (Ask AI), how do you get it back?

you can right-click the toolbar and choose "customize toolbar", them you can drag the button back

That worked perfectly! Thank you so much. Out of curiosity, is it just me or is the formatting of the AI assistant off? It seems to be ok sometimes and then others the input text line is off and there is a weird whitespace at the end:

I tried using the Ask AI feature with “google/gemma-4-e4b” model in LM Studio local server, but got the error “Conversation stopped: Maximum conversation time reached (600.0s)”. And the second time I tried the same prompt, it finished barely under 10 minutes. Is there an option to remove or increase that 10 minute timeout?

Currently not, but I'll make it configurable.

Cool, thanks.

am I dumb? I’m struggling to get it working with OpenRouter. I’ve tried both the Cloud API (which I thought would be right initially) and Local Model setup flows in the wizard. But for all my wangling and twingling of various URLS and what have you, I get errors like No user or org id found in auth cookie (on the latter) and The data couldn’t be read because it isn’t in the correct format. (on the former).

anyone else managed to get this working? The feature looks so kick-ass, I can’t wait to offload my remaining cognitive faculties off to it haha

I haven't tried openrouter yet, I'll have a look!

I just tried open router, but it is working fine here. The URL for the openai compatible endpoint would be

https://openrouter.ai/api/v1/chat/completions

Btw, with LM Studio, I keep seeing error messages like the following one in the server log, within multiple requests from the same conversation, which seem to be contributing to it taking so long to finish. Is there some permission option I need to enable?

Tool execution failed for ai.lookup_btt_action_definition: Tool not found: ai.lookup_btt_action_definition

Here is the end of the last request it made:

  "model": "google/gemma-4-e4b",
  "tool_choice": "auto",
  "stream_options": {
    "include_usage": true
  },
  "stream": true,
  "messages": [
    {
      "role": "system",
      "content": "You are the BetterTouchTool Configuration Assistan... <Truncated in logs> ...dgets, Stream Deck plugins, and Touch Bar plugins."
    },
    {
      "role": "user",
      "content": "Create a keyboard shortcut ctrl+cmd+shift+d that t... <Truncated in logs> ... only AppleScript (i.e. without using JavaScript)."
    },
    {
      "content": "",
      "tool_calls": [
        {
          "id": "256704356",
          "type": "function",
          "function": {
            "arguments": "{}",
            "name": "ai.lookup_btt_action_definition"
          }
        }
      ],
      "role": "assistant"
    },
    {
      "role": "tool",
      "tool_call_id": "256704356",
      "content": "Tool execution failed for ai.lookup_btt_action_definition: Tool not found: ai.lookup_btt_action_definition"
    },
    {
      "role": "assistant",
      "tool_calls": [
        {
          "id": "149658289",
          "function": {
            "name": "ai.lookup_btt_action_definition",
            "arguments": "{}"
          },
          "type": "function"
        }
      ],
      "content": ""
    },
    {
      "tool_call_id": "149658289",
      "content": "Tool execution failed for ai.lookup_btt_action_definition: Tool not found: ai.lookup_btt_action_definition",
      "role": "tool"
    },
    {
      "role": "assistant",
      "content": "",
      "tool_calls": [
        {
          "type": "function",
          "id": "250304468",
          "function": {
            "name": "ai.search_bettertouchtool.documentation",
            "arguments": "{\"search_input\":\"run apple script as btt action\"}"
          }
        }
      ]
    },
    {
      "content": "Tool execution failed for ai.search_bettertouchtoo... <Truncated in logs> ...not found: ai.search_bettertouchtool.documentation",
      "role": "tool",
      "tool_call_id": "250304468"
    },
    {
      "tool_calls": [
        {
          "id": "463541159",
          "type": "function",
          "function": {
            "arguments": "{}",
            "name": "ai.lookup_btt_action_definition"
          }
        }
      ],
      "role": "assistant",
      "content": ""
    },
    {
      "content": "Tool execution failed for ai.lookup_btt_action_definition: Tool not found: ai.lookup_btt_action_definition",
      "role": "tool",
      "tool_call_id": "463541159"
    }
  ]

And this is also happening even after I configure the AI Assistant and its skills (which I just saw in the related documentation page). Could that error be due to the “ai.” or “ai_” prefix it’s using for the tool names in the request? Because I don’t see those prefixes in the tools list under AI Configuration → Skills tab in the main settings window or in the Ask AI → Brain → Skills tab (where BTT Expert Floating Menu & Widget Creator are enabled by default, and any changes to the toggles there don’t seem to be saved after closing that panel).

yes seems like the model doesn't understand the instructions. I'll try the google/gemma-4-e4b model later today! Especially for these small models tuning the system prompt might be necessary to get them to work.

Also, those LLM requests always contain long definitions for this short list of tools:

run_javascript
compile_swift_plugin
memory_save
memory_recall
memory_forget
sequential_thinking
file_write
web_fetch
web_search

which doesn’t include the tools it’s trying to use in the errors above, and it doesn’t match the tools shown in the AI skills config menu. Is including all those definitions in each request necessary when it probably won’t use most of them and the ones it tries to use are not in there anyway?

Example tool definition in the request:

"tools": [
...
{
  "type": "function",
  "function": {
    "description": "Fetch content from a URL and return it in the spec... <Truncated in logs> ...L\n- json: Pretty-printed JSON (for JSON responses)",
    "parameters": {
      "properties": {
        "timeout": {
          "type": "integer",
          "description": "Request timeout in seconds (default: 30)"
        },
        "offset": {
          "type": "integer",
          "description": "Character offset to start reading from (default: 0). Use to paginate through large responses."
        },
        "length": {
          "description": "Max characters to return (default: 50000). Use with offset to paginate.",
          "type": "integer"
        },
        "url": {
          "type": "string",
          "description": "The URL to fetch content from"
        },
        "format": {
          "description": "Output format: text, markdown, html, or json",
          "type": "string"
        }
      },
      "required": [
        "url"
      ],
      "type": "object"
    },
    "name": "web_fetch"
  }
},

BTT uses all of the tools mentioned in the errors above through the run_javascript tool. That one needs to be included all the time, it is the base for all other tools. The others you mention are optional and are defined by the activated skills.

The problem with the google/gemma-4-e4b is that it doesn't understand the current instructions correctly (it is just a quite bit less intelligent than the larger models, which is expected :-)). I'll do some more testing on whether we can steer it to produce something useful.

1 Like