home →
Support · v1.x

Something not working?

Most of it is one setting. Start with the fix below — it accounts for more support email than everything else put together. If that isn't it, the troubleshooting list is next, and a human reads every message within one business day.

Fix #1

Open WebUI: forward the user headers

If everyone in Open WebUI shares one memory, or nobody gets memories at all, Open WebUI isn't telling UPtrim who is typing. Set this on the Open WebUI container or service, then restart it:

ENABLE_FORWARD_USER_INFO_HEADERS=true

Then point Open WebUI's OpenAI-compatible base URL at http://<host>:9099/v1 and leave everything else alone. UPtrim is invisible to both sides — your frontend thinks it's talking to the model, the model thinks it's getting a normal request.

Identity resolution has five tiers and will fall back to IP and session heuristics without the header, but header-based identity is the only one that's reliable in a shared household or team. If you run identity_mode: strict, requests without a resolvable user are refused rather than merged — that's on purpose.

this one line, honestly, is half of all support tickets

The other usual suspects

Seven things that look like bugs and usually aren't. Every one of them is a setting you can see and change from the dashboard.

Looks broken · isn't

“Nothing seems to be happening” SHADOW

Several of the newest parts of UPtrim ship in shadow mode: they run on every request, record what they would have done, and change nothing about your answer. Atlas (the belief engine), Muse (the injection brain), the Skribe write engine, the adaptive demand policy and the Ghost specialist router all start this way.

That isn't a broken feature. It's a feature measuring itself before it takes over — on your data, on your hardware, with a diff you can read. Atlas, for example, moved new-vocabulary recall from 0.122 to 0.551 at 0.864 precision across a 658-case evaluation before it was allowed anywhere near a default.

Dashboard → Brain panel. Flip a mode from shadow to primary when the numbers convince you. It applies live.
Boot warning

“It complained about my data folder” LIVE

A ~2-second probe at boot measures real fsync latency and checks where your data actually lives. It warns loudly about cloud-synced folders, network shares and WSL mounts, because SQLite on those loses writes.

Move the data folder to a local disk. It's one relocatable folder — nothing else has to change.
Research

Live web search came back empty LIVE

Search backends are pluggable and keyless out of the box, but individual engines block individual networks, hosts and regions. Six backend families are supported — DDGS engines, SearXNG, Brave, Google CSE, Tavily — fused with a mini-RRF and per-engine circuit breakers.

Swap or reorder the engines. Whatever answers gets used; whatever doesn't gets tripped out.
Not missing · off

“I can't find the agent / scheduler / Conductor” ONE SWITCH AWAY

They ship off deliberately. Agent mode, the generation scheduler, the Conductor (also experimental), reflex search, Parliament, plugins, the virtual pet and the multi-node fleet all start disabled so a fresh install does exactly one predictable thing.

Turn them on in Expert mode. Agent file and shell tools stay confined to a workspace until you configure a project root — no configuration means confined.
Backends

A model is missing from the dropdown

That backend isn't answering. Boot no longer waits on an unreachable backend, so UPtrim starts normally and the models simply don't appear rather than hanging the whole proxy.

Check the backend is serving an OpenAI-compatible /v1, then re-scan from the dashboard. vLLM and SGLang are auto-detected.
Files

An uploaded file wasn't used LIVE

Two usual causes. Either the file is over your tier's per-file ceiling (15 MB on the free Developer tier, then 25 MB, 1 GB, 5 GB, 100 GB), or the Inspector hasn't finished with it — its 13 format-specific analyzers deliberately wait for the GPU to go idle so an upload never slows down a live chat.

Give it a minute and ask again. Answers cite the file and the character range they came from.
Licensing

The license stopped working

Licenses validate offline for up to 14 days, so a machine that has been off the internet longer than that will ask to check in. The 14-day trial needs internet once, at the start.

If you just want it running again with no account and no clock, the free Developer key is public and free for life on v1.x: 4XC7N-K2RS3-NXSF6-M5CXA-AL8PU

Paste it into the dashboard, or pick Enter a license key at first boot.

What we help with

Write in about any of these and you'll get a real answer, not a macro:

  • People aren't being recognized as separate users
  • Memories aren't being extracted, or the wrong ones come back
  • Uploaded files aren't being found or cited
  • A backend won't connect, or routing sends work to the wrong model
  • Ghost research returns nothing useful on your network
  • Isolation worries — who can see whose data, and how to prove it
  • License activation, tier limits, and moving a key to a new machine
  • Remote access: Cloudflare or Tailscale tunnels, or your own reverse proxy

What we can't do

  • Debug the LLM itself — if a model gives a bad answer, that's the model
  • Support code you changed inside the package
  • Promise a specific search engine keeps working from your country
  • Recover data from a corrupted database on a cloud-synced folder
  • Sell you a Business or Enterprise key over email today — fleet deployments go through a conversation first

If it's out of scope we'll still tell you what we'd try. We just won't pretend it's a supported path.

Reach a human

One developer builds and answers this. Every message gets a reply within one business day.

Where to write

📝 The contact form — routes by reason, no account needed
🕒 Mon – Fri, 8:00 AM – 6:00 PM MT · reply within one business day

How to get answered fast

1

Say what broke

The exact error, what you expected instead, and which frontend and backend you're running.

2

Send the settings

The relevant config keys and your tier. Secrets are masked in every API response — redact anything the dashboard didn't mask for you.

3

Get a reply

Within one business day, from the person who wrote the code.

Before you write in

Three places that answer most of the rest.

Tell us what broke

No ticket queue, no tier gating on support. A reply within one business day.