by Jizai-inc
Provides a Python SDK and MCP server to control a six‑legged tabletop AI robot, enabling AI agents to execute motions, gestures, facial expressions, and speech directly from code.
Palmimo DevKit supplies the software stack for the Palmimo tabletop robot: a pure‑Python SDK, an MCP server that exposes robot capabilities as tools, and ready‑to‑run agent examples. It abstracts low‑level Dynamixel servo control, face‑display handling, and optional TTS/audio capture, letting developers focus on high‑level AI behavior.
git clone https://github.com/Jizai-inc/palmimo-devkit.gituv. From the repo root run uv sync (or uv add palmimo-sdk in another project).from palmimo_sdk import Palmimo
robot = Palmimo()
robot.wave()
robot.look(pitch=10, yaw=-20)
If no hardware is attached the SDK operates in dry‑run mode, returning simulated servo ticks.palmimo_sdk.agent or by calling the MCP server from Claude Code, OpenClaw, etc.piper-plus TTS and microphone capture with noise reduction.Q: Do I need the physical robot to develop? A: No. The SDK runs in dry‑run mode, returning simulated servo positions so you can develop and test logic without hardware.
Q: Which Python version is required? A: Python 3.12 or newer.
Q: How do I install the SDK in an existing project?
A: Use uv add palmimo-sdk (or pip install palmimo-sdk). Extras such as hardware, face, speech, agent, vision, and mcp can be added as needed.
Q: What safety precautions are needed when running on the real robot? A: Test motions in the air first, keep hands away from moving parts, monitor servo temperature, and always unplug power if the controlling process crashes.
Q: Can I extend the motion library?
A: Yes. Follow the motion‑development guide in doc/guides/motion-development-guide.md to add new gait or gesture definitions.
Q: How do I expose the robot to an external MCP client?
A: Run the MCP server (python -m palmimo_sdk.mcp or the documented entry point) and connect your client using the provided tool definitions.
Give AI agents a body. Palmimo DevKit is a six-legged tabletop AI robot you drive with your own Python — open-source SDK, MCP server, and agent examples by Jizai Inc.
Website · Documentation · Get a DevKit · Japanese
Palmimo is a customizable, general-purpose AI robot: a tabletop companion that meets your eyes, answers your voice, and speaks through expressions and gestures. Palmimo DevKit is its development kit — the robot arrives assembled and tested, and this repository is the software that runs it: a Python SDK, an MCP server and agent examples that turn LLM tool calls into robot actions, and the docs.
Under the hood, 18 leg servos walk it on a tripod gait, a servo neck aims a round face display, and a small expression engine gives it a face — all reachable from a few lines of Python, with no robotics background required.
The core idea: a single motion engine (pure gait + inverse kinematics, no I/O)
drives the robot through interchangeable front-ends — the palmimo_sdk Python
API and example agent apps — and every motion computes in dry-run, with no
hardware attached, before it ever reaches a servo.
Palmimo.forward() → step() → MotionEngine computes → {servo_name: tick} → ServoDriver → hardware
(or compute-only in dry-run)
palmimo_sdk.agent turns LLM tool calls into robot actions
(walk, wave, look, set a face, speak, capture a frame), and the model behind it is
swappable. palmimo_sdk.mcp serves the same tools over MCP to Claude Code,
OpenClaw, or any MCP client, and the example apps ship a wake-word agent and an
always-on companion agent — see Examples and
Serving over MCP.robot.wave(), robot.look(...), robot.forward().forward, strafe_left/right,
rotate_left/right, creep), gestures (wave, bow, clap, ...), and
poses (stretch, dance, pushup, ...), driven by an anti-phase
tripod gait; see the full list in the
motion list.look(pitch, yaw) independently of, and
simultaneously with, walking. The neck carries a third joint the motion engine
leaves at neutral; see Controlling motions.(motion, seconds) steps via Palmimo.play_realtime().piper-plus TTS and shared mic-stream capture with
GTCRN noise removal (palmimo_sdk.audio), used by the example agent apps.palmimo_sdk.Palmimo drives one MotionEngine; example
agent apps (see Examples) build on it as front-ends.
robot.bow() and robot.wave(), on the hardware.
Palmimo DevKit ships with 21 serial-bus servos (18 leg + 3 neck), a round face display, a 5 MP camera, a mic array and stereo speakers, and a Raspberry Pi 5 as the control host. What the software talks to, and over what, is in System architecture. Hardware design files are not part of this repository (see CONTRIBUTING → Scope); full specifications are on palmimo.dev.
palmimo_sdk Python SDK and drivers, the agent
layer and MCP server, the example agents and the OpenClaw connection kit, the
LeRobot plugins, the diagnostics, and these docs.Palmimo's control host is a Raspberry Pi 5, wired to the servo bus over USB, and it ships already imaged. The Raspberry Pi setup guide writes a card from scratch — Wi-Fi, SSH, and the runtime the Quickstart assumes — whether you are re-imaging the shipped card or preparing a Pi of your own.
No robot yet? Every motion computes without hardware — skip to Try the Python API.
On the Raspberry Pi, over SSH. Prerequisites: Python 3.12+ and uv — the setup guide above installs them on a card it writes.
git clone https://github.com/Jizai-inc/palmimo-devkit.git
on the Pi.uv sync from the repository root; the
installation guide covers extras, voice models,
and what to do when an import fails.uv run python scripts/diagnose_servos.py scan confirms
every servo answers before the first run. See
user diagnostics for the other subcommands.Commands auto-detect the servo bus; explicit ports are covered where detection is ambiguous.
⚠️ Test motions in the air before placing the robot on a surface — read Safety first.
Save this as walk.py in the repository root and run it with
uv run python walk.py:
from palmimo_sdk import Palmimo
robot = Palmimo()
robot.forward()
for _ in range(100):
pos = robot.step() # dict like {"leg_1_yaw": 2048, ...}
Palmimo() with no driver attached is compute-only, so this runs with no robot
connected.
Using palmimo_sdk from another project, without cloning this repository?
uv add palmimo-sdk (extras: hardware, face, speech, voice, agent,
vision, mcp — see
packages/palmimo_sdk/README.md).
This kit drives real, geared servos that can pinch, and runs on mains-derived power. Before powering the robot:
The software is provided “as is”, without warranty of any kind; you operate the hardware at your own risk.
The same pages, rendered: docs.palmimo.dev.
Getting it running
| Page | What it covers |
|---|---|
| Raspberry Pi setup | Preparing the control host, headless |
| Installation | Dependencies, voice models, troubleshooting |
Doing something specific
| Page | What it covers |
|---|---|
| Controlling motions | Driving the robot from your own Python |
| Serving over MCP | Exposing the robot's tools to an MCP client |
| Adding a new motion | The full checklist, engine to tests |
| Examples | The agent apps that ship in this workspace |
| LeRobot integration | Robot and teleoperator plugins. A separate uv workspace on purpose: they depend on lerobot, and this tree's own resolution deliberately does not |
| Releasing | Tagging a release and publishing the draft |
Looking something up
| Page | What it covers |
|---|---|
| Python API reference | Every public class, method, and tuning knob |
| Motions and gait parameters | The 18 motions and what you can tune |
| App manifest | palmimo.toml — the fields, params, and validation rules a host reads |
| User scripts | diagnose_servos.py — every subcommand and its safety notes; record_keyframes.py — pose by hand, save keyframes |
Understanding how it works
| Page | What it covers |
|---|---|
| System architecture | The layering, and why the engine has no I/O |
| How Palmimo moves | The kinematic chain and the tripod gait |
Contributors: see CONTRIBUTING.md for the checks CI runs and AGENTS.md for the coding and documentation rules.
Licensed under the Apache License 2.0, except the robot model
docs-site/public/models/palmimo.glb, which is a display-only asset under
its own notice.
Hardware design files are not included at this time; any future hardware release will carry its own license.
If you use Palmimo DevKit in academic work, please cite this repository — see CITATION.cff, or use GitHub's "Cite this repository" button.
Built on the ROBOTIS Dynamixel SDK.
The face-display firmware carries its own third-party attributions — the Waveshare RP2350-Touch-LCD demo and Noto Color Emoji (SIL OFL / Apache-2.0) — mirrored in NOTICE.
Please log in to share your review and rating for this MCP.
Explore related MCPs that share similar capabilities and solve comparable challenges
by headroomlabs-ai
Compress tool outputs, logs, files, RAG chunks, and conversation history before they reach the LLM, keeping answers identical while saving up to 95% of tokens for JSON payloads.
by modelcontextprotocol
A Model Context Protocol server for Git repository interaction and automation.
by zed-industries
A high‑performance, multiplayer code editor designed for speed and collaboration.
by modelcontextprotocol
Model Context Protocol Servers
by modelcontextprotocol
A Model Context Protocol server that provides time and timezone conversion capabilities.
by cline
An autonomous coding assistant that can create and edit files, execute terminal commands, and interact with a browser directly from your IDE, operating step‑by‑step with explicit user permission.
by upstash
Provides up-to-date, version‑specific library documentation and code examples directly inside LLM prompts, eliminating outdated information and hallucinated APIs.
by daytonaio
Provides a secure, elastic infrastructure that creates isolated sandboxes for running AI‑generated code with sub‑90 ms startup, unlimited persistence, and OCI/Docker compatibility.
by continuedev
Enables faster shipping of code by integrating continuous AI agents across IDEs, terminals, and CI pipelines, offering chat, edit, autocomplete, and customizable agent workflows.