Verzeta

Troubleshooting

This page covers the most common issues users hit and how to resolve them. For questions about features and intended behaviour, see Frequently asked questions.

Most errors from a model provider appear in a red banner at the top of the window. Errors from tools appear in the chat and in the Tool Log in the chat header. When this page quotes a message, @Name stands for the agent's alias and X for a program or file name.

1. Ollama is configured but does not reply / shows a connection error

Symptoms

Common causes and fixes

Pro-tip: The Ollama setup sheet's Test Connection button does the diagnostic call for you. Use it before sending the first chat.

2. A cloud provider returns 401, 403, or "Invalid API key"

Symptoms

Common causes and fixes

Note: API keys are stored in the settings file on this computer and are sent only to the provider they belong to. If a key was working and suddenly stops, check the provider's status page.

3. An agent loops on tool calls and never produces a final reply

Symptoms

Common causes and fixes

Pro-tip: To stop a reply at any time, click Stop (the Send button turns into Stop while a reply streams). The current request is cancelled and the cascade does not advance. Stop Task in the message bar stops every active task in the chat.

4. Android pairing fails or the Android client cannot connect

Symptoms

Common causes and fixes

Warning: When TLS is enabled and the fingerprint mismatches, the Android client refuses the connection by design. Do not click past the warning if it ever appears: it means someone might be impersonating the desktop. Verify the fingerprint on the desktop first.

5. Qwen 3.5 / 3.6 group-chat replies are truncated mid-sentence

Symptoms

Root cause

Qwen 3.5/3.6 models ship with aggressive sampling defaults in their bundled Ollama modelfile: presence_penalty = 1.5 and repeat_penalty = 1.1 on top of loose default sampling. In a long group-chat context those penalties push the model to end its reply after only a sentence or two, which looks like truncation. (The same conversation works on Gemma, and setting the presence penalty to 0 on Qwen fixes it.)

The fix: automatic

Verzeta Studio ships a per-model sampling profile that is applied automatically whenever a conversation uses Qwen 3.5/3.6 on Ollama:

temperature 0.6 · top_k 10 · top_p 0.5 · repeat_penalty 1.03
presence_penalty 0 · frequency_penalty 0

These values were chosen by testing them on real conversations. They stop the early cut-offs while keeping enough repetition penalty (repeat_penalty 1.03) that agents do not loop. You do not need to do anything: new and existing Qwen conversations get the profile by default.

Adjusting or opting out

Open Chat Settings and look for "Use app-recommended sampling":

If you opt out and truncation returns, tick the box again. If you want to experiment, keep repeat_penalty above 1.0 (at 1.0 agents repeat themselves) and below 1.04 (at 1.04 and above the cut-offs return). Any presence_penalty above 0 combined with a repeat penalty also brings truncation back.

Still seeing truncation?

  1. Confirm the conversation is using Ollama with a qwen3.5/qwen3.6 model (the checkbox only appears when a profile exists for the active provider and model).
  2. Confirm the box is checked in this conversation: the setting is per conversation.
  3. Check your Ollama server's context length (OLLAMA_CONTEXT_LENGTH); a very small value clamps the prompt on the server, which is a different problem with similar symptoms (see section 1).

6. Image generation produces nothing (no image, no error)

Symptoms

Check the provider type and Base URL

For OpenRouter and OpenAI Images, leave Base URL empty; the app uses the official endpoint. For other HTTP providers, enter the API base, for example https://my-server.example/v1. Verzeta adds the endpoint path itself (/images for OpenRouter, /images/generations for OpenAI-style, /chat/completions for chat models with image output, /sdapi/v1/txt2img for Automatic1111). If you paste a full endpoint URL instead, it is corrected.

Use the OpenRouter type for OpenRouter. It works with every OpenRouter image model, including image-only models such as Flux, Seedream and Ming, which OpenRouter does not serve through its chat endpoint.

Failures are shown in the chat

Image generation runs in the background after the tool call returns. A failure can be a misconfigured URL, a missing or rejected API key, a model that does not support image output, or a network error. Any of them is written into the conversation as a message beginning with "⚠ Image generation failed:" followed by the provider's reason. If you do not see an image, look for that message; it says what went wrong.

When an image succeeds, it appears in the chat and is saved into your project's files under images/ (the message names the file, e.g. Saved to project files: images/hero-banner-1a2b3c4d.png), so it shows up alongside the rest of the team's artifacts.

"No endpoints found that support the requested output modalities: image, text"

Most dedicated image-generation models (e.g. Flux, grok-imagine) output only an image and have no text output. Asking such a model for both image and text fails with this error. In the provider's setup sheet set Output to "Image only" (the default). Choose "Image + text" only for dual-output models like Gemini that also return a text caption.

Editing a generated image

Click a generated image to open the preview. When your active provider is an OpenRouter or chat-image provider (one whose model accepts a reference image), the preview shows AI refine controls: type an instruction ("make it night", "add a hat") and press Refine, or use a preset such as Variation. The edited image is sent back to the provider and arrives as a new image in the chat, so you can iterate. Refine is hidden for providers that don't accept image input (e.g. DALL-E images, Automatic1111).

Checklist

  1. Base URL is empty for OpenRouter and OpenAI Images, or the API base for other providers (the in-app field help shows the expected value).
  2. Model is an image model, for example black-forest-labs/flux.2-pro or google/gemini-2.5-flash-image on OpenRouter.
  3. For chat models with image output, Output matches the model: "Image only" for image-only models, "Image + text" for dual-output models.
  4. API key is present and valid; the Send credential in selector matches what the provider expects (header, URL query parameter, or request body).
  5. The provider is set active in Settings → Providers → Image Generation.

7. Verzeta Studio does not open, or closes straight away

Symptoms

Common causes and fixes

The log is at ~/.local/share/Verzeta/verzeta-studio/logs/verzeta-studio.log on Linux and %APPDATA%\Verzeta\verzeta-studio\logs\verzeta-studio.log on Windows. On Linux the same lines are also printed in the terminal if you start the app from one.

8. An agent's shell command is refused

Agents run command-line programs through the shell tool. Refusals appear in the Tool Log and are passed back to the agent.

9. Canvas Run problems

10. The built-in local engine does not reply

This applies to the Local AI edition only.

Download recommended (in the wizard and on the RAGP and Embeddings pages) fetches the model from Hugging Face and checks it against a fixed size and SHA-256 checksum before using it. The reason appears under the button.

12. A self-hosted OpenAI-compatible server does not work

See Self-hosted OpenAI-compatible servers for every result and per-stack notes.

13. llama.cpp (Remote) returns empty replies

14. API keys are missing or rejected after moving to a new computer

API keys are stored in the settings file, not in the data folder, and they are scrambled with a value tied to the computer they were entered on. A copied settings file therefore does not bring working keys to another computer. Enter your API keys again in Settings → Text Providers on the new computer.

Voice calls

Voice is an optional add-on with its own setup and failure modes (not detected, missing speech models, nothing heard or transcribed). See Voice calls.

Where to find more detail

If your issue is not covered here:

Capturing detailed logs for a bug report

By default the log stays quiet. It records warnings, errors, and a few key milestones only, so it does not grow quickly and does not slow the app down. When you are chasing a specific problem, or a maintainer asks for a log, you can turn on full detail for a single run with one environment variable. There is nothing to reinstall and no setting to change inside the app.

Turn on full detail, then launch Verzeta from the same window:

Reproduce the problem, close Verzeta, and send the log file. Closing the window (or unsetting the variable) returns logging to normal.

To focus on one area instead of everything, name it in place of verzeta.*:

Rule Area
verzeta.llm.debug=true Model providers and requests
verzeta.infer.debug=true The built-in local inference engine
verzeta.rag.debug=true Retrieval and embeddings
verzeta.tools.debug=true Tool calls (shell, files, web search)
verzeta.remote*=true Remote access and device pairing
verzeta.ui.debug=true The chat engine and app events
verzeta.db.debug=true The database
verzeta.memory.debug=true Agent and team memory
verzeta.voice*=true Voice calls
verzeta.custom-servers.debug=true Custom OpenAI-compatible servers
verzeta.image-providers.debug=true Image generation providers

For the most verbose per-token streaming or workspace-mount traces, also set VERZETA_STREAM_TRACE=1 and/or VERZETA_MOUNT_TRACE=1 the same way.

When the log file reaches 5 MB it is renamed to verzeta-studio.log.1 and a new file starts, so at most two files are kept.

What's next

Verzeta Studio guides