Works with Claude Desktop

Keep Claude Desktop. Lose the message limit.

Point Claude Desktop at LunaRoute and it runs on open-weight models such as GLM 5.3, for a flat monthly price. Keep the app, your Projects and the connectors you already use. What you don’t get is Claude’s own models — and everything can be put back with one command.

Claude Desktop
Projects · connectors · files
LunaRoute
GLM 5.3DeepSeek 4.1 Flash
Claude Desktop → LunaRoute → open-weight models

Can Claude Desktop use models other than Claude?

Yes. Desktop can be pointed at a provider other than Anthropic through its own third-party inference setting, and LunaRoute is one: it answers in Anthropic’s format with open-weight models such as GLM 5.3 and DeepSeek 4.1 Flash. It is not the same app with a different login — the models on the other end are not Claude’s. Anthropic doesn’t support non-Claude models here, so support for this setup comes from LunaRoute.

Is this cheaper than a bigger Claude plan?

No, and it isn’t meant to be. LunaRoute Pro costs $99 a month, which is about what the top consumer Claude plan costs, so this is not a way to spend less. It’s a way to stop being cut off.

Claude’s plans limit how much you can use in a stretch of time. A LunaRoute plan doesn’t; it sets how many requests get priority scheduling at once. When those are busy your request waits in a queue, or runs at background priority — slower, and during a busy spell it can come back with a “try again shortly” error — but the month doesn’t run out on you. If Claude Pro already covers your day, keep it. This is for when it doesn’t.

What stays the same, and what changes

What stays the same

The app itself. Your chats and Projects, the files you attach, the connectors you’ve added and the way you work in it are all the app’s, not the model provider’s. Desktop on LunaRoute is the same desktop app answering from different models.

What changes

Two things. The models are open-weight ones that LunaRoute runs on its own GPUs, and you pay for a number of priority requests per month instead of per token. With a gateway configured, Desktop also runs local sessions only — no SSH or cloud environments, and no Remote Control.

What happens to what I type?

It is processed and then discarded. Prompts and responses live in memory for as long as the request takes and are not stored afterwards; we keep billing metadata (timestamps, model, token counts) and nothing else from the request, and we never use your data to train models. If you work with other people’s documents, this is the part worth checking before you switch. How zero data retention works

Can I put it back the way it was?

Yes. Setup changes one file — Desktop’s third-party inference profile — and takes a snapshot of it before writing anything. Quit Desktop, then:

npx @lunaroute/cli setup claude-desktop --remove

That restores the snapshot byte for byte, keeping any settings you had before LunaRoute touched the file. It needs no login, running it twice is harmless, and the snapshot stays in place at ~/.config/lunaroute/backups/claude-desktop/ (mode 0600 — it holds your key).

The command works on Linux today. On macOS and Windows it refuses rather than guess at the profile path, so the by-hand reverse below is the way back there.

By hand it is the same file in reverse: delete the five gateway keys and, inside inferenceCustomHeaders, only the X-LunaRoute-Client entry — keep any other headers you had. Then reopen Desktop. No terminal and no snapshot needed.

How much does it cost to run Claude Desktop on LunaRoute?

You pay for a plan, not for tokens, and there is no monthly message cap. A long document, a retry, or twenty chats left open don’t add to the bill, so the cost of a day’s work doesn’t depend on how much you decide to do.

Web search is the one thing billed separately. Your organization gets 100 searches a month at no charge; above that you can opt in to paid search or bring your own Brave, Exa, Kagi or You.com key (see the FAQ).

Concurrency vs token pricing, explained

Price per month and priority concurrent requests for each plan
PlanPrice per monthPriority concurrent requests
Pro$99.002
Max$199.994
Apex$299.006
Teams$499.9910, with per-member limits

Your plan sets how many requests get priority scheduling. Extra requests run on overflow capacity automatically, at background priority, and may wait while it’s busy. A priority request waits up to 60 seconds for a free slot, and if none frees up it comes back with a 429 telling it when to try again.

One profile at a time, and a way back

Desktop applies one third-party inference profile at a time, so this is a switch rather than two apps running side by side. That is also what makes it safe to try: the profile is a file, and the file can be restored.

Keep the snapshot command somewhere you will find it again. It is the whole undo, it takes a second, and it does not depend on anything still working on our side.

Both commands are for Linux today. On macOS and Windows there is no command to run yet — set the profile up, and undo it, by hand; the setup section below has the keys and the file.

switch Desktop to LunaRoute

npx @lunaroute/cli setup claude-desktop

put your own profile back

npx @lunaroute/cli setup claude-desktop --remove

Work that fits LunaRoute well

  • Long days of drafting, reading and analysis, where the limit is what stops you
  • Several chats open at once, each waiting on its own answer
  • Documents you would rather not hand to a service that keeps them
  • Finding out how open-weight models do on your own material before you commit

Where it’s not the right fit

  • You need Claude’s own models. LunaRoute runs open-weight models, and no amount of configuration turns GLM 5.3 into Claude. Try your own material on them first.
  • You use Desktop lightly. If you rarely reach a limit, the plan costs more than you are spending now.
  • You are on macOS or Windows. The setup below is verified on Linux; the other platforms use the same configuration but their profile locations are not verified yet.

How to set up Claude Desktop with LunaRoute

The app writes its own third-party profile; the keys go inside it. There are two ways to get them there, and the second needs no terminal.

1. Let Desktop create the profile

With Desktop open, go to Help → Troubleshooting → Enable Developer Mode, then Developer → Configure Third-Party Inference, and enter https://gw.lunaroute.com as the routing URL. That is what makes Desktop write the file — let the app create it rather than creating one by hand, because the app generates its name and tracks which profile is applied.

2. Quit Desktop

Now quit it, before you change the file. Desktop keeps that profile in memory and can write its own copy over your change when it exits, which is how a correct setup silently undoes itself.

3. Put the keys in it

With the terminal, one command merges them into the profile Desktop created and keeps everything else it finds there. You need Node.js 20+ and nothing else — npx fetches the CLI, so there is nothing to install first:

npx @lunaroute/cli setup claude-desktop

That works on Linux today. On macOS and Windows the command refuses rather than guess where the profile is, so use the by-hand route below there too.

Without the terminal, paste these keys into that profile yourself. On Linux it lives in Desktop’s config library, at ~/.config/Claude-3p/configLibrary/<profile>.json; on macOS and Windows the same file sits in the app’s own config folder, whose name is generated, so look for the folder the app just created rather than a path we could guess for you. If it already has an inferenceCustomHeaders object, add X-LunaRoute-Client to it instead of replacing it — that is what the command does.

{
  "inferenceProvider": "gateway",
  "inferenceGatewayBaseUrl": "https://gw.lunaroute.com",
  "inferenceGatewayApiKey": "<your-lunaroute-key>",
  "inferenceGatewayAuthScheme": "bearer",
  "modelDiscoveryEnabled": true,
  "inferenceCustomHeaders": { "X-LunaRoute-Client": "claude-desktop" }
}

Desktop expands no environment variables in this file. The key is stored literally, so paste it in full and keep the file private. You can copy it from the Claude Desktop tab of your dashboard’s Connect page, which fills in the same configuration, or by running npx @lunaroute/cli key, which prints the key you signed in with.

Do not add an inferenceModels list. A pinned list switches discovery off, and the picker then shows none of LunaRoute’s models. It is the most common way to end up with an empty picker.

4. Reopen Desktop

The picker fills itself from discovery; pick a model and start a chat. The setup is in beta and verified on Linux, with macOS and Windows using the same configuration and unverified paths.

Full details, including a check you can run without opening the app, are in the Claude Desktop setup docs.

How many priority requests does Claude Desktop use?

A concurrent request is one model call that is running right now. Requests waiting in a queue don’t count.

One chat uses one concurrent request while it’s generating an answer and none while it waits for you, so a desktop full of idle chats costs nothing. Each chat that is actively answering is another one, and a connector call or a long document is a burst rather than a permanent cost.

The Usage & Metrics page in your dashboard at app.lunaroute.com shows what percentage of the time your requests were queued and how long they waited. If both climb during your busy hours, add priority requests. Not sure where to start? See How much concurrency do I need?

Using coding agents too? They’re covered on the Claude Code page and in the harness list.

FAQ

Claude Desktop questions, answered.

Run tomorrow’s long session on LunaRoute

Same app, no monthly cap, and one command puts your own profile back.

npx @lunaroute/cli setup claude-desktop