FixMyAI OS · multi-model AI workspace

Every answer names the company that processed it.

Chat, images, characters, research and documents across the whole model catalogue. Pick a privacy mode and the router enforces it: if no provider can meet it, the request is refused rather than quietly downgraded. Under every reply, the provider, the region, the retention term, the latency and the cost.

The number of routes that qualify for Private is read live from the route table, which is not reachable right now. The route table itself is on the privacy page.

200 credits a month on the free planSelf-hostable, AGPL-3.0No training on your conversations, in any mode

The line under the answer is the product. It is recorded per request, and you can export the log.

Four modes you can switch per conversation

Privacy is a setting on the thread, not a badge on the homepage.

Standardroute count unavailable

Saved to your account, synced across devices, searchable.

Privateroute count unavailable

Zero retention. Only providers contractually bound to keep nothing.

Browser-onlyroute count unavailable

History never leaves your device. Nothing about the thread is written to our servers.

Temporaryroute count unavailable

Vanishes when you close the tab. Not stored anywhere, not even locally.

A fifth mode, Local model, runs against a model server on your own network with no egress at all. It is designed and specified but not switched on in the current build — we say so on the privacy page rather than in a footnote.

One gateway, every model

One catalogue. One bill. One keyboard shortcut to switch.

Change model mid-conversation and keep the thread. The picker shows what each route costs, how long it usually takes and which privacy modes it survives — before you send anything. The table below is generated from the same route table the router filters against.

Catalogue unavailable

The model table is read live from the route table, and the route table cannot be reached right now, so this section is blank rather than approximate. We would rather show you nothing than a number you cannot check against the product.

Something went wrong. (HTTP 500)

Prices are read from the gateway and move when providers change them, which is the point of showing them at all. A route with no named processor cannot be offered above Standard, however cheap it is.

The fail-closed guarantee

When the promise can’t be kept, nothing is sent.

Most systems degrade gracefully. A privacy system that degrades gracefully is a privacy system that lies. Ours stops, shows its working, and offers you named ways out.

What usually happens

1You set the thread to a strict privacy mode
2No qualifying route is free, or the model isn’t offered under those terms
3The request goes out on a weaker route. The badge still says the strict mode.
4You find out months later, from a subprocessor list, if at all

A graceful degradation is the right instinct almost everywhere in software. It is the wrong instinct here, because the thing being degraded is a promise, and a promise that degrades under load was never load-bearing.

What happens here

Held — this request was not sent anywhere.

This thread requires Private: contractual zero retention, and you have pinned gemini-3.0-pro. Google does not offer that model under a zero-retention contract.

Catalogue unavailable

The routing arithmetic is read live from the route table, and the route table cannot be reached right now, so this section is blank rather than approximate. We would rather show you nothing than a number you cannot check against the product.

Something went wrong. (HTTP 500)

Nothing was sent. Nothing was logged except this refusal.

Five modules, live today

The parts that work, and nothing that doesn’t.

Canvas, Code Studio, Agents, workflow automation, video and audio are designed and visible in the product as roadmap screens, clearly labelled. These five are finished.

Chat

Streaming chat with the receipt attached

Markdown, tables, code blocks with copy, vision, branching, edit-and-resend, folders and tags. Every parameter — system prompt, temperature, top-P, penalties — is one click away rather than buried in settings.

  • Switch model mid-thread and keep the context
  • Cost, token count, provider and latency under each message
  • Web search with clickable citations, in the modes that allow it
  • Export a thread as Markdown or JSON

The trade-off: the metadata line adds visual noise to every answer. We think a number you can check beats a badge you cannot, but it is a real cost in tidiness.

Image Studio

A control panel, not a prompt box

Negative prompt, style presets, aspect ratio, resolution to 4K, steps, guidance, seed with lock and randomise, batch count. Brush a mask and describe just the change.

  • Inpaint and edit a region without regenerating the frame
  • Upscale, variations, background removal on any result
  • An inspector showing every parameter, with reuse-these-settings
  • Asset library with lineage — which image came from which

The trade-off: image generation always leaves your device. There is no browser-only image mode, and we will not pretend otherwise.

Characters

Personas with version history

Name, backstory, system prompt with a live token count, greeting, example dialogues, default model and temperature. Preview the character in a chat panel beside the editor while you build it.

  • Save a version, compare two versions, roll back
  • Duplicate an existing character and evolve it
  • Start a thread as any character — its settings become the thread’s
  • Share by unlisted link, or keep it to yourself

The trade-off: a shared character carries its system prompt to whoever opens the link. Treat the prompt as public once you share it.

Research

Watch it search, read and synthesise

Ask a question and the work is visible: queries issued, pages fetched, sources kept and discarded. The report comes back with inline citation chips that open the exact source.

  • Real web search and real page fetching, not a recollection
  • A sources sidebar with domain, retrieval date and a confidence bar
  • Follow-up questions reuse the sources already gathered
  • Export to Markdown or PDF with the citation list intact

The trade-off: research needs the open web, so it cannot run in Private, Browser-only or Temporary modes. The toggle greys out and tells you why.

Documents

Answers that point at the page

Drop in PDF, DOCX, TXT, MD or CSV and watch the pipeline: queued, parsing, embedding, ready. Ask across one document or a whole collection.

  • Citations carry page numbers, and clicking one jumps the viewer
  • Document viewer beside the chat panel, not in another tab
  • Collections to group documents for a single question
  • Indexed with pgvector inside Postgres — no separate search cluster

The trade-off: indexing writes chunks of your document to our database. In Browser-only and Temporary modes, document Q&A is unavailable rather than silently downgraded.

What you give up

Every privacy mode costs you something. Here is the bill.

This section exists because a privacy product that only lists benefits is telling you the same story as the ones it claims to be better than. The app shows these lines at the moment you switch modes, too — not only here.

T0
Standard
What you get
  • Every model in the catalogue
  • Web search with citations
  • Sync, search, export and share
  • Lowest price per token
What you give up
  • The provider that serves the request may retain the prompt briefly for abuse monitoring — up to 30 days on some routes
  • Your thread text sits in our database, encrypted at rest but readable by us if you ask support to look at it
T1
Private
What you get
  • Contractual zero retention on the provider side
  • Named provider, region and contract date on every reply
  • Still synced to your account so you keep your history
What you give up
  • Far fewer routes — only the ones a human has verified qualify, and the count is on the privacy page
  • Higher cost per token on the zero-retention routes
  • No web search: fetching a page means telling a search provider what you asked
T1
Browser-only
What you get
  • No server-side record of the conversation exists
  • Works with every zero-retention route
  • Clearing your browser data really does delete it
What you give up
  • No sync — the thread exists on one device only
  • No cross-device search
  • No recovery: clear your browser, lose the thread
  • No sharing, no team access
T1
Temporary
What you get
  • The shortest possible lifetime for a conversation
  • No artefact to delete afterwards, anywhere
  • Ideal for a question you would not put in a ticket
What you give up
  • No history at all — close the tab and it is gone
  • A refresh loses the thread
  • You cannot export it after the fact, only during
T3
Local model
designed, not enabled
What you get
  • No egress at all — nothing leaves your network
  • You own the logs, the weights and the hardware
  • The only mode that survives an offline audit
What you give up
  • Weaker models than the frontier closed-weight ones
  • Slower, unless you own real GPUs
  • You run the infrastructure and carry the uptime

For developers

OpenAI-compatible. Change two lines, keep your client.

Same request shape, same streaming format, same SDKs. The additions are one header that sets the privacy mode and three response headers that tell you exactly who served it.

route_check.pypython
from openai import OpenAI

client = OpenAI(
    base_url="https://api.fixmyai.os/v1",
    api_key=os.environ["FIXMYAI_KEY"],
)

r = client.chat.completions.with_raw_response.create(
    model="mistral-large-3",
    messages=[{"role": "user", "content": "Summarise clause 7."}],
    # the only line that is not stock OpenAI
    extra_headers={"X-Privacy-Mode": "private"},
)

print(r.headers["x-route-provider"])   # Mistral AI SAS
print(r.headers["x-route-region"])     # eu-west-3
print(r.headers["x-route-retention"])  # none

The three headers that come back

x-route-provider
The legal entity whose hardware ran the request. Mistral AI SAS
x-route-region
Where it ran. eu-west-3
x-route-retention
The contractual retention term for that route. none

And the one status code that matters

A request that cannot be routed under the mode you asked for returns 422 privacy_contract_unsatisfiable with the same arithmetic the app shows a human: routes checked, routes qualifying, why each group was excluded, and the alternatives. It never returns a 200 from a route that does not meet the contract.

Self-host

Five containers on one box. No Kubernetes required.

The whole stack is a web app, an API, Postgres with pgvector, Redis, and Caddy for automatic TLS. It fits in about 2.5 GB of RAM on a four-core machine with no GPU, because inference happens elsewhere — unless you point it at your own model server, which is the entire idea behind Local mode.

  • Source-available under AGPL-3.0, no seat count, no phone-home
  • Bring your own provider keys; the route table is yours to edit
  • Row-level security in Postgres, on by default
  • One command to start, one file to configure
deploy.shshell
# one file, five services, automatic TLS
git clone https://git.fixmyai.os/os.git && cd os
cp .env.example .env   # provider keys + domain
docker compose up -d

# NAME              CPU     MEM       STATUS
# os-caddy          0.2%    18 MiB    healthy
# os-web            0.9%    212 MiB   healthy
# os-api            1.4%    340 MiB   healthy
# os-postgres       0.8%    1.1 GiB   healthy
# os-redis          0.1%    26 MiB    healthy

Customer logo wall — placeholder

This band is where customer logos go once there are customers who have agreed to be named. We would rather leave an obviously empty frame here than fill it with companies who have not said yes.

logo 1logo 2logo 3logo 4logo 5

Questions we actually get

Answered at the length the question deserves.

Under every assistant message there is a line like mistralai/mistral-large-2411 · Mistral AI SAS · eu · zero-retention · 431ms · $0.0021. That is the company whose hardware ran your prompt, the region it ran in, the retention term we hold them to, and what it cost. It is recorded per request and you can export it.

Most AI products will tell you they have zero-retention agreements. Very few will tell you with whom. That is the gap this product is built in.

Try it, then go and check the route log.

Free plan, 200 credits a month, no card. Every answer you get will tell you which company processed it — including the ones on the free plan.