The Desktop Agent

SphereHarness lives beside your CAD system rather than inside it. A small floating balloon sits on top of whatever you are working in, one keystroke brings up a place to type, and the same conversation reaches every CAD system you have running — including two at once.

This replaced the chat panel inside the CAD window. That panel still exists and is switched off by default; see the legacy panel at the foot of this page. If you are reading older notes that tell you to open a task-pane tab, this page is the current answer.

Starting it

The agent runs in the Windows system tray. It starts:

Once it is running, closing any of its windows only hides them. Exit on the tray menu is the only thing that stops the agent.

The SphereHarness agent icon and status in the Windows system tray
The agent in the tray. Hover it to see whether it is connecting, connected, stopped, or not signed in.

The balloon

A small round disc that floats above every window. It is blue when you are signed in and grey when you are not, and the glyph on it is a chat bubble — or a microphone when voice is switched on, or a padlock when you are signed out.

Three things are shown on the disc itself, so you can read the state without opening anything:

Hidden the balloon by mistake? The show/hide hotkey brings it back, and Settings → Agent has Reset balloon position for when it ends up on a monitor you no longer have.

The quick ask bar

One line, floating near the top of the screen, for the question you want to ask without leaving what you are doing. It is what a balloon click opens by default.

The quick ask bar and the chat card are two views of one conversation. Ask in the bar, open the window, and the exchange is already there.

The chat card

The full window: the conversation, the input box, and the controls. It is what the CAD ribbon button opens, and what Ctrl+Enter from the quick ask bar opens. Drag its edge to resize it, or use the card menu's Dock submenu to pin it to the left, right, top or bottom edge of the screen instead of leaving it floating.

Typing

The Send button becomes Stop only when the box is empty. While a turn is running, the blue Send button turns into a red Stop — but only if you are not typing. If you have started a follow-up message, clear the box to reveal Stop.

Choosing which AI answers

Just above the input box there is a small AI drop-down — which AI answers in this chat: your own API key, or a coding agent — with a gear beside it that sets the chosen one up. The quick ask bar has the same choice on its menu.

Each option tells you whether it is ready to answer, and that verdict is the backend's own pre-flight check — the same check it makes when you press Send — rather than the picker's separate opinion of what “configured” means.

Setting up a coding agent is not always one click. Gemini CLI can be installed for you; Claude Code and Codex need their own command-line tool installed and an interactive login first. The set-up window does what it can and then tells you the command still to run, rather than reporting success and failing at send time.

Choosing which model it uses

Beside the AI drop-down is a Model drop-down. It lists what the AI you picked actually offers — a coding agent's list comes from the agent itself, and your own API provider's comes from the list its /models endpoint returned when you pressed Fetch models in Settings. Nothing in that list is a name we keep here, so it cannot go stale.

Leave it on (the agent's own default) to let the agent keep whatever model it is configured for. Pick one and it applies to the agent already running: your next message uses it, with no restart and without losing the conversation you are in.

The choice is remembered per agent, so a model you chose for one coding agent is never asked of another, which that other agent would simply refuse. You can also type /model in the chat to see the model in force and what the agent offers, or /model <id> to change it.

The box is editable, so you are not limited to the list. A list can lag — a model released after the adapter was built, an id your account is allow-listed for, a deployment name on your own endpoint. Type it and press Enter, or click away, and it is sent exactly as you typed it. If the agent takes it, it is used from your next message and appears in that agent's list next time marked (added by you), so you can tell your own entries from the ones the agent named. If the agent refuses it, the chat says so in the agent's own words, you stay on the model you were already using, and the refused id is neither kept nor added to the list.

The Model boxes in Settings → Coding agents & MCP work the same way and share the same store, so the chat card, Settings and /model never disagree about which model is in force.

With SphereHarness server chosen as the AI, the Model box is greyed out: the server picks the model for each turn itself — your own registered key if you have one, otherwise your organisation's.

The header

The header shows who you are signed in as, and — when the answer is not coming from the platform's model — what is answering it, so you always know whether you are on your own key or your own coding agent.

The icon buttons open the markup board, the macro and variation library, the notification bell, and a Settings and more menu holding Settings…, Channels and services…, Refresh CAD sessions, the Dock submenu, the coding-agent options, Send feedback… and Sign out. The Close button hides the window; it never exits the agent.

The notification bell

A bell in the header, with a count on it when something has arrived that you have not read. It is how a reply to one of your support requests reaches you without your going to look, and it is where announcements from your partner or from the SphereHarness team appear.

Every message you send gets a progress block underneath it, in the conversation itself. Its top line always shows and refreshes every second while the turn runs — how long it has been going, how many CAD calls it has made, how many of those are dialog-driving (driving the CAD's windows rather than its API), and the last operation with how long ago it ran. Clicking that line opens or closes the list below it.

The list holds one line per call, oldest first, naming the operation, what it was given and which CAD session it ran on, then how it ended and how long it took — CreateExtrusion distance=20 isCut=false · Inventor #9184 — completed 2.5 s. A marks a dialog-driving call and a a permission ask; sub-agents get their own line too. The list has a fixed height and scrolls, so a turn of two hundred calls never pushes the conversation off the screen: it follows the newest line while the turn runs, and stays put if you scroll up in it.

The block is open while the turn runs and collapses to its one-line summary when it ends — 96 tool calls · 78 CAD · 34 dialog-driving · 15 min 0 s — which a click re-opens. A turn that called no tool gets no block at all. A turn that is mostly dialog-driving is SphereHarness working around a capability it does not have as an operation; it says so in one sentence when it starts. The model's reasoning can be shown too — Settings → Agent, off by default.

Messages that reach SphereHarness from a plain-text channel (Telegram and the like) have no block to show, so those answers still carry the [SetDialogElement ×8 — completed] tool lines inline.

The Target box

Under the header is a Target drop-down. It decides which running CAD session this conversation works in.

Pick the Target when you have more than one CAD open. If a request names no session and more than one could serve it, SphereHarness refuses and lists them rather than guessing — which is correct, but costs you a round trip. Picking first avoids it. It also saves tokens; see Spending fewer tokens.

The tray menu

Right-click the tray icon for: Open chat, Open the full chat window, Show balloon, Ask my coding agent…, Settings…, Open status…, Start relay / Stop relay, Sign out and Exit. Double-clicking the icon opens the chat.

Hovering the icon tells you the connection state — starting, connecting, connected, stopped, or not signed in.

Permission cards

Before SphereHarness does anything destructive to your model — and before it changes its own sensitive settings — a card headed Permission needed appears on whichever surface is open.

Each card belongs to one CAD session and says so, with a count when more than one is waiting (“Siemens NX #208696 · 1 of 2 waiting”). You have two minutes to answer from the moment the card becomes visible, and a tray notification fires so that a card behind another window does not sit unanswered. A request that was withdrawn leaves a one-line note with a Dismiss button rather than a stale card.

When your chat is being answered by your own coding agent rather than by SphereHarness's model, that agent supplies its own permission wording, so the buttons will read however it phrases them.

Several CAD systems at once

The agent is one process talking to every CAD add-in that is running, so you can have SOLIDWORKS and NX open together and address each in turn. Two things follow:

Asking for help, and telling us what you think

Two different things, both from the chat card.

Collect my SOLIDWORKS logs and open a support request about the crash, attach them
What is the status of my support requests?

The legacy in-CAD chat panel

The chat panel docked inside the CAD window is still in the product but switched off by default. It can be turned back on in the SphereHarness Settings application, on the SphereHarness page: Show chat panel inside the CAD (legacy).

With it off, a CAD system that has the add-in installed shows a short panel saying that chat has moved and that the session is still connected, plus the ribbon commands.

See also