explainx.ainewsletter3.5k
TrendingNewsPathwaysSkills
Pricing
explainx.ai

Upskill in AI — 16 free pathways, live workshops & bootcamps, and 50+ courses from practitioners. Plus the skills, tools, and MCP servers to practice on.

follow us

corporate training

support@explainx.ai

get started

Find your pathTake Free Evaluation

learn

pathways — start freeworkshopsbootcampscoursescertificationsmock testsexplainx universitycorporate traininglearn skills & mcp

discover

skillsmcp serversexplainx mcptoolsagentsllmsdesignsdictionaryagi trackerranks

company

aboutvisionmissionteaminstructorscommunityhackathonscareers

content

daily AI newsstate of AI — live resultsblogreleasespromptsgeneratorsresource libraryfor LLMsexplainx.ai kids

solutions

all solutionsdeveloper upskillingmarketing upskillingproduct manager upskillingleadership upskilling

newsletter · weekly

Get AI news, tools, and insights in your inbox.

supportcontactprivacytermsdata rightshow we create contentsubmission guidelines

© 2026 AISOLO Technologies Pvt Ltd

On this page

  • TL;DR — what you get and what you do not
  • The core idea: an agent body with two surfaces
  • Setup: the shortest path from clone to camera
  • Give the board a vault and a media boundary
  • The gestures are a language, not a demo trick
  • How to connect an agent without making the board the agent
  • Security: what the README's boundaries do—and do not—promise
  • What Barehands is good at today
  • AGPL-3.0-or-later: commercial use with a sharing condition
  • What to ask before building on it
  • The larger idea: agents need bodies that are inspectable
  • Related reading
← Back to blog

explainx / blog

Barehands: Give AI Agents Hands With a Webcam

Barehands turns a webcam and Chrome into a hand-tracked interface for AI agents. Learn how its ring, board protocols, media jail, and AGPL license work.

Aug 22, 2026·14 min read·Yash Thakker
AI AgentsComputer UseOpen SourceHuman Computer InteractionDeveloper Tools
go deep
Barehands: Give AI Agents Hands With a Webcam

Barehands is a webcam-powered interface that lets an AI agent put things on a stage in front of you. Notes, images, and 3D models appear as glass cards. You pinch to move them, use two hands to scale them, drag to scrub an exploded model, and clap to clear the board.

The interesting part is not the hologram language. It is the separation underneath: Barehands supplies a body—camera, gestures, ring, and board—while the agent supplies the brain. The two meet through tiny state files and localhost commands rather than a vendor-specific model API.

The project's official repository describes the setup as a webcam plus Chrome, with a standard-library Python server. Its demo video shows the intended interaction: a person moves through a spatial interface while an assistant can use the same surface to present information. That makes Barehands a useful case study in what an agent interface looks like when the output is spatial and visible instead of another block of chat.

Barehands demonstrates a webcam-powered board where hand gestures move cards, images, and 3D objects while an AI agent can act through local protocols.

The companion Jarvis assistant video is useful context for the same design direction: the visual surface is not the model, but a way to give an assistant a presence, a state, and a place to put the result.

A second Barehands-oriented demo framing the webcam board as a visible body for a personal AI assistant.

TL;DR — what you get and what you do not

table · 2 cols
QuestionAnswer
What is it?A Chrome-based hand-tracked board for notes, media, and 3D objects, driven by a local Python server.
What hardware is required?A webcam and a computer that can run Chrome; no headset, gloves, or controllers.
Does it require one AI provider?No. Any program that can write files or call localhost can act as the brain.
How does the ring work?The UI reads state/state; writing thinking, listening, speaking, or idle changes the ring state.
How does the board work?bin/board.sh accepts JSON actions such as present, add_card, add_img, hand, explode, yank, and hover.
Can it read my whole filesystem?The documented media surface restricts displayed props to media/; notes are explicitly configured paths, so review access before connecting an agent.
Is the license permissive?It is AGPL-3.0-or-later: commercial use is allowed, with source-sharing obligations for versions or modified services you pass on.
Is this a production computer-control layer?Not by default. It is an exciting local interface with a small protocol surface, but it still needs threat modeling, testing, and operational hardening.
Weekly digest3.5k readers

Catch up on AI

Curated AI updates on agents, skills, and MCP — delivered to your inbox. Unsubscribe anytime.

The core idea: an agent body with two surfaces

Barehands has two visible surfaces and two correspondingly small control paths.

The ring is the face

The ring is a compact status display. The agent writes a word to state/state, and the interface reacts:

text
thinking
listening
speaking
idle

That is deliberately simpler than streaming an assistant's full internal trace into the UI. The ring communicates presence and mode, not a transcript. A user can see that the agent is listening or speaking without surrendering the whole board to a chat panel.

For Claude Code users, the repository describes hooks that mirror real sessions into the ring. This is the same general pattern covered in our Claude Code hooks guide: a lifecycle event updates a local side effect. The difference is the output—rather than running a formatter or blocking a command, a hook makes the agent's state legible in the room.

The board is the stage

The board is where the agent shows its work. A present action can move a card to center stage, enlarge it, and dim the rest. Other actions add or manipulate pieces of the scene:

table · 2 cols
Action familyWhat the README describes it doing
presentMake one item the focal point and reduce visual competition.
add_cardPut a text or Markdown-backed card on the board.
add_imgAdd an image from the configured media surface.
handStage a hand-oriented board interaction.
explodePull a 3D model apart into an exploded view.
yankPull an object across the board toward the user.
hoverKeep an object as a floating board element.

The reverse path is just as important. bin/board-state.sh reports what is already on the board so the agent can inspect before it speaks or changes the scene. That read-before-write behavior is a small but meaningful agent design choice: the assistant gets an external state it can query instead of assuming the UI still matches its last action.

This is the spatial equivalent of an agent harness. The harness defines what the model can do, how it observes state, and what actions are valid. Barehands does not attempt to be a complete harness, but its ring and board protocols provide a narrow, inspectable interface that a harness can call.

Setup: the shortest path from clone to camera

The README's minimal path is intentionally small:

bash
git clone https://github.com/jaredrhod/barehands
cd barehands
python3 server.py

Then open http://127.0.0.1:8794/stage.html in Chrome, approve camera access, and use the board. On Windows, the README uses python server.py rather than python3.

The Python server is described as standard-library only. The browser loads Google MediaPipe for hand tracking and three.js for 3D rendering from public CDNs on first run. That keeps the repository small and the initial install approachable, but it also creates two operational questions:

  1. What exactly is loaded at runtime? Pinning or reviewing CDN versions matters if the interface is used in a controlled environment.
  2. What does camera permission expose? The browser is receiving the camera stream, so the machine and browser profile should be treated as part of the trust boundary.

Barehands does not need an account, API key, hosted database, or model subscription to draw the scene. That makes it a useful local-first surface for a model you already operate, but it does not make the agent itself local or private automatically. The brain can be any program, including one that sends the content it reads to a remote service.

Give the board a vault and a media boundary

The notes surface is a configured folder of Markdown. An Obsidian vault works because the project treats the vault as files rather than as a proprietary database. The example configuration looks like this:

json
{
  "name": "Assistant",
  "orbs": [
    { "title": "Notes", "path": "~/MyVault", "kind": "notes" },
    { "title": "Props", "path": "media", "kind": "media" }
  ]
}

The Notes orb points at the knowledge a person wants to browse. The Props orb is more constrained: the README calls media/ a “props airlock” and lists separate locations for ordinary images, transparent effects, 3D models, and hologram rendering.

That split is a good default for agent interfaces. Notes are information to retrieve; props are things the agent is allowed to put on stage. Keeping the media surface in a named directory gives the server a place to enforce a boundary instead of allowing every arbitrary path to become a visual asset.

It is not a complete data-loss prevention system. A configured notes path can still contain sensitive information, and an agent that can call a local script may have other permissions outside the board. Treat the jail as one layer in a defense-in-depth design, not as proof that every connected model is safe.

For a deeper look at durable agent context, compare MemPalace's local memory architecture and benchmark caveats. Barehands handles the visible, spatial side of memory; a vault or memory system handles what the assistant can recall.

The gestures are a language, not a demo trick

The project documents a compact gesture vocabulary:

  • Tap / quick pinch: open and close.
  • Pinch-drag: move an object.
  • Hold while carrying: rotate a 3D object.
  • Two hands: scale.
  • Flick: throw.
  • Clap: sweep the board clean.
  • Claw: pull a distant object toward your hand.
  • Empty pinch dragged sideways: scrub an exploded model apart and back together.

This matters because a spatial agent interface needs verbs, not just a canvas. “Show me the plan” can map to present; “bring that model here” can map to yank; “take it apart” can map to explode. The human gesture vocabulary and the agent command vocabulary describe the same scene from opposite sides.

The README says the thresholds were tuned on real hands and use ratios rather than absolute hand size, so distance from the camera should not be the only calibration variable. That is a design claim, not a guarantee for every camera, lighting condition, skin tone, background, or hand pose. The included troubleshooting material is important precisely because gesture recognition fails at the edges: debug overlays and pose sampling turn a mysterious misfire into a measurable tuning problem.

How to connect an agent without making the board the agent

The safest conceptual model is to keep Barehands as a capability surface, not the decision-maker. A separate agent or harness should decide when to act, then use a small allowlisted vocabulary to express the result.

A simple workflow might look like this:

text
User request
    ↓
Agent reads notes and board state
    ↓
Agent chooses a bounded board action
    ↓
bin/board.sh receives JSON
    ↓
Server validates action and media path
    ↓
Board presents the result

The state file provides a lightweight heartbeat. The board-state script provides observation. The action allowlist provides a constrained output channel. Together, those are the beginnings of an agent loop: observe, decide, act, observe again.

The README also says a local LLM, cron job, or Stream Deck button can act as the brain. That is a useful portability test. If the interface depends on one assistant's proprietary computer-use API, it is a product integration. If it accepts files and localhost commands, it is closer to a protocol that many agents can implement.

That protocol is not automatically interoperable. Every agent still needs instructions for the action schema, JSON escaping, failure handling, and when to read board state. A good setup guide should tell the agent to validate paths, avoid shell interpolation, confirm destructive actions, and recover when the browser or server is unavailable.

Security: what the README's boundaries do—and do not—promise

Barehands includes several sensible constraints:

  1. Local default: the documented URL binds the interaction to 127.0.0.1.
  2. Action allowlist: the server recognizes a defined set of board verbs.
  3. Media jail: displayed media is restricted to the configured media/ surface.
  4. Explicit camera permission: Chrome asks before the page receives camera access.

Those reduce accidental exposure, but an AI-connected local server remains security-sensitive. Before handing it to an autonomous agent, review:

table · 2 cols
BoundaryQuestion to answer
Localhost exposureDoes the server bind only to loopback, or has a proxy made it reachable on the network?
Shell wrappersDo bin/*.sh quote JSON safely and reject unexpected paths or arguments?
Agent permissionsCan the agent write only the state/config files, or execute arbitrary shell commands?
Notes pathDoes the configured vault contain secrets, private health data, credentials, or client material?
Browser runtimeAre MediaPipe and three.js loaded from pinned, trusted CDN URLs?
Destructive gesturesDoes clap-to-clear require a confirmation or an undo path for important boards?
License and redistributionDoes your deployment satisfy AGPL obligations if you modify and provide it to others?

This is where Barehands differs from a polished computer-use demo. A demo can show a model clicking through an app. A reusable agent interface must define permissions, state, failure recovery, and what happens when the model is wrong. Our computer-use coverage explains the same distinction from the managed desktop-agent side.

What Barehands is good at today

The project is a strong fit for workflows where visual arrangement is part of the task:

  • Planning: present a plan card while the agent speaks through the next steps.
  • Research: place source notes and media props on a board for comparison.
  • 3D explanation: show a model, rotate it, and expose its exploded structure.
  • Teaching: let a learner manipulate a concept instead of reading a static answer.
  • Streaming: mirror the transparent stage into OBS for a tutorial or short video.
  • Ambient status: turn the ring into a visible “thinking/listening/speaking” signal during a voice or coding session.

It is less suited to unattended automation, high-stakes data, or a replacement for a full desktop sandbox. The interface is local, but the connected agent may not be. The gesture system is expressive, but camera quality and lighting still matter. The protocols are simple, but their safety depends on how carefully the scripts and calling agent are constrained.

AGPL-3.0-or-later: commercial use with a sharing condition

Barehands' README says it can be used, changed, and built on commercially. The repository is licensed under AGPL-3.0-or-later, which is not the same as a permissive MIT or Apache license.

The practical question is not “can a business use it?” The answer in the README is yes. The practical questions are:

  • Are you passing a modified copy to another person or organization?
  • Are you running a modified version as a service for other users?
  • Are you preserving the license and providing the corresponding source required by the AGPL?
  • Do you need a separate commercial license for a closed-source product?

The repository's LICENSE is the authority. This article is not legal advice, and a closed product embedding or offering a modified Barehands service should get a license review before shipping.

What to ask before building on it

Barehands' most promising contribution is its protocol shape, but a serious evaluation should go beyond the demo video:

  1. Can you reproduce the setup on your camera and lighting? Test gestures at the distance and angle you will actually use.
  2. What does the server expose? Read server.py, bin/, and stage.html; do not infer the security model from the README alone.
  3. What is the failure mode? Disconnect the browser, corrupt the JSON, remove a media file, and send an unknown action.
  4. Can the agent observe? Make it call board-state.sh before changing the scene and verify that its mental state matches the board.
  5. What data leaves the machine? Inspect CDN requests, model-provider calls, logs, and the configured notes path.
  6. What survives a restart? Decide which state is ephemeral and which notes/configuration should be backed up.
  7. Who can trigger a destructive action? Add confirmation or undo around board-clearing gestures if the stage contains valuable work.

This is the right evaluation posture for any viral open-source agent project. MemPalace's post-launch README corrections are a useful reminder that a compelling README and a reproducible implementation are related, not interchangeable.

The larger idea: agents need bodies that are inspectable

AI agents are often presented as invisible workers: they read context, call tools, and return text. Barehands suggests another interface model. The agent can have a face, a stage, a set of gestures, and a visible world state without becoming a humanoid robot or a full virtual-reality system.

The best part is the inspectability. A user can see the object the agent is presenting, move it by hand, ask the agent to read the board, and interrupt the scene. The model remains powerful, but the interface gives the person a physical checkpoint between intention and action.

That is why the “body waiting for a brain” description works. The brain does not need to be one vendor's assistant. It can be a local model, a coding agent, a voice loop, or a small script—as long as it can observe and act through the documented boundary.

Barehands is not yet proof that holographic interfaces are the future of agent work. It is something more useful: a concrete experiment in making agent state and output spatial, while keeping the control surface small enough to inspect. The next question is not whether a model can make a card fly across the room. It is whether the protocol remains predictable when the agent is wrong, the camera is noisy, the board is full, and the data is private.

Related reading

  • What is an agent harness? The scaffolding layer that makes AI reliable
  • Claude Code hooks: automate actions before and after tool calls
  • MemPalace and the reality of local AI memory benchmarks
  • OpenAI Codex computer use on Windows and mobile steering
  • What are AI agents? A complete beginner's guide
  • Loop engineering for AI agents
  • Barehands on GitHub
  • Barehands demo video
  • Barehands Jarvis assistant video

Repository behavior, setup commands, license language, and feature descriptions reflect the Barehands README and repository available on August 22, 2026. Dependencies, scripts, CDN versions, supported browsers, and security properties can change; inspect the current source before using it with private data or an autonomous agent.

Spotted something out of date? Let us know.
Yash Thakker

Written by

Yash Thakker

Yash is an AI expert with over 300K learners. Join his workshops →

Related posts

Aug 20, 2026

OpenBot: CopilotKit's Open-Source AI Coworkers With a Computer Each

CopilotKit CEO Atai Barkai launched OpenBot on August 19, 2026 — an MIT-licensed, self-hosted take on Grok Bot. Any AG-UI agent becomes a coworker with its own browser, files, and tools, and a gateway decides and records every action before it runs. It is alpha, it needs a CopilotKit Intelligence license, and the issue tracker already has authorization and policy gaps.

Jul 22, 2026

Jack Dorsey's Buzz: Team Chat, AI Agents, and Git Hosting in One Nostr-Signed Workspace

Jack Dorsey announced Buzz on July 21, 2026 — a self-hostable, open-source workspace where humans and AI agents share one identity system across chat, Git, and workflows. Every message and code event is a signed Nostr event. Here's what's real, what's early, and why it matters for anyone running Claude Code, Codex, or Goose on a team.

Jun 24, 2026

Google Fired the Engineer Who Built Its Viral Workspace CLI — Two Days Before Announcing the Official One

Justin Poehnelt spent nearly seven years at Google on the Workspace DevRel team. He built an open-source CLI for Google Workspace — Drive, Gmail, Calendar, 40+ agent skills — that went viral, hit #1 on Hacker News, and gained thousands of users within days. Then Google fired him. Two days later, Google Cloud Next announced an official Workspace CLI was coming. The irony is precise. The story behind it reveals something about how large companies respond to internal disruption in the age of AI agents.