Set up your deck
An always-on touch display for AI agents on the Panlee SC01 Plus or SC01. It lives on your WiFi; your agents talk to it over the local network.
1 · Find your NebulaDeck
Keep the screen showing its QR code, then pick NebulaDeck in the Bluetooth dialog.
2 · Choose your network
3 · You're online
Your NebulaDeck is on at nebuladeck.local (). In a few seconds it switches to “Agent not connected”.
Next, set up your agent. If nebuladeck.local doesn't work on your computer,
set up your agent with the IP instead.
To change network later, tap the logo on the screen → Forget WiFi.
1 · Connect the board
Plug the board in with a USB data cable. Both boards work with the same button below: it detects which one you have.
- SC01 (ESP32): nothing else to do, it switches to install mode by itself.
- SC01 Plus (ESP32-S3): usually works as is too. If the install can't connect, put it in download mode: on the DEBUG header jumper
BOOTtoGND, then press RST (the screen may stay dark).
2 · Install
The stable release. Updates arrive over WiFi when a new version is released.
Be patient: installing takes a couple of minutes, and the Erasing step can sit still for a while before progress moves. That's normal. Keep this tab open and the cable connected until it says it's done.
In the browser dialog pick the board's port: usbmodem / Espressif for the SC01 Plus, usbserial / CP210x or CH340 for the SC01. Installing replaces whatever is on the board.
3 · Finish
- If you used the
BOOTjumper, remove it and press RST. The screen shows a welcome QR code. - Connect it to WiFi: continue with Connect to WiFi.
Device address
Where your agents reach the screen. Keep nebuladeck.local, or use the IP from the screen's logo menu if .local names don't work on your network. Everything below updates as you type.
From a terminal:
Claude Code · skill
The skill tells Claude when to update the screen and how to ask you questions on it. Run this in a terminal, then start a new Claude Code session:
mkdir -p ~/.claude/skills/nebuladeck && cd ~/.claude/skills/nebuladeck && \
curl -fsSL {{BASE}}SKILL.md{{SED}} > SKILL.md && \
curl -fsSL {{BASE}}hooks.json{{SED}} > hooks.jsonOr download SKILL.md into ~/.claude/skills/nebuladeck/.
Optional · live status while chatting
Hooks show “Claude connected” with “Thinking…”, “Running a command…”, “Needs you” and “Ready” in every session. Each one is a background curl that sends only the event name. With the skill installed, ask Claude:
Install the NebulaDeck hooks from the nebuladeck skill's hooks.json into my ~/.claude/settings.json.
Or merge hooks.json into ~/.claude/settings.json yourself.
Codex CLI
Add the instructions to your global ~/.codex/AGENTS.md (or to AGENTS.md in one repo):
mkdir -p ~/.codex && cat >> ~/.codex/AGENTS.md <<'EOF'
{{INSTR}}
EOFCodex runs commands in a sandbox with networking off by default, so the curl calls fail silently. Allow it in ~/.codex/config.toml:
[sandbox_workspace_write] network_access = true
Gemini CLI
Add the instructions to your global ~/.gemini/GEMINI.md (or to GEMINI.md in one repo):
mkdir -p ~/.gemini && cat >> ~/.gemini/GEMINI.md <<'EOF'
{{INSTR}}
EOFIf you run Gemini CLI with its sandbox on, make sure it can reach your local network.
Cursor
For every project: Cursor Settings → Rules → User Rules, and paste:
{{INSTR}}Or for one project, from its folder:
mkdir -p .cursor/rules && cat > .cursor/rules/nebuladeck.mdc <<'EOF'
---
description: NebulaDeck desk status screen
alwaysApply: true
---
{{INSTR}}
EOFThe agent runs the curl commands in Cursor's terminal; approve them, or allow curl in your auto-run settings.
GitHub Copilot (agent mode)
Add the instructions to the repo's .github/copilot-instructions.md, from the repo folder:
mkdir -p .github && cat >> .github/copilot-instructions.md <<'EOF'
{{INSTR}}
EOFCopilot runs the curl commands in the editor's terminal, so agent mode needs permission to run them.
Any other agent
Anything that can run curl can drive the screen. Paste this into your agent's instructions (rules file, system prompt, custom instructions):
{{INSTR}}Full API: docs/PROTOCOL.md.
What you need
- 1×Panlee SC01 Plus or SC01 · in its case, back cover off
- 4×M3 × 5 mm self-tapping screws
- 1×USB-C to USB-C cable · one end right-angled
- 1×Printed stand · plus a small Phillips screwdriver
Print the stand
The stand is a single part. Get the 3MF for a ready-made print project, or the STL to slice it yourself.
Assembly
Take the back cover off the board's case and keep the front frame on: the stand screws into the frame's four corner posts. Have the cable, the four screws and the stand ready.
Put the board screen-down with its USB-C port towards the stand, and the stand's open side facing the board. The slot in the back of the stand lines up with the port.
Push the straight end of the cable through the slot from the inside, then plug the right-angle end into the board. Point the angled plug so the cable runs flat towards the slot.
Fold the stand onto the back of the board, making sure no cable is pinched at the edges. Drive the four screws through the stand's corners into the posts. Snug is enough: self-tapping screws strip plastic if overtightened.
Turn it upright and plug the other end into your computer or a USB charger. New board? Flash the firmware next.
Source & docs on GitHub · MIT licensed · Runs on your local network only