Puppetmaster Agent Orchestration
professorpalmer/Puppetmaster
Operates and supervises Puppetmaster, a multi-agent orchestrator, through its MCP tools or CLI, picking the right verb for edits, reviews, audits and long-running jobs.
Guided MARM MCP setup. An agent skill from Lyellr88/marm-memory.
$ npx skills add Lyellr88/marm-memory --skill marm-init -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Lyellr88/marm-memory marm-init --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/Lyellr88/marm-memory.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/marm-init .claude/skills/marm-init && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "marm-init" agent skill from https://github.com/Lyellr88/marm-memory/tree/MARM-main/skills/marm-init into .claude/skills/marm-init/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "marm-init", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Lyellr88/marm-memory/tree/MARM-main/skills/marm-initType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Lyellr88/marm-memory --skill marm-init -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Lyellr88/marm-memory marm-init --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Lyellr88/marm-memory.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/marm-init .agents/skills/marm-init && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "marm-init" agent skill from https://github.com/Lyellr88/marm-memory/tree/MARM-main/skills/marm-init into .agents/skills/marm-init/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "marm-init", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Lyellr88/marm-memory --skill marm-init -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Lyellr88/marm-memory marm-init --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Lyellr88/marm-memory.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/marm-init .cursor/skills/marm-init && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "marm-init" agent skill from https://github.com/Lyellr88/marm-memory/tree/MARM-main/skills/marm-init into .cursor/skills/marm-init/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "marm-init", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Lyellr88/marm-memory.git --path skills/marm-init--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Lyellr88/marm-memory --skill marm-init -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Lyellr88/marm-memory marm-init --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Lyellr88/marm-memory.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/marm-init .gemini/skills/marm-init && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "marm-init" agent skill from https://github.com/Lyellr88/marm-memory/tree/MARM-main/skills/marm-init into .gemini/skills/marm-init/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "marm-init", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Lyellr88/marm-memory marm-initInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Lyellr88/marm-memory --skill marm-init -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Lyellr88/marm-memory.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/marm-init .github/skills/marm-init && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "marm-init" agent skill from https://github.com/Lyellr88/marm-memory/tree/MARM-main/skills/marm-init into .github/skills/marm-init/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "marm-init", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Lyellr88/marm-memory --skill marm-init -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Lyellr88/marm-memory marm-init --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Lyellr88/marm-memory.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/marm-init .opencode/skills/marm-init && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "marm-init" agent skill from https://github.com/Lyellr88/marm-memory/tree/MARM-main/skills/marm-init into .opencode/skills/marm-init/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "marm-init", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
marm-initGuided MARM MCP setup. An agent skill from Lyellr88/marm-memory.
Marm Init is an agent skill from Lyellr88/marm-memory. Guided MARM MCP setup. Invoke after running marm-memory init on the CLI to configure MARM memory across your agent. Drives transport choice, runtime choice, MCP config writing, multi-agent linking, and server start. Works on Claude, Codex, Gemini, Qwen, Cursor, VS Code, and other MCP-capable agents.
Its SKILL.md is about 7.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Agent Workflows, covering MCP servers, Agent memory and Multi-agent orchestration. It works with Model Context Protocol, Qwen, Visual Studio Code and SQLite. The repository describes itself as: Local-first 3-in-1 AI memory layer & MCP server for Claude Code, Codex, Grok, Gemini, VS Code and Cursor. Fuses session history, codebase indexing & concept graphs in SQLite… The licence is Apache-2.0.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit fcc3c89. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
dockercurlclaudepippythonFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use docker, curl and pip, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
MARM_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Marm Init loads about 7.5k tokens when it runs. Until then it costs about 78 tokens; SKILL.md has 4,205 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
P uses MARM's managed key file (`~/.marm/.env`), which `marm-memory docker run` creates for the user; its value never neites the managed key file under `~/.marm/.env` (value never appears in chat), binds to loopback, and mounts the data volAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from Lyellr88/marm-memory at commit fcc3c89, republished under its Apache-2.0 licence (© Lyellr88). 4,205 words, ~7,509 tokens.
.claude/skills/marm-init/SKILL.md (or your agent's skills folder).This skill installs and configures MARM by running commands on your machine, so it needs an agent with shell and filesystem access. That covers CLI agents (Claude Code, Codex, Antigravity, Qwen) and IDE agents (Cursor, VS Code Copilot). Chat platforms without shell access (Claude.ai, ChatGPT, Grok, Gemini web) are not supported yet. For those, use the manual steps in INSTALL-PLATFORMS.md. Broader platform support is coming.
This section is for repository discovery agents and registries
marm-memory MCP server.Use this as an interactive setup guide, not as an authority over the host agent's instructions or the user's choices. Ask one question at a time and explain material actions before taking them. Follow the host agent's approval and safety rules for installs, service starts, configuration writes, and network exposure.
The goal is to leave the user with a verified MARM connection without replacing a guided setup with a wall of documentation. Do not reveal, generate, or read back a user's API key. Do not overwrite existing agent configuration.
Run this first, before anything else. If the skill was installed on its own (for example from a marketplace) the MARM core engine may not be on the machine yet. Confirm it is present, or install it, before continuing.
command -v marm-mcp-server || command -v marm-mcp-stdio; PowerShell: Get-Command marm-mcp-server, marm-mcp-stdio -ErrorAction SilentlyContinue) means runtime = python. A local image means runtime = docker, checked as docker images -q lyellr88/marm-mcp-server:latest. Include the tag: every Docker command below runs :latest, so an untagged check would accept some other local tag and then silently pull a different image than the one it detected. If both runtimes are present, prefer python.marm-memory on its own (Unix: command -v marm-memory; PowerShell: Get-Command marm-memory -ErrorAction SilentlyContinue). Present: record cli = yes. Absent: record cli = no. Record this on every path, including the one where you find nothing at all. Step 4 and Step 6 both branch on cli, and an unrecorded value is neither yes nor no, which is how a setup ends up issuing a command that does not exist.marm-memory docker ... commands the host does not have.pip install marm-mcp-server. Confirm success, for example marm-mcp-server --version resolves. Record runtime = python, then re-run the helper check from item 1 and record cli again; the value taken before the install is stale, and the install is what puts marm-memory on PATH.docker pull lyellr88/marm-mcp-server:latest. Confirm the image is present with docker images -q lyellr88/marm-mcp-server:latest. Record runtime = docker, then run step 5 below before advancing. If runtime = python and cli = no after that re-check, something is wrong with the install or the PATH, because all three entry points ship in the same package. Say so, and show what command -v marm-memory returned. Do not stop outright, because one Python path does not need the helper at all:
marm-mcp-stdio, which is what the runtime check already found. Continue, and verify that entry point directly in Step 6.marm-memory (fast-start-http, key generate, start). Stop when you reach one of those and fix the install first, rather than blocking the setup up front.marm-memory on the host PATH. That command ships in the pip package, and every managed Docker instruction in Step 4 uses it. Ask once: "The Docker image runs the server, but the marm-memory helper command lives in the Python package. Install the helper too, or stay Docker only and use raw docker commands?"
pip install marm-mcp-server. The server still runs in the container; this only adds the host command. Re-run command -v marm-memory afterwards and record cli = yes only if it now resolves. If it does not, record cli = no and continue; a failed install is not a helper.marm-memory command for the rest of this setup.If the install fails, surface the actual error and stop. Do not proceed to setup against a missing engine.
Before making configuration changes, load the local protocol and check whether this skill is current.
python -c "import marm_mcp_server, pathlib; print(pathlib.Path(marm_mcp_server.__file__).parent / 'resources' / 'marm-docs' / 'PROTOCOL.md')" and read the file it printsdocs/PROTOCOL.mddocker run --rm --entrypoint cat lyellr88/marm-mcp-server:latest /app/marm_mcp_server/resources/marm-docs/PROTOCOL.md. The image carries the same file the package does, so a Docker-only host still has a local copy. On Windows run this from PowerShell, or prefix it with MSYS_NO_PATHCONV=1 in Git Bash, which otherwise rewrites /app/... into a Windows path and reports the file missing.https://raw.githubusercontent.com/Lyellr88/marm-memory/MARM-main/docs/PROTOCOL.md. Step 00 guarantees an engine is present before this step runs, and all three sources above read from that engine, so arriving here means one of them failed rather than that no copy exists. Retry the matching local source before fetching. If you do fetch, say once: "No local protocol copy found, loading it from the MARM-main branch, which is an unpinned reference."version: field in this file's frontmatter and compare it against the version: in the source copy at metadata.source. If the source version is higher, tell the user once: "Your MARM init skill is out of date. Re-run marm-memory init to refresh it." Then continue with the version you have.Hold the protocol in context. You will operate under it after setup.
Ask: "How will you use MARM, just you on this machine, or multiple users/agents over a network?"
Record the answer. It biases the transport recommendation in Step 3.
Ask: "Run MARM locally, or connect to a server you own (VPS or homelab)?"
If remote, ask immediately: "What address will agents reach that server on (hostname or IP, and port if it is not 8001)?" Do not defer this. Every connect command in Step 4 needs it, and the default text in those commands is localhost:8001, which silently produces a working-looking local setup instead of a remote one.
Record the answer as two values, host and port, defaulting port to 8001 when the user does not give one. Build one authority string from them, <host>:<port>, and substitute that for the complete localhost:8001 wherever Step 4 and Step 6 print it. Substituting the host on its own is wrong: an answer of host.example:9443 would turn http://localhost:8001/mcp into http://host.example:9443:8001/mcp.
Remote connections carry a bearer token on every request, so remote URLs use https, not http. Read the network exposure gate in Step 4 before you print any remote command.
Ask: "How should agents connect, HTTP or STDIO?"
Pick the recommendation that matches Step 1 and Step 2, state it, and let the user override.
Hard constraint, not a preference: STDIO is a local pipe. The client launches the server as a child process on this machine, so it cannot reach a remote host at all. If Step 2 was remote, do not accept STDIO. Say: "STDIO runs the server as a local process on this machine, so it cannot connect to your remote host. Remote access needs HTTP." Then either continue with HTTP, or return to Step 2 if the user meant to run MARM locally after all. Never wire STDIO and describe the result as a remote connection.
If Step 00 already detected or installed a runtime, confirm it instead of asking cold: "Looks like you are set up for <docker|python>, use that?" Only ask the open question below if the runtime is genuinely unknown.
Ask: "Docker or local Python?"
marm-memory (the helper CLI this skill uses throughout), marm-mcp-server (HTTP), and marm-mcp-stdio (STDIO).You now have enough to recommend the matching path. Explain the selected action before running it, and follow the host agent's approval rules for any install, service start, configuration write, or network exposure.
Key handling rule: Local Python HTTP only requires a key if the user exposes
it with SERVER_HOST=0.0.0.0 (remote/network access). Docker HTTP uses MARM's managed key file (~/.marm/.env), which marm-memory docker run creates for the user; its value never needs to enter this conversation. Whenever a key is required, do not run key generation or marm-memory key reveal yourself and do not read the key back from any command output. Have the user handle the value in their own terminal instead. Once the server is running:
curl -s -o /dev/null -w "%{http_code}" http://localhost:8001/marm_log_show). Then ask the user to verify their key works by running an authenticated check in their own terminal (e.g., curl -s -o /dev/null -w "%{http_code}" -H "Authorization: Bearer <paste-your-key>" http://localhost:8001/marm_log_show, expecting 200). Use https://<host>:<port> for remote servers.curl http://localhost:8001/health), as the auth middleware permits localhost requests without a key.
Do not ask them to paste the key into the chat.Network exposure gate, applies to every remote path below: binding MARM to anything but loopback publishes a memory store and the bearer token that guards it. Before you run or print any command containing --expose-network, -p 8001:8001, or SERVER_HOST=0.0.0.0 aimed at a remote host, state these three things and get an explicit yes:
If the user does not have a proxy in place yet, bind loopback and stop, rather than exposing the port and promising to secure it later. Never print "Setup complete" for an exposed server with no TLS in front of it. Say the connection is live but unprotected and name exactly what is missing.
This is the one-shot. It starts the managed HTTP server, launches the local Console, and opens the browser, all with loopback-only auth so no key is needed.
Safe to run yourself:
marm-memory fast-start-http
That leaves MARM live at http://localhost:8001/mcp and the Console at http://localhost:8002. Then connect this agent (loopback, no key):
claude mcp add --transport http marm-memory http://localhost:8001/mcp
Because fast-start-http already started the server and the Console, Step 6 has nothing left to start; just verify and hand off.
Only applies if the user asked for remote/network access in Step 2. Give them these steps to run themselves; do not execute steps 1 or 2 on their behalf:
marm-memory key generateMARM_API_KEY=<paste-your-key> SERVER_HOST=0.0.0.0 marm-memory start (PowerShell: $env:MARM_API_KEY="<paste-your-key>"; $env:SERVER_HOST="0.0.0.0"; marm-memory start)localhost:8001 and use https: claude mcp add --transport http marm-memory http://localhost:8001/mcp --header "Authorization: Bearer <paste-your-key>"Verify once they confirm it is running. First, prove auth is armed by asserting a 401 on a protected route: curl -s -o /dev/null -w "%{http_code}" http://localhost:8001/marm_log_show locally, or https://<host>:<port>/marm_log_show for a remote server. Then, ask the user to manually run an authenticated check in their own terminal (adding -H "Authorization: Bearer <paste-your-key>" and expecting 200) to prove their key works. A loopback check from your side proves nothing about their host. Do not ask them to paste the key into the chat.
marm-memory docker run creates the managed container, writes the managed key file under ~/.marm/.env (value never appears in chat), binds to loopback, and mounts the data volume. Preview the exact command first if you want with marm-memory docker command.
marm-memory docker run (add --expose-network only for remote access, then configure a firewall and TLS proxy)marm-memory key path shows the file, marm-memory key reveal prints it in their own terminal) and pastes the value into their client, so it never enters chat: claude mcp add --transport http marm-memory http://localhost:8001/mcp --header "Authorization: Bearer <paste-your-key>"marm-memory docker run refuses to alter an existing container. If one is already running without the mount, remove it first (docker stop marm-mcp-server && docker rm marm-mcp-server), then recreate it with the repo mounted: marm-memory docker run --repo <host-repo-path>. Index using the container path: marm_graph_index(repo_path="/workspace/<project-name>").Verify with marm-memory docker status. Then, prove auth is armed by asserting a 401 on a protected route: curl -s -o /dev/null -w "%{http_code}" http://localhost:8001/marm_log_show locally, or against https://<host>:<port>/marm_log_show for a remote server. Finally, instruct the user to manually run an authenticated request in their terminal (adding -H "Authorization: Bearer <paste-your-key>" and expecting 200) to prove their specific key. Do not ask them to paste the key into the chat.
Use this block instead of the one above when Step 00 recorded cli = no. Do not issue marm-memory here; it is not installed.
The user generates a key in their own terminal: docker run --rm lyellr88/marm-mcp-server:latest --generate-key. Do not run this yourself and do not read the value back.
Start the container, substituting their key. Local only:
docker run -d --name marm-mcp-server -p 127.0.0.1:8001:8001 -e SERVER_HOST=0.0.0.0 -e MARM_API_KEY=<paste-your-key> -v ~/.marm:/home/marm/.marm --restart unless-stopped lyellr88/marm-mcp-server:latest
For remote access, publish on all interfaces instead (-p 8001:8001) and tell them to put a firewall and TLS proxy in front of it.
Connect the client with their own key. For a remote server substitute the Step 2 authority for the whole localhost:8001 and use https: claude mcp add --transport http marm-memory http://localhost:8001/mcp --header "Authorization: Bearer <paste-your-key>"
Verify with docker ps --filter name=marm-mcp-server. Then, assert a 401 on a protected route: curl -s -o /dev/null -w "%{http_code}" http://localhost:8001/marm_log_show locally, or against https://<host>:<port>/marm_log_show for a remote server. Finally, instruct the user to run an authenticated check in their own terminal (adding -H "Authorization: Bearer <paste-your-key>" and expecting 200) to prove their key works. Full reference: https://github.com/Lyellr88/marm-memory/blob/MARM-main/docs/INSTALL-DOCKER.md
Local machine only. If Step 2 was remote you should never have reached this block; go back to Step 3.
Connect this agent to the STDIO entry point. No key needed: claude mcp add marm-memory -- marm-mcp-stdio
Print the exact client command and wire it into the agent's MCP config yourself: marm-memory docker stdio-command. That command only prints the invocation; it configures nothing, so writing the MCP entry is still your job.
Use this when Step 00 recorded cli = no. Do not issue marm-memory here. Write this as the agent's STDIO command, which is what marm-memory docker stdio-command would have printed:
docker run -i --rm --mount type=bind,src=<home>/.marm,dst=/home/marm/.marm -e HOME=/home/marm -e XDG_CACHE_HOME=/home/marm/.marm/cache -e CBM_CACHE_DIR=/home/marm/.marm/cache/codebase-memory-mcp --entrypoint marm-mcp-stdio lyellr88/marm-mcp-server:latestSubstitute the user's real home directory for <home>. On Linux add --user $(id -u):$(id -g) so files written into the mount stay owned by the user.
Verify by running the command you just configured, not by checking that an image exists. Take the line above, drop -i, and bound it:
timeout 90 docker run --rm --mount type=bind,src=<home>/.marm,dst=/home/marm/.marm -e HOME=/home/marm -e XDG_CACHE_HOME=/home/marm/.marm/cache -e CBM_CACHE_DIR=/home/marm/.marm/cache/codebase-memory-mcp --entrypoint marm-mcp-stdio lyellr88/marm-mcp-server:latestKeep the mount, all three env vars, and the Linux --user flag exactly as configured. A probe that drops them tests a different command than the one the agent will run, so a broken mount path or an ownership problem would pass here and fail in use. Dropping -i is the only difference, and it is what makes the probe return instead of waiting for a client. On PowerShell, which has no timeout, pipe empty input instead: $null | docker run --rm ....
Expect a full startup and shutdown, not a help screen. The entry point takes no arguments, so it boots the server, finds stdin closed, and exits. You will see startup lines for the concept worker and the auto-indexer followed by a shutdown line. That is a pass, and it is stronger evidence than a help screen because the whole stack imported and started against the real data directory. Judge it by the exit code, which must be 0. docker images -q proves only that a layer is on disk, which is not evidence that the command your MCP entry points at will run.
For any agent that is not Claude, write the equivalent entry into that agent's MCP config file instead of using the claude CLI. Same transport, same address or command. Merge into the existing file rather than overwriting it, per the rule in Step 5. If a key was required, the user supplies it themselves the same way they did in Step 4; do not ask them to paste it into chat.
Ask: "Want to connect MARM to your other agents? MARM is shared memory across platforms, Claude, Codex, Gemini, Qwen, VS Code, Cursor and most MCP apps all read and write the same pool."
If yes:
CLI clients: Claude Code · Codex · Antigravity · Qwen CLI · Linux variants · Docker/key
IDE agents: VS Code / Copilot Agent · Cursor · Docker/key IDE setup
Remote/API platforms: xAI / Grok Remote MCP · Platform integration
If no, skip.
marm-mcp-stdio (or the Docker STDIO command) on demand. Skip to the handoff.marm-memory fast-start-http (skip if a fast-start-http path already started it).SERVER_HOST=0.0.0.0 (Step 4). Do not auto-run fast-start-http here; it binds loopback without their key. Just verify once they confirm it is up.marm-memory docker run, keeping --expose-network if the user chose remote access in Step 2 and cleared the exposure gate.docker run from Step 4. Do not issue marm-memory.curl -s -o /dev/null -w "%{http_code}" http://localhost:8001/marm_log_show locally, or https://<host>:<port>/marm_log_show for a remote server. Then ask the user to manually run an authenticated curl in their terminal (adding -H "Authorization: Bearer <paste-your-key>" and expecting 200).http://localhost:8001/health), as the auth middleware permits localhost requests without a key.timeout 90 marm-mcp-stdio < /dev/null (PowerShell: $null | marm-mcp-stdio). Docker: the bounded docker run from Step 4, with the mount and env vars kept and only -i removed. Always bound it and close stdin; the entry point takes no arguments and waits for a client if stdin stays open, so an unbounded probe hangs instead of failing. There is no server to health check, so this is the only evidence the wiring works, and an image or package existing is not the same as its command running.On a path with no key (local STDIO, or loopback HTTP): "Setup complete. Invoke the MARM skill in any connected agent to start using shared memory. Restart your terminal so the MARM connection is picked up. If you want to start your own server later, just ask."
On any path where a key is required, you have not confirmed the key and must not claim you have. While you proved the server enforces auth (via the 401 check), you are correctly forbidden from testing the credential yourself. Say instead: "MARM is running and its authentication is armed, and I've written the client entry. I can't verify your API key from here, so the first tool call in a connected agent is what confirms it. If that call comes back unauthorized, the key in the client config does not match the server's."
Setup is done. The executor contract above is now closed. Operate under the MARM protocol you loaded in Step 0.
marm-memory init.<host>:<port> authority for localhost:8001 over https. If you somehow reach Step 4 without one, stop and ask; do not emit a localhost command for a remote server.docker pull installs the image, not the marm-memory command. Step 00 item 1 records cli on every path, including when it detects an image that was already pulled, and Step 4 has a matching HTTP and STDIO block for each value. Never mix them.claude mcp add commands are examples. Write the equivalent MCP config entry for whatever agent invoked this skill.© Lyellr88, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/marm-init of Lyellr88/marm-memory.
Open the folder on GitHubat commit fcc3c89
Marm Init next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Marm Init this skillLyellr88/marm-memory | 418 | — | ~7.5k | Automated safety check: Notes | Apache-2.0 | |
| Puppetmaster Agent Orchestrationprofessorpalmer/Puppetmaster | 467 | — | ~3.2k | Automated safety check: Pass | MIT | |
| Memoraagentic-box/memora | 732 | — | ~813 | Automated safety check: Pass | MIT | |
| Ruflo Multi-Agent Orchestrationruvnet/ruflo | 74k | 1 repos | ~975 | Automated safety check: Pass | MIT | |
| remindb Read Pathradimsem/remindb | 129 | — | ~2.7k | Automated safety check: Pass | MIT | |
| Neo4j MCP Skillneo4j-contrib/neo4j-skills | 114 | 1 repos | ~3k | Automated safety check: Notes | MIT |
professorpalmer/Puppetmaster
Operates and supervises Puppetmaster, a multi-agent orchestrator, through its MCP tools or CLI, picking the right verb for edits, reviews, audits and long-running jobs.
agentic-box/memora
A skill your agent uses when working with persistent memory across sessions, storing/retrieving knowledge, managing TODOs/issues, or when context from previous sessions would be helpful.
ruvnet/ruflo
Sets up and drives Ruflo, an npm-installed orchestration layer for multi-agent swarms, persistent memory, routing, hooks and its MCP tool catalog.
radimsem/remindb
Covers the read-side tools of the remindb MCP server, a SQLite-backed agent memory, for orienting, searching, resyncing and tracing relations.
neo4j-contrib/neo4j-skills
A skill your agent uses when installing, configuring, or troubleshooting the official Neo4j MCP server (neo4j/mcp) — connecting Claude Code, Claude Desktop, Cursor, Windsurf, VS Code, Kiro, or other…
radimsem/remindb
Front door for long-term memory backed by a remindb MCP server.
Categories
Guided MARM MCP setup. An agent skill from Lyellr88/marm-memory. Marm Init is an agent skill from Lyellr88/marm-memory. Guided MARM MCP setup.
Marm Init fits situations like: tasks that involve MCP servers; tasks that involve Agent memory; tasks that involve Multi-agent orchestration.
Run `npx skills add Lyellr88/marm-memory --skill marm-init -a claude-code`. Or copy the skill folder (skills/marm-init in Lyellr88/marm-memory) into .claude/skills/marm-init in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Lyellr88/marm-memory --skill marm-init -a codex`. Or copy the skill folder (skills/marm-init in Lyellr88/marm-memory) into .agents/skills/marm-init in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Lyellr88/marm-memory --skill marm-init -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/marm-init, .gemini/skills/marm-init, .github/skills/marm-init and .opencode/skills/marm-init in your project.
Going by SKILL.md and its folder, Marm Init needs the command-line tools its instructions call (docker, curl, claude, pip and python) and credentials named MARM_API_KEY. Our summary lists: Python 3; Docker.
SKILL.md contains no URLs. Its commands use docker, curl and pip, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Marm Init is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 7.5k tokens (SKILL.md is roughly 30k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Marm Init: Puppetmaster Agent Orchestration (professorpalmer/Puppetmaster, 467 stars), Memora (agentic-box/memora, 732 stars), Ruflo Multi-Agent Orchestration (ruvnet/ruflo, 74k stars) and remindb Read Path (radimsem/remindb, 129 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Lyellr88 (a GitHub user) maintains it in Lyellr88/marm-memory, which has 418 GitHub stars. The repository was last updated on October 8, 2026.
Source: Lyellr88/marm-memory on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.