Docs

Set up in four steps.

One command, one plugin import, one run, one question to Claude. All of it runs on your machine. If the panel shows something you did not expect, Troubleshooting has every state and what to do next.

npx deskhand@latest setup

Needs Node.js 18 or newer, the Figma desktop app, and Claude Code or Claude Desktop.

Install

You do steps 01 and 02 once. After that you only run the plugin.

01Run setup

Setup copies Deskhand into ~/.deskhand, registers it with Claude Code, Claude Desktop or both, and asks for a licence key. Press Enter to start the 14-day trial instead. It ends by printing the path of the plugin manifest.

npx deskhand@latest setup

02Import the plugin

In Figma, open Plugins, Development, Import plugin from manifest, and choose the file setup printed. The path stays the same after every update.

  1. Plugins
  2. Development
  3. Import plugin from manifest
~/.deskhand/current/node_modules/deskhand/plugin/manifest.json

03Run the plugin

Open any Figma or FigJam file and run Plugins, Development, Deskhand. The panel finds the server on port 3055 by itself and shows Connected with your file’s name. One server serves every Claude session on your machine: it starts with the first session and stops a minute after the last one closes.

04Ask Claude

Ask Claude to call figma_get_context. When it answers with your file name and current page, you are set. The call shows up in the panel’s Activity tab, with how long it took.

Setup options

--client code|desktop|bothRegister with that client without asking.
--profile design|figjam|allThe tool profile for the server. Default design.
--licence <key>Activate this licence key.
--trialStart the 14-day trial without asking for a key.
--yesAccept the defaults with no prompts. Registers with both clients when both are installed.

Licence key

Deskhand is free for 14 days from the first run, with no card and no key. After that it needs a subscription: £5 a month or £50 a year. The key arrives in your receipt email.

Paste it into Settings, Licence in the panel and press Activate key. Or hand it to setup:

npx deskhand@latest setup --licence <key>

One key works in 3 places at once. Free a slot from the customer portal.

See pricing

Updating

One command updates Deskhand. When a newer version is on npm the panel shows Update available with the command to copy, and Settings has Check for updates.

npx deskhand@latest update

A server that is already running

It keeps its version until it exits, which it does by itself a minute after the last Claude session closes. Check it, or stop it now, then run the plugin again in Figma to load the new panel.

npx deskhand@latest status
npx deskhand@latest stop

Profiles

A profile decides which tools the server loads, so every Claude session carries a shorter tools list. Setup picks design. Pass --profile to setup to change it, or set DESKHAND_PROFILE in the server’s environment.

designSetup default

94tools

Figma Design and prototype tools. FigJam tools off.

figjam

109tools

Figma and FigJam tools: stickies, shapes with text, connectors, tables, code blocks. Prototype tools off.

all

113tools

Every tool. For days you move between Figma and FigJam.

npx deskhand@latest setup --profile figjam

Offline

Deskhand checks your key online and keeps the result. Lose the connection and it keeps working on that last check.

  1. 7 daysWorks offline on the last check
  2. Day 8The panel starts to warn
  3. Day 30Reads and writes stop until it can check again

Troubleshooting

Find the line the panel shows, then do what it says next. Every state below is drawn from the panel itself.

In the panel

No server found

The panel looked and no Deskhand server is running.

  • Open a Claude Code or Claude Desktop session. The server starts with the first one.
  • Press Reconnect in the panel.
  • Still nothing? npx deskhand@latest status says whether the server is running.
  • New install: run setup first.

Looking for a server

The panel is scanning ports 3055 to 3070.

  • Give it a few seconds once a Claude session is open.
  • Set DESKHAND_PORT to a port outside that range? Press Use a fixed port and enter it.

Choose a server

More than one Deskhand server is running, for example a beta beside the release.

  • Pick the one on port 3055. Deskhand remembers the pick for this file.

Trial ended. Add a key in Settings.

The 14 days are up. Reads and writes stop until a key is added.

  • Subscribe, then paste the key from your receipt email into Settings, Licence.

Key not recognised. Check Settings.

The key does not match a Deskhand licence. Usually a character went missing in the copy.

  • Copy the whole key from the receipt email and paste it again.

Key blocked. Check it at deskhand.studio.

The licence was revoked or disabled, for example after a refund, or Deskhand could not check it for 30 days.

  • Check the subscription in the customer portal.
  • If it is active, go online and run the plugin again. Your key stays stored.

Offline 9 days. Go online by day 30.

The last licence check was 9 days ago. Everything still works.

  • Connect to the internet. The next check runs by itself.

Another file took over this server.

One file connects to the server at a time, and you ran the plugin in a second file.

  • Press Take it back in the file you want Claude working in.

In Claude

deskhand · failed

Claude lists Deskhand as failed

The server stopped while the session was open, after stop --force or a crash. In Claude Code, run /mcp and reconnect Deskhand, or start a new session. Claude Desktop starts it again when you relaunch the app.

JOB_BUSY

Another session’s script is running

Every Claude session shares the one server, and scripts run one at a time. Wait for the other script to finish, then ask again.

TIMEOUT

A command timed out

Commands stop after 30 seconds. Large exports hit it first: export at a smaller scale, or fewer nodes at a time.

font

A font will not load

Claude can only set text in fonts installed on your machine. Install the font, or ask Claude to use one you have.

EADDRINUSE

Port 3055 is already in use

The server binds one port and exits if another program holds it; ~/.deskhand/daemon.log says so. Free the port, or register Deskhand with the same alternative port for every session:

claude mcp add --scope user deskhand -e DESKHAND_PORT=3057 -e DESKHAND_NODE=$(command -v node) -- /bin/sh ~/.deskhand/current/node_modules/deskhand/src/shim.sh

Uninstall

Two commands remove the server and everything in ~/.deskhand.

claude mcp remove -s user deskhand
rm -rf ~/.deskhand

Using Claude Desktop? Remove the deskhand entry from claude_desktop_config.json too. Then remove the plugin in Figma under Plugins, Development.

Still stuck?

Email the line the panel shows and the output of npx deskhand@latest status.