Robotic Hands
Mechanical hands, servo control, gesture systems and experiments in turning text interaction into physical movement.
A working lab for robotics, software, systems, fabrication and the occasional idea that refuses to stay on the whiteboard.
WEZLAB is more than the hardware on the bench. It is the mix of projects, music, machines, curiosity, home life and good company that gives the work its character.
WEZLAB is deliberately broad: physical builds, software tools, infrastructure, experimentation and documentation all belong here.
Mechanical hands, servo control, gesture systems and experiments in turning text interaction into physical movement.

Fleet administration, diagnostics, reporting and tools for managing a growing collection of Raspberry Pi systems.
Small Linux systems, cameras, network experiments, remote access and useful utilities built around Raspberry Pi hardware.
Web controls, small device interfaces, servo controllers and experiments that connect software to physical hardware.

Servo mounts, spacers, enclosures and small mechanical experiments designed, iterated and printed in the workshop.
Story concepts, speculative systems and thought experiments that sit somewhere between engineering, technology and fiction.
An early WEZLAB-style robotics build from around a decade ago: a 3D printed rover developed alongside its CAD model, with custom bodywork and distinctive multi-roller wheels. A reminder that the current fleet has much older roots.
This report tells the story of an experimental physical-computing project that began with a pair of servo-driven robotic hands and evolved into a distributed Raspberry Pi fleet, remote administration tooling, read-only diagnostics, AI-assisted control, evidence collection, and a progressively stricter governance model for any action that can affect physical hardware.
What started as “can two robotic hands communicate through gestures?” steadily became a much broader engineering exercise: mechanical prototyping, servo calibration, web control, secure remote access, service management, fleet visibility, controlled AI integration, evidence capture, resilience testing and policy enforcement.
Independent five-finger servo control with a gesture vocabulary and conversation-oriented motion sequences.
Hand001, Hand002, Rover nodes and WEZUTIL were progressively managed as a small distributed fleet rather than isolated devices.
The project moved from direct experimentation toward explicit read-only observation, approval gates, correlation, provenance and bounded action.
Two small robotic hands on a desk would act as a physical communication channel. Instead of expressing meaning only through text or emoji, a remote user could cause one hand to wave, point, give a thumbs-up, make a fist, perform a finger-heart or execute a short sequence.
The hands were not intended merely as puppets. The long-term idea was that one side could represent a human participant while the other could represent an AI participant, giving a text-based AI a physical expressive layer.
Early work therefore had to solve two problems at once: the obvious mechanical problem of moving fingers reliably, and the less obvious systems problem of making that movement remotely accessible, repeatable and safe.
Multiple handmade hand prototypes were developed, refining the physical form, tendon/servo behaviour and the practical arrangement of left- and right-hand mechanisms. This established the basic movement model before the software stack matured.
A Flask-based controller exposed gesture controls through a browser. A secure remote-access path was established over Tailscale. An external user successfully authenticated, ran a demo and controlled the hand remotely — an important proof that the project worked outside the local LAN.
The project expanded from single gestures to coordinated sequences across two hands. Conversation-oriented builds introduced generated gesture sequences and then dynamic behavioural language concepts, moving toward hand-to-hand expression rather than simple button-driven movement.
Successive software versions introduced dynamic topic sequences and speaker-aware execution. The user interface was refined so left and right controls visually matched the physical hands, while calibration and hand-orientation issues were corrected.
The architecture became explicit: Hand001 represents the human side; Hand002 represents the AI side. The desired interaction became “human speaks through Hand001, AI responds through Hand002,” with finger movement acting as a physical interpretation of AI-generated output.
Rover nodes were introduced as additional Linux endpoints. AI-assisted controller experiments demonstrated live observation of Hand001 status and tightly guarded physical execution. Correlated verification was then added so that an action request and the observed result could be linked as one auditable event.
Hand001 was exposed through a small MCP service so an AI client could inspect status, service health and system information. The first successful live query showed the AI calling Hand001 tools, reading its controller state and reporting back without relying on manual copy/paste.
Administration moved beyond SSH shortcuts. Node Admin gained diagnostics, Bash execution under guardrails, HTML evidence reporting, editable connection data and increasingly strong provenance around what was run and where.
A Raspberry Pi 400 named WEZUTIL became the dedicated Raspberry Pi OS 64-bit utility/admin console. PowerShell, Python, Tailscale and diagnostic scripts were brought together into a reusable fleet-health and reporting environment.
The later architecture treats Hand001 as the required governed physical endpoint, while Hand002 and Rover nodes may be optional. Optional endpoint failures no longer need to collapse the whole console. Read-only diagnostics, bounded AI tool calls, approval gates and separate physical-action authority are central design rules.
The project is best understood as several layers rather than one application.
Uses browser UIs, WEZ/Node Admin, diagnostic tools or an AI client.
Fleet visibility, connection management, diagnostics, evidence and guarded execution.
Structured model-facing tools, largely observation-only, with bounded discovery and explicit authority boundaries.
Private connectivity between workstation, hands and rover nodes without exposing controller ports publicly.
Linux services, status endpoints, scripts and hardware interfaces.
PCA9685 PWM control, ten servo channels across the two hands, gesture definitions and calibrated actuation.
| Node | Role in the project | Typical capability |
|---|---|---|
| Hand001 | Primary governed physical endpoint; often treated as the human-side hand. | Controller service, web UI, status APIs, gesture execution, MCP observation and supervised physical action. |
| Hand002 | Second robotic hand; evolved toward the AI-side physical participant. | Independent controller, gesture execution, read-only model-facing observation in later architecture. |
| Rover007 / Rover007-1 | Experimental Linux/AI controller and fleet endpoint. | Observation, guarded scripts, AI-client experiments and fleet diagnostics. |
| Rover008 | Additional optional fleet node. | Fleet observation and diagnostics. |
| WEZUTIL | Dedicated administration workstation built on Raspberry Pi 400. | PowerShell 7, Python, Tailscale, fleet testing, HTML reporting and admin-console functions. |
The controller progressed through conversation, dynamic-behaviour and speaker-aware versions, culminating in an end-user interface suitable for demonstrations and remote interaction.
What began as connection/administration convenience grew into a multi-service diagnostic console with version-aware controller discovery, generated HTML reports and stricter separation between observation and execution.
AI clients moved through several iterations, including resilient startup and optional-endpoint handling. Later designs kept model-facing capabilities tightly bounded and made the authority of each tool explicit.
The most significant architectural change was the deliberate separation of seeing from doing. Earlier experimentation proved that remote physical actions were possible; later work concentrated on making sure they could not happen casually or ambiguously.
A user outside the local LAN authenticated over the private network, ran a demo and successfully controlled a hand.
Coordinated gesture sequences demonstrated that the project could express a conversation-like exchange, not merely isolated motions.
An AI client successfully called live Hand001 tools and reported current controller and system state from machine evidence.
Later controller work demonstrated supervised physical action with correlation between the requested action and observed execution.
WEZUTIL and Node Admin turned multiple Raspberry Pis into a manageable fleet with reusable diagnostics and HTML evidence.
Optional Hand002/Rover endpoint problems were designed not to prevent operation of the required Hand001 path.
The current direction is much more disciplined than the original prototype. Hand001 is treated as the required, governed physical device; Hand002 and Rover nodes can be optional participants. Administration and diagnostics are primarily read-only, while physical execution is a separate, explicitly controlled capability.
| Area | Current maturity |
|---|---|
| Mechanical hand concept | Proven through multiple prototypes and working servo-driven hand assemblies. |
| Remote access | Proven using private Tailscale connectivity and browser/controller access. |
| Human ↔ AI physical metaphor | Architecture established: Hand001 as human side, Hand002 as AI side. |
| Fleet visibility | Established through WEZUTIL / Node Admin and multi-node diagnostics. |
| AI observation | Proven through structured MCP/read-only tools and live device interrogation. |
| Physical AI action | Possible, but deliberately governed, bounded, supervised and kept separate from read-only tooling. |
| Reporting / evidence | HTML fleet reports, session logs and provenance have become first-class parts of the system. |
Although the project is experimental, the design problems are directly relevant to enterprise engineering.
Give a tool only the capability required for its task. Observation and action should not automatically share the same permissions.
Discover the running service, version and state rather than assuming the environment matches a static design.
Optional systems should degrade gracefully; failure of one secondary endpoint should not make the required path unusable.
Where an action has real-world effect, explicit approval and clear presentation of intent are valuable controls.
Knowing who initiated an action, what code or script was involved and what result was observed becomes as important as the action itself.
A useful prototype often exposes the need for administration, configuration, diagnostics and governance long before it needs more features.
The Hand/Fleet project began as a creative question about giving digital communication a physical form. It now represents a much broader experiment: how to build a small fleet of real devices that an AI can understand, observe and — under tightly controlled circumstances — help operate.
The result is not one finished product so much as a working engineering platform: robotic hardware, private networking, Linux services, browser interfaces, administration consoles, fleet diagnostics, AI-facing tools and an increasingly deliberate safety model. Each layer was added because the previous layer exposed a real operational need.
Not every visitor to WEZLAB arrives through Tailscale.
In the middle of an ordinary session at the desk, a local python quietly appeared and came close enough to investigate what was going on. The camera happened to be within reach, turning an entirely unplanned encounter into one of those small moments worth keeping.
WEZLAB is not intended to present only finished work. It is a record of the process: prototypes, revisions, mistakes, discoveries and the occasional “aha” moment that sends a project in a completely different direction.
Turn an idea into something that can actually be touched, run or tested.
Pay attention to what really happens rather than what was supposed to happen.
Keep the useful parts, change the weak ones, and make the next version better.
WEZLAB is an independent project space for documenting hands-on experiments across software, robotics, infrastructure, fabrication and creative technology.
It is intentionally a workshop rather than a showroom. Some projects will be polished. Others will be half-built, under test or heading back to the drawing board. That is part of the point.
Public material is deliberately separated from private, customer, employer and production information.