Muninn Boot
SkillCommunicationBoots your agent's Muninn session by loading its utilities and memory tools from GitHub.
Available today. Use it from your connected AI after setup.
No other account needed.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the Muninn Boot skill
About this skill
Puts oaustegard/muninn-utilities on the container Python path, runs scripts/boot.sh, which shallow-clones the repo (codeload tarball as fallback) and writes the .pth. The boot payload itself comes from the Muninn MCP connector: call its `boot` tool after this script. Trigger on the first message of
What this skill tells your AI
The instructions your AI receives, as published by oaustegard/claude-skills in muninn-boot/SKILL.md and read by ahel’s review.
Two steps, in this order:
bash "$(dirname "$(find / -name boot.sh -path '*muninn-boot*' 2>/dev/null | head -1)")/boot.sh"
then call the Muninn MCP boot tool. The script fetches code; the tool
delivers identity, ops, recent memories and reminders. Memory reads and writes
go through the connector's recall / remember / forget / muninn_config
tools, so the container holds no Turso credential and this skill reads no
Turso.env. Direction in memory ce3b8b75, the plan in 69f3301c.
Prior to 2.0.0 this skill sideloaded claude-skills and ran the Python boot()
itself. Marketplace sync now places claude-skills in every session
(/root/.claude/skills/synced/<id>/ in Cowork, /mnt/skills/user on
Claude.ai), and the worker runs boot. "skinny boot" (BOOT_MODE=perch) has no
effect until the worker's boot takes a mode.
MCP boot parts
The boot tool's payload is larger than the harness output cap, so it comes
in parts. Call boot with no arguments; its footer says whether the payload is
complete or names the next part (boot({part: 2}), then 3, and so on). Call
every part the footer names before replying. The harness may persist a part to
a file instead of showing it ("Output too large ... saved to ..."); read that
file in full. A part that was persisted has already been delivered, so never
call boot again with the same part to recover it.
boot.sh steps
Check metadata.version at the top of this file right before running. Below
2.0.0 the on-disk script is the old one that sideloads claude-skills and runs
the Python boot() itself; marketplace sync can replace the copy mid-session,
so a session may run 1.x once and 2.x next.
- Warm-path check: sentinel
/home/claude/.muninn-bootedpresent and/home/claude/muninn-utilities/muninn_utilsexists → exit 0. - Source
$MUNINN_PROJECT_DIR/GitHub.env(default/mnt/project) if present. Transitional — it goes once GitHub write tools exist on the worker. The container presetsGH_TOKEN=proxy-injected, a truthy placeholder; without the file, GitHub API calls from the container 401 and the script says so. Memory tools are unaffected. git clone --depth 1oaustegard/muninn-utilitiesatMUNINN_UTILS_REF(defaultmain; branch, tag or full SHA) →/home/claude/muninn-utilities. Measured 1.3s cold in Cowork. Fallback where the git proxy refuses github.com: the codeload tarball, which works on Claude.ai and is 403 in Cowork (there git works). If both fail the script exits 1.- Write
muninn-remembering.pthat a site-packages directory resolved fromsys.pathat runtime (/root/.local/lib/python3.11/site-packagesin Cowork, measured 2026-09-19) listing the repo,remembering/,$HOME, and every skillscripts/directory found under either skills root. - Write the sentinel, print a four-line footer: transport and commit, pth
path, and the reminder to call the MCP
boottool.
GitHub.env in Cowork
Only GitHub.env matters now, and only for GitHub API work from the container.
project_read it and write it to /mnt/project/GitHub.env with the Write tool
(a bash heredoc carrying a secret trips the permission classifier), or skip it
when the task touches no GitHub API.
Pinning
MUNINN_UTILS_REF defaults to main; the point of cloning is that changes land
on the next cold boot with no version bump. Pass a SHA to test an unmerged
state. rm /home/claude/.muninn-booted forces a re-pull in a warm container.
This file and boot.sh are the one thing that cannot self-update: the running
copy is whatever the session mounted (project upload or marketplace sync), so
a change here needs a push to both muninn-utilities/muninn-boot and the
claude-skills/muninn-boot mirror, with metadata.version bumped.
Signals
- GitHub stars
- 150
- Forks
- 6
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Key
muninn-boot- Source
- github.com/oaustegard/claude-skills