Volkman Software
Unhanded app icon: a hand drawn in orange dots

Unhanded: a stop motion app that takes your hands out.

An iPhone and iPad app I designed and built. You record one continuous take while you animate, and Unhanded keeps a clean frame for each pose. Coming soon to the App Store; the waitlist is at unhanded.app.

The problem

Stop motion apps are built around a shutter button. Move the toy, step back, tap, repeat, hundreds of times for a short clip. Every tap breaks the rhythm of animating, and a hand left in the corner of a frame ruins it.

Unhanded drops the shutter button. You press record once and animate with both hands, and the app works out which moments are poses.

How it works

A continuous take of stop motion is a run of still moments separated by hands reaching in. Unhanded finds the still moments, keeps the sharpest frame from each, and lays them on a 24 fps timeline, each held for one or two frames.

A take as a strip of frames: hands-in stretches are dropped, each still stretch becomes one pose, and its sharpest frame is kept. Still: becomes a poseHands in: droppedSharpest frame kept

Hand detection alone isn't enough: it misses hands that are blurred, gloved or half out of frame, and it never sees arms or shadows. So a frame only counts as clean when two signals agree:

  • Hands: Apple's Vision hand pose detection, run on every frame.
  • Motion: how much the picture changed since the previous frame, which also catches arms, shadows and things still settling after a nudge.

The hands-in stretches are padded a little either side, short still moments are ignored, and two still moments that look the same are merged so a hand that reached in and changed nothing doesn't add a pose. Focus, exposure and white balance lock when recording starts, so a hand entering the frame can't make the picture flicker.

Built for the phone

All of the video work happens on the device, and footage never leaves the phone. The pipeline reads a take twice: once to measure each frame at low resolution, then again to write only the chosen frames at full resolution, so memory stays flat even on long 4K takes.

On top of that sits an editor for finishing a clip: per-pose timing and reordering, captions, and speech bubbles that follow a moving toy from pose to pose. There are also faces with blinking eyes and mouths that move with a recorded voice-over, sound effects on any pose, and looks. A take can be continued in a later session: the new recording is joined onto the original without re-encoding, and its poses are added after the existing ones.

Storyboards with Claude

Unhanded Plus, an optional subscription, writes a storyboard from an idea and an optional photo of your props: shots, pose counts, framing, props, set notes, sounds and speech bubbles. While you shoot, the camera shows each shot as a cue card.

The app talks to a Cloudflare Worker, which calls Anthropic's API with a JSON schema so the app always gets a storyboard it can read. The API key lives only on the server. Panels are drawn from a few simple shapes rather than generated images, and only the idea text and props photo are sent, after the app asks. Storyboards are still in testing.

Stack

  • App: Swift and SwiftUI, AVFoundation, Vision, Core Image and StoreKit 2, with the video engine in its own Swift package covered by automated tests.
  • Storyboard service: a Cloudflare Worker in TypeScript using Anthropic's SDK.
  • How it was built: agentically, with AI coding agents planning, writing and testing each feature under my direction and review.
  • Website: unhanded.app, a static site on Cloudflare Pages with a waitlist stored in Workers KV.

Get in touch

Want something like this built, or help with a site you already have?