We’ve been using Claude Code for U-Boot development and it’s genuinely useful — writing tests, debugging driver issues, working through refactoring. But running an AI with full access to my dev machine makes one…nervous. So we added a cc subcommand to uman, a tool for managing common U-Boot development tasks, that runs Claude Code inside an LXC container.
Note: uman is someone ‘opinionated’, if you are familiar that term. It expects directories to be in certain places and is so far aimed at Debian-based distributions, particularly Ubuntu.
Why bother?
Claude Code works best with --dangerously-skip-permissions so you don’t have to approve every file read. On a bare host that means the AI can poke around anywhere: SSH keys, other projects, whatever. Inside a container it only sees what you give it.
If things go sideways, uman cc -d mybox and start over.
Getting started
You need LXD:
sudo snap install lxd
lxd init --minimal
sudo usermod -aG lxd $
Then just:
cd ~/dev/u-boot
uman cc
First run takes a couple of minutes – it creates an Ubuntu container, installs build tools and Claude Code, mounts your project, and drops you in. The container sticks around, so next time it’s instant. Use uman cc -c to continue where you left off.
What’s inside
The container gets your project directory, git config, Claude credentials, U-Boot tools, and patman. Each container has its own Claude project scope so --continue works per-container. Build output in /tmp/b can be shared with -o
You can mount extra directories with -m :
uman cc -m /opt/test-data
uman cc -M # list mounts
uman cc -u data # remove one
Talking to the host
A container isn’t much use if you’re completely cut off. A few things are wired through:
Clipboard — X11 is forwarded, so Ctrl-V pastes images from the host. Handy for showing Claude a screenshot of a test failure or a logic analyser trace.
Editor — Ctrl-G opens your host $EDITOR. An editor proxy maps container paths back to host paths, so you edit the real file in your normal editor.
Voice — PulseAudio is forwarded. /voice in Claude Code picks up your host microphone so you can talk instead of type.
gh / glab — Both CLI tools are pre-installed for managing PRs and CI without leaving the container.
Other bits
Shell access – uman cc -s gives you a plain shell in the same container. Useful for poking around or running builds manually.
Privileged mode – LUKS tests need device-mapper, which needs uman cc -p. Use -P to go back to normal. This turned out to be more trouble than it’s worth, so please send a PR if you can improve it.
Ephemeral containers – uman cc -e creates a throwaway container with a random name, deleted on exit. Good for experiments.
Session logging – Every session is recorded with script(1) to a timestamped log under ~/files/dev/uman-logs/<name>/ – useful for reviewing what the AI actually did.
Try it
Grab uman from GitHub, cd to your U-Boot tree, and run uman cc. The container handles the rest. If you like it, please add a comment. If you hate it, please send a PR!


