Skip to content

Starter kits

A personal assistant with OpenClaw

Install the Pooled plugin in OpenClaw, start a room with the Qwen3.6 35B MoE, add a second device, and give the assistant its first task. No API key and no cloud model.

Goal: an OpenClaw assistant that thinks with the Qwen3.6 35B MoE, running on your own computers.

OpenClaw is a self-hosted assistant. The Pooled plugin makes Pooled its model: the OpenClaw gateway starts a Pooled room and holds part of the model on its own GPU. Your other computers, browser tabs and phones join the room and hold the rest.

Two minutes: an RTX 5070 PC and a Mac Studio pool the Qwen3.6 35B MoE, lending 10 + 14 GB. OpenClaw triages a real inbox through an email MCP server: 14 tool calls, the answer at 36 tokens a second.

  • A computer with a GPU for the gateway: Linux with Vulkan (glibc 2.38 or newer, like Ubuntu 24.04), macOS 26 or newer, or Windows with an NVIDIA GPU (tested on an RTX 5070, the gateway hosting the room).
  • Node 22 or newer and OpenClaw 2026.9.6 or newer.
  • About 23 GB of GPU memory across the room for the 35B MoE, the model for OpenClaw. One big machine can hold it alone. This guide pools two devices. A pooled join device on a discrete GPU can also keep some experts in system RAM when the room is short (MoE experts in system RAM).
  • A 19.4 GB download for the MoE, once per machine, and 30 minutes the first time.
  1. Install the plugin from ClawHub:

    openclaw plugins install clawhub:@pooled/openclaw

    OpenClaw shows ClawHub’s security audit, then the plugin’s capabilities, and asks before each. Answer y to both. The same package is on npm: openclaw plugins install @pooled/openclaw.

    ClawHub Security Audit for @pooled/openclaw 0.2.1: Outcome Safe, then Proceed with installation?
  2. Pick Pooled. Run openclaw onboard. Under Model/auth provider, choose More… and type pooled.

    The provider search: pooled, 1 match, Pooled (Your own devices, no API key)
  3. Start a room on this device. Onboarding shows the GPU it found, then asks how this device takes part.

    Pooled, gpu NVIDIA GB10 · 122 GB unified memory, then How should this device take part? Start a room, or Join a room
  4. Lend memory and pick the MoE. Say how much of this GPU’s memory to lend. Which model? lists what each model needs and whether it is downloaded, and marks Qwen3.6 35B MoE as recommended. If it isn’t downloaded, onboarding offers to download it now, when the gateway starts, or not at all.

    Lend 16 GB, then Which model?: Qwen3.6 35B MoE, needs 23 GB, downloaded, recommended, needs another device

    Then keep 2 devices (this one and one more) and Invite link only. Onboarding prints the room code, the invite link and how another device joins. They stay the same when the gateway restarts. Answer the rest of onboarding as you like.

    The Pooled room box: room code MXB-PHZ, Qwen3.6 35B MoE, the invite link, and how another device joins
    The invite key is hidden in these captures.
  5. Start the gateway, if onboarding didn’t: openclaw gateway run. The room opens with it, in about 10 seconds.

  6. Add a second device. On another computer (or a second terminal), run pooled join with the invite link, or open the link in Chrome or Safari. See Rooms from the terminal. With the invite link it gets in at once. With the code alone, it waits for you:

    pooled join with the code alone: waiting for nehanth (OpenClaw) to let you in, lends 10 GB

    Open a chat with openclaw tui and type /pooled. It shows the room’s devices, how much memory it has against what the model needs, and who waits. /pooled allow lets them in:

    /pooled: waiting for devices, 16 GB lent of 23 GB needed, spark-join wants to join (computer, 10 GB); /pooled allow answers Let in: spark-join

    The waiting device shows a six-digit code, and the gateway’s log shows the same code beside its request (its screen shows code …). If they match, nobody sits between the two devices. A device on an older Pooled is marked an older Pooled: it can't prove the invite key. See Who is on a link.

    The model loads once the room holds it (66 seconds in our test). /pooled then says online and which layers each device holds:

    /pooled: Qwen3.6 35B MoE online, 2 devices, holds 0-23 and 24-39, 26 GB lent of 23 GB needed
  7. Give it a first task. Put a notes.txt in OpenClaw’s workspace and ask:

    Read notes.txt in my workspace and turn it into a to-do list, most urgent first.

    It reads the file with its read tool and answers.

    The TUI: /pooled shows the room online, then the task and a numbered to-do list, most urgent first

    openclaw dashboard opens the same chat in the Control UI, with the tool call and the model, Qwen3.6 35B MoE · Pooled room:

    The Control UI: Read notes.txt, the to-do list, and Qwen3.6 35B MoE · Pooled room MXB-PHZ under the message box
  • The first answer is slow: about 5 minutes in our test. OpenClaw sends a prompt of about 18,000 tokens (its instructions and tools), and the room reads it once. That took 265 seconds here.
  • Later answers are fast. The room keeps that prompt, so the next question took 42 seconds, and the same task in a new session took 64 seconds. After a gateway restart, the plugin reads the prompt again as soon as the room is online, before you ask.
  • Our test ran both devices on one GB10, which a benchmark shared at the time. On two computers the times differ with their GPUs.

Every device that holds layers sees the conversation, including the files OpenClaw reads, and could steer its tool calls: share the invite link only with people you trust. See Who can see and steer what.

The chat says the room “is waiting for devices” or is short of memory

Section titled “The chat says the room “is waiting for devices” or is short of memory”

The room doesn’t have the devices it waits for, or their pledges don’t hold the model yet. /pooled says how many GB it is short. Add a device (step 6), lend more with /pooled pledge <GB>, or pick a smaller model with openclaw onboard. A question waits up to 120 seconds for the room before it gives up.

It came with the code, not the invite link. /pooled shows who waits, /pooled allow lets the first one in and /pooled deny turns it away. /pooled link prints the invite link to send instead.

Onboarding couldn’t start the gateway as a service. Run openclaw gateway run and keep it open.

No WebGPU adapter or the gateway can’t use the GPU

Section titled “No WebGPU adapter or the gateway can’t use the GPU”

The plugin needs Vulkan on Linux, Metal on macOS 26 or newer, or Direct3D 12 on Windows (NVIDIA GPUs). If the optional WebGPU package didn’t install, the gateway says how to add it.

With OpenClaw 2026.9.8 on Windows, the Control UI’s chat works only at /chat/main. Open that page of openclaw dashboard, or use openclaw tui.

More: OpenClaw and Troubleshooting.

The video’s task with made-up emails, no email account needed. Unzip sample-inbox.zip into your OpenClaw workspace (it makes an inbox/ folder with 15 made-up emails), then ask:

Triage my inbox: the 15 emails are in inbox/, read them all in one go. Sort them into reply today, later and ignore, one line each. Then draft short replies for the reply-today ones.

OpenClaw lists the folder, reads all 15 in one step and answers. In our run, the leaking ceiling, the moved deadline and the airport pickup went to reply today, and the “you won a yacht” email went to ignore. On a Mac Studio plus an RTX 5070 PC the answer streamed at 29 tokens a second.

Full walkthrough: a clean install and a real inbox

Section titled “Full walkthrough: a clean install and a real inbox”

Full walkthrough (5:27): OpenClaw and the plugin installed from scratch on a Windows PC with an RTX 5070 (12 GB, lends 10), a Mac Studio joining with npx @pooled/cli join (lends 14), and the same Gmail inbox: 6 drafts saved, nothing sent. Downloads and loading are sped up and labeled.

The email server in the video is @ni-c/imap-mcp. It has no send tool, and IMAP_ALLOW_TOOLS limits it to four tools: list folders, list messages, read a message and save a draft. On the gateway’s computer, in PowerShell:

npm install -g @ni-c/imap-mcp
openclaw mcp add email --command node --arg "$(npm root -g)\@ni-c\imap-mcp\dist\index.js" `
--env IMAP_HOST=imap.gmail.com --env IMAP_USER=you@gmail.com --env 'IMAP_PASSWORD=${IMAP_PASSWORD}' `
--env IMAP_READ_ONLY=false --env 'IMAP_DRAFTS_MAILBOX=[Gmail]/Drafts' --env IMAP_SEEN_KEYWORD= `
--env IMAP_TRUSTED_AUTHSERV_ID=mx.google.com `
--env 'IMAP_ALLOW_TOOLS=list_mailboxes,list_messages,get_message,save_draft' --connect-timeout 20
openclaw mcp probe email
  • Mind the quotes. 'IMAP_PASSWORD=${IMAP_PASSWORD}' is in single quotes, so PowerShell passes it as written: OpenClaw saves the reference, not your password, and fills it in from the environment when it starts the server. Set $env:IMAP_PASSWORD to a Gmail app password in the shell that runs openclaw gateway run. The [Gmail]/Drafts and allow-list values are single-quoted too. "$(npm root -g)..." is in double quotes, so PowerShell fills in the global npm folder. In bash, use "$(npm root -g)/@ni-c/imap-mcp/dist/index.js" and keep the single quotes.
  • IMAP_READ_ONLY=false is needed for save_draft. The allow list still leaves out every tool that moves or deletes mail. An empty IMAP_SEEN_KEYWORD stops the server from tagging the messages it reads.
  • openclaw mcp probe email should list 4 tools.

Then ask:

Triage my inbox: list my unread emails, sort them into reply today, later and ignore, one line each. Then save short draft replies for the reply-today ones.

The drafts wait in Gmail’s Drafts folder until you read and send them yourself.