CtrlK
BlogDocsLog inGet started
Tessl Logo
PluginPublic

jbaruch/nanoclaw-host

Skills and rules for the NanoClaw host agent (Claude Code on Mac), covering plugin promotion, container management, staging checks, repository safety, and upstream updates.

Quality

91%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Medium

Suggest reviewing before use

Overview
Quality
Evals
Security
Files

jbaruch/nanoclaw-host

tessl

Skills and rules for the NanoClaw host agent (Claude Code on Mac). Plugin promotion, container management, staging checks, repo-chain enforcement.

Installation

tessl install jbaruch/nanoclaw-host

Rules

RuleSummary
sessionize-rendered-captureFixed no-argument, read-only My Events capture through the validated existing private browser; installed-provider lookup and bounded output contract.
meeting-chat-contextActual-main registered-chat evidence, current native member identity, complete bounded context and installed-provider rollout.
agent-container-filterLine-oriented contract for the root repository's agent-container filter and deploy consumers, including infrastructure exclusions and regression coverage.
task-run-log-readerRead-only contract for the admin heartbeat's task_run_logs reader: owner, required columns, no initialize/migrate, missing DB is an actionable issue
agent-file-permissionsAgent identity, private modes, descriptor-safe privileged repairs, atomic replacement, recovery archives and verification as the agent.
whatsapp-channel-controlFixed-account owner-only channel relinking, private codes, saved-registration confirmation and the bounded live-phone testing authority.
browser-profile-storagePersistent website sessions and browser password autofill for approved autonomous access, with a plain private profile folder, private main-tier control, approved CAPTCHA solving and operator MFA.
browser-tailnet-viewerFirst-party private noVNC node enrollment, dedicated native state, owner-device TCP443-only policy and finite real-device validation.
boyscout-hostHost agent owns the full stack (source, plugin repos, scripts, deploy, NAS, containers) — fix any problem you find, except owner's-domain content (SOUL.md, personal skills, group memory).
cross-tier-skill-stateCross-trust-tier skills must persist state under /workspace/state/<skill-name>/ (RW in every container). Tier-pinned skills may use /workspace/group/.
dual-agent-coexistenceTwo agents (AyeAye and host) update this system asynchronously. Never assume the latest version; never assume the other agent's work is stale or inferior without reading it.
host-conventionsDeployment mechanics: always use ./scripts/deploy.sh, registry is the delivery artifact, scripts source scripts/common.sh.
flight-assist-locationHost-owned per-group location schema, owner-only atomic writes, non-owner readers and fresh location use.
group-ipc-snapshotsProtected v3 task projections, temporary legacy/v2 compatibility, native floating declarations, exact dispatch/binding proof and ordered reader retirement.
no-deferralEvery session is the only session — fix problems now, not "later". Forbidden-pattern bullets enumerated.
no-error-suppressionNever use || true, 2>/dev/null, empty catch {}, or any form of silent error swallowing in scripts. If something fails, it must fail visibly.
nuke-semanticsNuke a group = kill the running container only. Never delete registrations or group folders.
orchestrator-dep-refreshWhen an npm-from-GitHub dep in Dockerfile.orchestrator ships a new version, the default ./scripts/deploy.sh does NOT pick it up because BuildKit caches RUN npm install -g <GitHub-repo> by Dockerfile string, not by GitHub state. Use ./scripts/deploy.sh --no-cache and verify the resulting dep version against the running container.
overlay-tile-authoringAuthoring contract for per-chat overlay tiles under containerConfig.additionalTiles: cadence frontmatter mandatory, one cadence per SKILL.md, reader-without-writer is a release blocker, live-runtime verification before shipped, cross-skill subprocess composition.
persona-persist-direct-pushAuthority for the content-only persist_global_file path: only groups/global/SOUL.md and groups/global/SOUL-untrusted.md direct-push to main. The gate in src/git-persist.ts sends mixed pending changes to a review branch and PR.
post-merge-publish-watchEvery plugin-repo merge runs the coding-policy: ci-safety release contract through skills/release Step 7, never a hand-rolled watch. This plugin's specialization: pass the workflow FILE (publish.yml) as resolve-publish-run.sh's <workflow> argument, never a display name. A run that can't be resolved is unresolved, never clean.
repo-chainPull upstream updates directly into private NanoClaw; require explicit GitHub targets and authorization for upstream contributions.
staging-diff-protocolBefore judging staging content: diff, read, reason, merge improvements, then decide. Stale = empty diff only.
tessl-version-floatingAuthority-of-record for the Runtime-Managed Manifest Carve-Out (approved exception to coding-policy: dependency-management). Every covered tessl.json declares "mode": "managed" and floats jbaruch/* at latest; third-party pins, except in jbaruch/nanoclaw's two unattended-update manifests where everything floats. Enforcement: jbaruch/nanoclaw's scripts/checks/tessl_manifests.py (run in CI) for that pair, coding-policy's check-tessl-latest.sh SessionStart hook for the nine plugin repos.
snitchmd-image-floatingReviewed immutable Snitchmd image default, normal pin review and renewal, and unchanged operator override.
sync-cli-floatingThe agent image's reclaim-tripit-timezones-sync install MUST stay specifier-less (approved exception to coding-policy: dependency-management, First-Party Co-Shipped Dependency Carve-Out). CI (jbaruch/nanoclaw scripts/checks/sync_cli_floating.py) verifies the bare reference AND the ADD refetch trigger directly above it.
outbound-delivery-receiptsNative send-result bookkeeping, retired receipt tracking and the remaining shared protected capacity contract.
memory-budget-policyFixed immutable host/image memory analyzer and canonical metadata schema. On an explicit main-group request the main agent runs the diet itself, moving incident text verbatim into linked reference files and never touching exempt active-rule sections.
tessie-host-authorityProtected native vehicle/chat authorization, dynamic non-archived selection, guarded empty-disabled opaque mounts, existing OneCLI gateway injection durable acceptance without automatic replay, and event-bound running-late delegation with a shared two-message limit.
os-package-floatingThe four covered images use bounded distro package sets under the OS-Package Runtime Carve-Out. Dependabot tracks their pinned bases; deploy.sh rebuilds them; CI (jbaruch/nanoclaw scripts/checks/os_package_pins.py) rejects packages outside the recorded sets. Browser CI verifies sandbox startup, CDP isolation and profile persistence.
run-ledger-contractAuthority-of-record for the host's task_occurrences run ledger: owner, record fields, schema_version, admin readers and their fallback, and the cross-pipeline rollout.
task-restart-recoveryVersioned interrupted-attempt intervals, email-claim recovery, morning-brief lock recovery and compatible reader rollout.
tile-content-pipelinePlugin content updates flow through staging → promote (forbids live-NAS edits). Feature-branch PRs against a plugin repo are OK — same review surface.
ugos-compose-projectsTopology + UI contract for Docker Compose projects on UGOS Pro (NASync) where the compose file is source-of-truth in the repo: /volume1/docker/<project> directory symlink, in-repo .env symlink, sudo INSERT into UGOS Pro's SQLite DB. UGOS Pro UI is Start/Stop only — never "Edit"; never paste env literals.

Skills

SkillDescription
host-contractsBinding task-specific host procedures; each compact rule requires its full reference before the affected action.
add-ugos-projectRegister a new Docker Compose project on UGOS Pro (NASync) when the compose file lives in the nanoclaw repo. Plumbs the /volume1/docker/PROJECT_NAME directory symlink, the in-repo .env symlink, and the UGOS Pro SQLite registration row so the project appears in the Projects UI without UGOS rewriting the tracked compose file. Use when adding a new sidecar that needs UGOS Pro UI Start/Stop visibility, when wiring a repo-tracked compose project onto the NASync for the first time, when migrating an existing service to the symlinked-compose topology, or when asked to "register a UGOS project" / "add a sidecar to UGOS Pro".
check-stagingList pending skills and rules on the NAS staging area. Shows what the agent has created or updated that hasn't been promoted to plugins yet. Use before running promote, or when the user asks what's on staging.
extract-to-overlaySequential workflow for migrating an admin-plugin skill, rule, or script set into a per-chat overlay plugin. Audits cadence frontmatter, state-plane couplings, and cross-skill imports; moves files across two plugin repos; updates per-group additionalTiles config; ships each side through the publish pipeline; verifies live materialisation. Use when extracting an admin skill to an overlay, refactoring admin content into per-chat plugins, splitting capabilities out of nanoclaw-admin, or wiring additionalTiles for a freshly extracted overlay.
nukeKill a running agent container on the NAS by Telegram group JID. The orchestrator respawns a fresh container on the next message. Does NOT delete registration or group folder. Use when a container is stuck, stale, or needs a fresh start.
promotePromote agent-created skills and rules from NAS staging to plugin GitHub repos — opens a PR from staging, then hands the review, merge, and publish-confirmation lifecycle to the release skill. Use when there are new items on staging, after check-staging shows pending items, or when asked to deploy skills, push to production, or publish rules to a plugin repo. The promote scripts keep the historical TILE_NAME env var.
reconcileVerify that all tessl plugins are in sync between git source, tessl registry, and the NAS orchestrator. Reports drift, unpublished content, untracked files, and version mismatches. Use when plugin state seems wrong, container behavior looks stale, you suspect out-of-sync plugins, or need to check plugin health before a release. Run after promoting skills or after any manual plugin edits. The script keeps its historical name, ./scripts/reconcile-tiles.sh.
ship-codeShip a committed code change to private NanoClaw (jbaruch/nanoclaw) through a reviewed PR, merge, and branch cleanup. Use when asked to ship a NanoClaw fix, open its PR, or merge its changes. Plugin repositories use the release skill directly.
update-from-upstreamPull updates from qwibitai/nanoclaw directly into private NanoClaw through a reviewed PR, then deploy to NAS. Use when upstream has new features, when the user asks to update NanoClaw, or when /update-nanoclaw is invoked.

See CHANGELOG.md for version history.

Development dependencies

tessl.json declares this repo's dev-time plugin dependencies. See tessl-version-floating for the carve-out this repo's manifest sits under.

  • Every jbaruch/* dependency floats at latest (Runtime-Managed Manifest Carve-Out, jbaruch/coding-policy: dependency-management).
  • jbaruch/coding-policy also installs the carve-out's deterministic check, the check-tessl-latest.sh SessionStart hook. Removing the dependency leaves this manifest unchecked.
  • finsi/codex-review is third-party and pins. Renewal mechanism: tessl update --yes runs each session via that hook and rewrites the pin once the registry passes it. Review the resulting manifest diff and land it as its own commit.

Read-only vehicle morning-summary evidence is specified by skills/host-contracts/references/tessie-morning-brief.md; source authority is not native deployment, complete firmware-alert coverage or vehicle-effect approval.

Sessionize capture development

The capture runtime uses only Node standard libraries. Its scoped verification uses npm ci, npm run format:check, npm run typecheck and npm test. The formatter touches only the newly introduced capture/tooling files; existing prose is outside this adoption. Weekly npm Dependabot renews the pinned development tools. Node runtime pins in the scoped workflow carry a monthly renewal note.

Workspace
jbaruch
Visibility
Public
Created
Last updated
Source
GitHub Actions
Repository
https://github.com/jbaruch/nanoclaw-hostVerified
Badge
jbaruch/nanoclaw-host badge