workspace/skills/mempalace/SKILL.md
MemPalace AI memory — persistent memory across sessions. Search past decisions, store architecture choices, track temporal network facts via knowledge graph, navigate cross-domain connections, maintain specialist agent diaries. Use when recalling past decisions, storing important context, tracking network changes over time, or maintaining operational journals.
npx skillsauth add automateyournetwork/netclaw mempalaceInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Persistent, structured, local-only memory across sessions. 19 MCP tools. Source: https://github.com/milla-jovovich/mempalace
Relationship to OpenClaw's built-in memory: OpenClaw writes raw daily logs to
memory/YYYY-MM-DD.md. MemPalace adds a structured, searchable layer on top — semantic search across all sessions, a temporal knowledge graph for network facts, and per-agent diaries. Use daily logs for "what happened today" and MemPalace for "what did we decide and why."
All tools use mcp-call with the mempalace MCP server:
python3 $MCP_CALL "python3 -u $MEMPALACE_MCP_SCRIPT" <tool-name> '<arguments-json>'
mempalace_status — Palace Overviewpython3 $MCP_CALL "python3 -u $MEMPALACE_MCP_SCRIPT" mempalace_status '{}'
Returns total drawers, wing/room counts, palace path, memory protocol instructions, and AAAK dialect spec. Call this at session start to load palace context.
mempalace_get_aaak_spec — AAAK Dialect Specpython3 $MCP_CALL "python3 -u $MEMPALACE_MCP_SCRIPT" mempalace_get_aaak_spec '{}'
Get the AAAK dialect specification — the compressed memory format MemPalace uses. Call this if you need to read or write AAAK-compressed memories.
mempalace_search — Semantic Searchpython3 $MCP_CALL "python3 -u $MEMPALACE_MCP_SCRIPT" mempalace_search '{"query":"why did we configure OSPF area 10 as stub","limit":5}'
Parameters:
query (required): Natural language searchlimit (optional, default 5): Max resultswing (optional): Restrict to wingroom (optional): Restrict to roomSemantic search. Returns verbatim drawer content with similarity scores.
mempalace_list_wings — List All Wingspython3 $MCP_CALL "python3 -u $MEMPALACE_MCP_SCRIPT" mempalace_list_wings '{}'
List all wings with drawer counts.### mempalace_list_rooms — List Rooms
python3 $MCP_CALL "python3 -u $MEMPALACE_MCP_SCRIPT" mempalace_list_rooms '{"wing":"wing_netclaw"}'
List rooms within a wing (or all rooms if no wing given).
Parameters: wing (optional) — filter by wing.
mempalace_get_taxonomy — Full Taxonomypython3 $MCP_CALL "python3 -u $MEMPALACE_MCP_SCRIPT" mempalace_get_taxonomy '{}'
Full taxonomy: wing → room → drawer count.
mempalace_check_duplicate — Check Before Filingpython3 $MCP_CALL "python3 -u $MEMPALACE_MCP_SCRIPT" mempalace_check_duplicate '{"content":"R1 upgraded to IOS-XE 17.12.1"}'
Check if content already exists in the palace before filing.
Parameters: content (required), threshold (optional, default 0.9).
mempalace_add_drawer — Store Memorypython3 $MCP_CALL "python3 -u $MEMPALACE_MCP_SCRIPT" mempalace_add_drawer '{"wing":"wing_netclaw","room":"architecture-decisions","content":"Campus OSPF design: Area 0 backbone on core switches, Area 10 Building A, Area 20 Building B. Stub areas on access layer."}'
File verbatim content into the palace. Checks for duplicates first.
Parameters:
wing (required): Wing name (project/person)room (required): Room name (topic/aspect)content (required): Verbatim content to store — exact words, never summarizedsource_file (optional): Where this came fromadded_by (optional, default "mcp")mempalace_delete_drawer — Delete Memorypython3 $MCP_CALL "python3 -u $MEMPALACE_MCP_SCRIPT" mempalace_delete_drawer '{"drawer_id":"drawer_wing_netclaw_decisions_abc123"}'
Delete a drawer by ID. Irreversible.
mempalace_kg_add — Add Temporal Factpython3 $MCP_CALL "python3 -u $MEMPALACE_MCP_SCRIPT" mempalace_kg_add '{"subject":"R1","predicate":"runs_version","object":"IOS-XE 17.12.1","valid_from":"2026-03-15"}'
Add a fact to the knowledge graph. Subject → predicate → object with optional time window. E.g. ('Max', 'started_school', 'Year 7', valid_from='2026-09-01').
mempalace_kg_query — Query Entitypython3 $MCP_CALL "python3 -u $MEMPALACE_MCP_SCRIPT" mempalace_kg_query '{"entity":"R1"}'
Query the knowledge graph for an entity's relationships. Returns typed facts with temporal validity. Filter by date with as_of to see what was true at a point in time.
Parameters: entity (required), as_of (optional, YYYY-MM-DD), direction (optional: outgoing/incoming/both).
mempalace_kg_invalidate — Mark Fact Expiredpython3 $MCP_CALL "python3 -u $MEMPALACE_MCP_SCRIPT" mempalace_kg_invalidate '{"subject":"R1","predicate":"runs_version","object":"IOS-XE 17.9.4a","ended":"2026-03-15"}'
Mark a fact as no longer true. E.g. ankle injury resolved, job ended, moved house.
mempalace_kg_timeline — Entity Timelinepython3 $MCP_CALL "python3 -u $MEMPALACE_MCP_SCRIPT" mempalace_kg_timeline '{"entity":"R1"}'
Chronological timeline of facts. Shows the story of an entity (or everything) in order.
mempalace_kg_stats — KG Overviewpython3 $MCP_CALL "python3 -u $MEMPALACE_MCP_SCRIPT" mempalace_kg_stats '{}'
Knowledge graph overview: entities, triples, current vs expired facts, relationship types.
mempalace_traverse — Walk the Palace Graphpython3 $MCP_CALL "python3 -u $MEMPALACE_MCP_SCRIPT" mempalace_traverse '{"start_room":"ospf-design","max_hops":2}'
Walk the palace graph from a room. Shows connected ideas across wings — the tunnels. Like following a thread through the palace: start at 'chromadb-setup' in wing_code, discover it connects to wing_myproject (planning).
mempalace_find_tunnels — Cross-Wing Connectionspython3 $MCP_CALL "python3 -u $MEMPALACE_MCP_SCRIPT" mempalace_find_tunnels '{"wing_a":"wing_campus","wing_b":"wing_datacenter"}'
Find rooms that bridge two wings — the hallways connecting different domains. E.g. what topics connect wing_code to wing_team?
mempalace_graph_stats — Graph Overviewpython3 $MCP_CALL "python3 -u $MEMPALACE_MCP_SCRIPT" mempalace_graph_stats '{}'
Palace graph overview: total rooms, tunnel connections, edges between wings.
mempalace_diary_write — Write Diary Entrypython3 $MCP_CALL "python3 -u $MEMPALACE_MCP_SCRIPT" mempalace_diary_write '{"agent_name":"netclaw","entry":"SESSION:2026-04-08|health.check.R1.R2|CPU.normal|OSPF.adjacency.flap.detected.R1-R3|★★★","topic":"operations"}'
Write to your personal agent diary in AAAK format. Your observations, thoughts, what you worked on, what matters. Each agent has their own diary with full history. Write in AAAK for compression — e.g. 'SESSION:2026-04-04|built.palace.graph+diary.tools|ALC.req:agent.diaries.in.aaak|★★★'. Use entity codes from the AAAK spec.
mempalace_diary_read — Read Diary Historypython3 $MCP_CALL "python3 -u $MEMPALACE_MCP_SCRIPT" mempalace_diary_read '{"agent_name":"netclaw","last_n":10}'
Read your recent diary entries (in AAAK). See what past versions of yourself recorded — your journal across sessions.
mempalace_status to load palace contextpython3 $MCP_CALL "python3 -u $MEMPALACE_MCP_SCRIPT" mempalace_status '{}'
python3 $MCP_CALL "python3 -u $MEMPALACE_MCP_SCRIPT" mempalace_search '{"query":"BGP migration campus core"}'
python3 $MCP_CALL "python3 -u $MEMPALACE_MCP_SCRIPT" mempalace_kg_add '{"subject":"R1","predicate":"bgp_peer","object":"R2","valid_from":"2026-04-08"}'
python3 $MCP_CALL "python3 -u $MEMPALACE_MCP_SCRIPT" mempalace_add_drawer '{"wing":"wing_netclaw","room":"routing-decisions","content":"Migrated campus core from OSPF to eBGP. Reason: multi-vendor support (Arista + Cisco). AS 65001 for core, AS 65010-65020 for distribution."}'
python3 $MCP_CALL "python3 -u $MEMPALACE_MCP_SCRIPT" mempalace_diary_write '{"agent_name":"netclaw","entry":"SESSION:2026-04-08|bgp.migration.campus.core|OSPF→eBGP|AS65001.core|multi.vendor.rationale|★★★★"}'
Record memory operations in GAIT:
python3 $MCP_CALL "python3 -u $GAIT_MCP_SCRIPT" gait_record_turn '{"prompt":"Store BGP migration decision in MemPalace","response":"Added drawer to wing_netclaw/routing-decisions: Campus core OSPF→eBGP migration rationale. Added KG triple: R1 bgp_peer R2 (valid_from 2026-04-08). Diary entry recorded.","artifacts":[]}'
testing
Human-in-the-loop escalation via HumanRail — route low-confidence agent decisions, pre-destructive operation approvals, and ambiguous incident tickets to real human engineers. Human answers are verified and returned as structured output. Workers are paid via Lightning Network. Use when the agent is uncertain, when a destructive change needs explicit human sign-off beyond a ServiceNow CR, or when an ambiguous ticket requires human triage before automated handling.
testing
Manage EVE-NG node lifecycle. Use when listing nodes, checking runtime state, creating or deleting nodes, starting or stopping nodes or whole labs, verifying node details, or wiping node NVRAM back to factory defaults.
development
Manage EVE-NG labs and platform inventory. Use when listing labs, checking lab metadata, creating or deleting labs, importing or exporting lab archives, checking EVE-NG health or auth, or verifying available node images before build work.
tools
Execute live CLI commands on running EVE-NG nodes over telnet console. Use when running show commands, making live config changes, verifying protocol state, testing connectivity, checking console readiness, or interacting with IOS, Junos, VPCS, EOS, or NX-OS nodes.