NanoClaw
NanoClaw turns self-update into a recoverable transaction
NanoClaw proposes staging upgrades in an isolated worktree, snapshotting mutable state, cutting over only after build/tests and restoring code plus data after a failed restart. The underlying report shows the current updater can merge live code, continue after skill-refresh failure and stamp success without exact commit or socket health.
nanocoai/nanoclaw PR #3195 is the inspected primary source: “fix(update): make NanoClaw upgrades transactional.” The related records below were inspected as supporting context rather than independent confirmation.
The facts
- nanocoai/nanoclaw PR #3195 was created 2026-08-06T11:55:13Z and was open at inspection; its title is “fix(update): make NanoClaw upgrades transactional.” - nanocoai/nanoclaw issue #3194 was created 2026-08-06T11:48:07Z and was open at inspection; its title is “`/update-nanoclaw` can stamp success without a recoverable cutover.” - nanocoai/nanoclaw issue #2006 was created 2026-04-25T09:09:27Z and was open at inspection; its title is “Fresh install on Debian 12 LXC: docker socket permission denied — recovery path doesn't fire.” - The repository reported 30457 stars, 865 open issues, default branch main, and last push 2026-08-06T13:28:16Z. - The latest tagged-release baseline checked was v2.1.54 published 2026-08-01T20:46:31Z.
What changed
nanocoai/nanoclaw PR #3195 reports: Type of Change [ ] **Feature skill** - adds a channel or integration (source code changes + SKILL.md) [ ] **Utility skill** - adds a standalone tool (code files in.claude/skills/ /, no source changes) [ ] **Operational/container skill** - adds a workflow or agent skill (SKILL.md only, no source changes) [x] **Fix** - bug fix or security fix to source code [ ] **Simplification** - reduces or simplifies source code [ ] **Documentation** - docs, README, or CONTRIBUTING changes only Description Closes #3194. Closes #2868. /update-nanoclaw currently merges into the live checkout before validation, backs up Git without mutable state, stamps only the package version, and leaves restart verification to the user. Installed channel and provider refreshes can also fail or do nothing without blocking the completion stamp. This change makes the update a resumable transaction: stages Git integration, installed-skill refresh, frozen dependency installs,
nanocoai/nanoclaw issue #3194 reports: What happens /update-nanoclaw changes the running checkout before the update has passed validation. Its rollback point protects Git, but not the SQLite database, gitignored configuration, or external components changed during the update. This leaves four failure windows on current main at 358f1a81: 1. The merge changes source mounted into new agent containers while the host is still accepting messages. New source can run against the old image before validation or an image rebuild finishes. 2. Installed channel and provider refreshes have no blocking result contract. A selected refresh can fail or do nothing, then the updater still stamps success. 3. Using the printed rollback after a failed restart resets Git without undoing a forward SQLite migration,.env change, or OneCLI pin move. 4. The upgrade marker records only package.json version. It cannot distinguish two commits with the same version, and restart success is not checked
nanocoai/nanoclaw issue #2006 reports: Summary On a fresh Debian 12 LXC container (Proxmox VE host), bash nanoclaw.sh installs Docker via setup/install-docker.sh, adds the user to the docker group via sudo usermod -aG docker "$USER", but subsequent steps in the same setup process still fail with permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock. The current shell's supplementary group list is fixed at login, so the new docker membership isn't visible to the running setup process or any of its children. Environment Host: Proxmox VE (LXC, privileged container with nesting=1,keyctl=1, AppArmor unconfined, lxc.cgroup2.devices.allow: a, lxc.cap.drop: cleared) Guest: Debian 12 (minimal template), x86_64 User: non-root with sudo, fresh login (no prior Docker install) NanoClaw: main @ (run git rev-parse --short HEAD and paste) Reproduction 1. Fresh Debian 12 LXC, no Docker pre-installed. 2. apt install -y curl git sudo ca-certificates 3. adduser nanoclaw && usermod -aG
Why it matters
A Git tag is not a rollback plan when SQLite, environment files, provider pins and running containers can all move. The patch adds the missing transaction boundary, but several service managers remain covered by focused tests rather than live canaries. The operator test is whether authority, persisted state and the visible outcome still describe the same event after retries, restarts or delegation.
Current
The primary record was open when captured on 2026-08-07. The release baseline was v2.1.54 published 2026-08-01T20:46:31Z. Repository metadata, pull requests, issues, release records, Google News discovery, Hacker News discovery, Lobsters, Metamesh and the rendered ClawCharts row were checked. ClawCharts selected the subject; it did not prove the claim.
Evidence
The primary URL is https://github.com/nanocoai/nanoclaw/pull/3195. Supporting records are https://github.com/nanocoai/nanoclaw/issues/3194 and https://github.com/nanocoai/nanoclaw/issues/2006. Source bodies, timestamps and states are preserved in the daily evidence bundle. Test counts, reproductions and deployment observations remain attributed to their authors unless explicitly identified as independently rerun.
Source boundary
Open work is described as open, closed work as closed, and operator reports as reports. A pull request is evidence of proposed or reviewed direction, not proof of a shipped release. Search residue, package mirrors and historically published source spines were excluded.
Operator take
Require exact version/commit/tree receipts, mutable-state snapshots and a real CLI health request; test one forced cutover failure on every supported service owner. Preserve a before-state receipt, make the smallest reversible change, and verify the original failure independently after intervention.
Caveat
Public project records are mutable. Status, scope and evidence can change after publication. This brief records the inspected state and does not authorize changes to a reader’s deployment.
Source inspected; source state, environment and release boundary remain explicit.