{
  "schemaVersion": "1.0",
  "item": {
    "slug": "nas-agent-sync",
    "name": "NAS Agent Sync",
    "source": "tencent",
    "type": "skill",
    "category": "AI 智能",
    "sourceUrl": "https://clawhub.ai/neal-collab/nas-agent-sync",
    "canonicalUrl": "https://clawhub.ai/neal-collab/nas-agent-sync",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/nas-agent-sync",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=nas-agent-sync",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/nas-agent-sync"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/nas-agent-sync",
    "agentPageUrl": "https://openagent3.xyz/skills/nas-agent-sync/agent",
    "manifestUrl": "https://openagent3.xyz/skills/nas-agent-sync/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/nas-agent-sync/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "NAS Agent Sync — Synology File Storage for OpenClaw Agents",
        "body": "Centralize file storage across your multi-agent team using a Synology NAS (or any SSH-accessible storage). One agent acts as File Master — all others route file requests through it."
      },
      {
        "title": "The Problem",
        "body": "Multi-agent setups generate files across multiple workspaces. Without centralized storage:\n\nFiles get lost between agent sessions\nNo backup strategy\nAgents duplicate work\nNo single source of truth"
      },
      {
        "title": "The Solution",
        "body": "Designate one agent as File Master. All file operations go through this agent via sessions_send. The File Master manages:\n\nSSH connection to NAS\nFolder structure per agent\nFile storage and retrieval\nCross-agent file sharing"
      },
      {
        "title": "Architecture",
        "body": "┌──────────┐    sessions_send     ┌────────────┐     SSH      ┌─────────┐\n│ Agent A  │ ──────────────────► │ FILE MASTER │ ──────────► │   NAS   │\n│ (Finance)│ \"store invoice.pdf\" │ (Tech Lead) │             │         │\n└──────────┘                     └────────────┘             └─────────┘\n                                       │\n┌──────────┐    sessions_send          │  SSH\n│ Agent B  │ ──────────────────►       │\n│ (Sales)  │ \"get sales report\"        ▼\n└──────────┘                     ┌─────────────┐\n                                 │ _agents/     │\n                                 │ ├── agent-a/ │\n                                 │ ├── agent-b/ │\n                                 │ ├── agent-c/ │\n                                 │ └── _shared/ │\n                                 └─────────────┘"
      },
      {
        "title": "1. NAS Prerequisites",
        "body": "Synology NAS (any model) or any Linux server with SSH\nSSH access with key-based auth\nVPN or Tailnet (recommended) for secure remote access"
      },
      {
        "title": "2. Create Folder Structure",
        "body": "SSH_HOST=\"user@your-nas-ip\"\n\n# Create agent folders (customize agent names to match your team)\nssh $SSH_HOST \"mkdir -p ~/_agents/{coordinator,techops,finance,sales,marketing}\"\n\n# Create shared folders\nssh $SSH_HOST \"mkdir -p ~/_shared/{config,templates}\"\n\n# Create agent directory file\nssh $SSH_HOST 'cat > ~/_shared/config/agent-directory.json << EOF\n{\n  \"agents\": {\n    \"coordinator\": { \"role\": \"Coordinator\", \"path\": \"~/_agents/coordinator/\" },\n    \"techops\": { \"role\": \"File Master\", \"path\": \"~/_agents/techops/\" },\n    \"finance\": { \"role\": \"Finance\", \"path\": \"~/_agents/finance/\" }\n  },\n  \"shared\": \"~/_shared/\",\n  \"basePath\": \"~/\"\n}\nEOF'"
      },
      {
        "title": "3. Configure File Master Agent",
        "body": "Add to your File Master agent's AGENTS.md:\n\n## FILE MASTER — Incoming Requests\n\nWhen another agent sends a file request via sessions_send:\n\n### Store a file:\nssh USER@NAS-IP \"mkdir -p ~/_agents/[agent]/[subfolder]/\"\n# Copy/create file there\n\n### Retrieve a file:\nssh USER@NAS-IP \"cat ~/_agents/[agent]/[file]\"\n# Send content back to requesting agent\n\n### Confirm back:\nsessions_send(sessionKey=\"agent:[requester]:main\", message=\"Done! File at [path]\")"
      },
      {
        "title": "4. Configure Other Agents",
        "body": "Add to each agent's AGENTS.md:\n\n## File Operations → File Master\n\nI do NOT access files directly. ALL file ops go through the File Master:\n\nsessions_send(sessionKey=\"agent:techops:main\", message=\"Store: [details]\")\nsessions_send(sessionKey=\"agent:techops:main\", message=\"Retrieve: [path]\")"
      },
      {
        "title": "NAS Folder Structure (Recommended)",
        "body": "~/\n├── _agents/\n│   ├── coordinator/     # Coordinator files\n│   │   ├── journal/     # Daily journals\n│   │   └── tracking/    # Task tracking\n│   ├── techops/         # Tech docs, scripts\n│   │   ├── scripts/\n│   │   └── configs/\n│   ├── finance/         # Finance\n│   │   ├── invoices/\n│   │   ├── contracts/\n│   │   └── reports/\n│   ├── sales/           # Sales\n│   │   ├── leads/\n│   │   └── proposals/\n│   └── [your-agent]/    # Per-agent storage\n├── _shared/\n│   ├── config/          # Shared configs\n│   │   └── agent-directory.json\n│   └── templates/       # Shared templates\n└── _backups/\n    └── memory/          # Memory file backups"
      },
      {
        "title": "SSH via VPN/Tailnet (Recommended)",
        "body": "# Connect via secure tunnel IP (e.g. WireGuard, ZeroTier, or similar)\nSSH_HOST=\"user@10.x.x.x\"  # Your VPN/Tailnet IP\n\n# Test connection\nssh $SSH_HOST \"echo 'NAS connected!'\""
      },
      {
        "title": "Security",
        "body": "✅ SSH key-based auth (no passwords in configs)\n✅ VPN/Tailnet for encrypted tunnel (no port forwarding needed)\n✅ File Master pattern limits SSH access to one agent\n✅ Other agents never get SSH credentials\n❌ Never store SSH keys in agent SOUL.md or memory files"
      },
      {
        "title": "Why File Master Pattern?",
        "body": "Security: Only one agent has NAS credentials\nConsistency: Single point of truth for file locations\nAudit trail: All file ops logged through one agent\nSimplicity: Other agents don't need to know SSH commands"
      },
      {
        "title": "Daily Backup Cron (via OpenClaw)",
        "body": "Set up a cron job that backs up agent workspaces to NAS:\n\n// Cron job config\n{\n  \"schedule\": { \"kind\": \"cron\", \"expr\": \"0 3 * * *\", \"tz\": \"UTC\" },\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"Backup all agent workspaces to NAS. For each agent: rsync workspace memory/ folder to NAS _agents/{agent}/memory-backup/. Report any failures.\"\n  },\n  \"sessionTarget\": \"isolated\"\n}"
      },
      {
        "title": "Manual Backup Command",
        "body": "# Backup specific agent\nrsync -avz ~/.openclaw/workspace-finance/memory/ user@nas-ip:~/_agents/finance/memory-backup/\n\n# Backup all agents (customize list to your team)\nfor agent in coordinator techops finance sales marketing; do\n  rsync -avz ~/.openclaw/workspace-$agent/memory/ user@nas-ip:~/_agents/$agent/memory-backup/\ndone"
      },
      {
        "title": "Troubleshooting",
        "body": "SSH connection refused:\n→ Check VPN/Tailnet status — is NAS online and connected?\n→ Verify SSH service running on NAS (Synology: DSM → Control Panel → Terminal & SNMP)\n\nPermission denied:\n→ SSH key not added: ssh-copy-id user@nas-ip\n→ NAS home folder not enabled (Synology: DSM → User → Advanced → Enable home service)\n\nSlow transfers:\n→ Use direct VPN connection (not relayed)\n→ Consider compression: rsync -avz --compress"
      },
      {
        "title": "Compatible NAS Models",
        "body": "✅ Synology (any model with DSM 7+)\n✅ QNAP (QTS 5+)\n✅ TrueNAS / FreeNAS\n✅ Any Linux server with SSH access\n✅ Raspberry Pi with external storage"
      },
      {
        "title": "v1.1.0",
        "body": "Removed all specific agent/setup references\nGeneralized folder structure and examples\nAdded backup strategy with cron"
      },
      {
        "title": "v1.0.0",
        "body": "Initial release"
      }
    ],
    "body": "NAS Agent Sync — Synology File Storage for OpenClaw Agents\n\nCentralize file storage across your multi-agent team using a Synology NAS (or any SSH-accessible storage). One agent acts as File Master — all others route file requests through it.\n\nThe Problem\n\nMulti-agent setups generate files across multiple workspaces. Without centralized storage:\n\nFiles get lost between agent sessions\nNo backup strategy\nAgents duplicate work\nNo single source of truth\nThe Solution\n\nDesignate one agent as File Master. All file operations go through this agent via sessions_send. The File Master manages:\n\nSSH connection to NAS\nFolder structure per agent\nFile storage and retrieval\nCross-agent file sharing\nArchitecture\n┌──────────┐    sessions_send     ┌────────────┐     SSH      ┌─────────┐\n│ Agent A  │ ──────────────────► │ FILE MASTER │ ──────────► │   NAS   │\n│ (Finance)│ \"store invoice.pdf\" │ (Tech Lead) │             │         │\n└──────────┘                     └────────────┘             └─────────┘\n                                       │\n┌──────────┐    sessions_send          │  SSH\n│ Agent B  │ ──────────────────►       │\n│ (Sales)  │ \"get sales report\"        ▼\n└──────────┘                     ┌─────────────┐\n                                 │ _agents/     │\n                                 │ ├── agent-a/ │\n                                 │ ├── agent-b/ │\n                                 │ ├── agent-c/ │\n                                 │ └── _shared/ │\n                                 └─────────────┘\n\nSetup\n1. NAS Prerequisites\nSynology NAS (any model) or any Linux server with SSH\nSSH access with key-based auth\nVPN or Tailnet (recommended) for secure remote access\n2. Create Folder Structure\nSSH_HOST=\"user@your-nas-ip\"\n\n# Create agent folders (customize agent names to match your team)\nssh $SSH_HOST \"mkdir -p ~/_agents/{coordinator,techops,finance,sales,marketing}\"\n\n# Create shared folders\nssh $SSH_HOST \"mkdir -p ~/_shared/{config,templates}\"\n\n# Create agent directory file\nssh $SSH_HOST 'cat > ~/_shared/config/agent-directory.json << EOF\n{\n  \"agents\": {\n    \"coordinator\": { \"role\": \"Coordinator\", \"path\": \"~/_agents/coordinator/\" },\n    \"techops\": { \"role\": \"File Master\", \"path\": \"~/_agents/techops/\" },\n    \"finance\": { \"role\": \"Finance\", \"path\": \"~/_agents/finance/\" }\n  },\n  \"shared\": \"~/_shared/\",\n  \"basePath\": \"~/\"\n}\nEOF'\n\n3. Configure File Master Agent\n\nAdd to your File Master agent's AGENTS.md:\n\n## FILE MASTER — Incoming Requests\n\nWhen another agent sends a file request via sessions_send:\n\n### Store a file:\nssh USER@NAS-IP \"mkdir -p ~/_agents/[agent]/[subfolder]/\"\n# Copy/create file there\n\n### Retrieve a file:\nssh USER@NAS-IP \"cat ~/_agents/[agent]/[file]\"\n# Send content back to requesting agent\n\n### Confirm back:\nsessions_send(sessionKey=\"agent:[requester]:main\", message=\"Done! File at [path]\")\n\n4. Configure Other Agents\n\nAdd to each agent's AGENTS.md:\n\n## File Operations → File Master\n\nI do NOT access files directly. ALL file ops go through the File Master:\n\nsessions_send(sessionKey=\"agent:techops:main\", message=\"Store: [details]\")\nsessions_send(sessionKey=\"agent:techops:main\", message=\"Retrieve: [path]\")\n\nNAS Folder Structure (Recommended)\n~/\n├── _agents/\n│   ├── coordinator/     # Coordinator files\n│   │   ├── journal/     # Daily journals\n│   │   └── tracking/    # Task tracking\n│   ├── techops/         # Tech docs, scripts\n│   │   ├── scripts/\n│   │   └── configs/\n│   ├── finance/         # Finance\n│   │   ├── invoices/\n│   │   ├── contracts/\n│   │   └── reports/\n│   ├── sales/           # Sales\n│   │   ├── leads/\n│   │   └── proposals/\n│   └── [your-agent]/    # Per-agent storage\n├── _shared/\n│   ├── config/          # Shared configs\n│   │   └── agent-directory.json\n│   └── templates/       # Shared templates\n└── _backups/\n    └── memory/          # Memory file backups\n\nSSH via VPN/Tailnet (Recommended)\n# Connect via secure tunnel IP (e.g. WireGuard, ZeroTier, or similar)\nSSH_HOST=\"user@10.x.x.x\"  # Your VPN/Tailnet IP\n\n# Test connection\nssh $SSH_HOST \"echo 'NAS connected!'\"\n\nSecurity\n✅ SSH key-based auth (no passwords in configs)\n✅ VPN/Tailnet for encrypted tunnel (no port forwarding needed)\n✅ File Master pattern limits SSH access to one agent\n✅ Other agents never get SSH credentials\n❌ Never store SSH keys in agent SOUL.md or memory files\nWhy File Master Pattern?\nSecurity: Only one agent has NAS credentials\nConsistency: Single point of truth for file locations\nAudit trail: All file ops logged through one agent\nSimplicity: Other agents don't need to know SSH commands\nBackup Strategy\nDaily Backup Cron (via OpenClaw)\n\nSet up a cron job that backs up agent workspaces to NAS:\n\n// Cron job config\n{\n  \"schedule\": { \"kind\": \"cron\", \"expr\": \"0 3 * * *\", \"tz\": \"UTC\" },\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"Backup all agent workspaces to NAS. For each agent: rsync workspace memory/ folder to NAS _agents/{agent}/memory-backup/. Report any failures.\"\n  },\n  \"sessionTarget\": \"isolated\"\n}\n\nManual Backup Command\n# Backup specific agent\nrsync -avz ~/.openclaw/workspace-finance/memory/ user@nas-ip:~/_agents/finance/memory-backup/\n\n# Backup all agents (customize list to your team)\nfor agent in coordinator techops finance sales marketing; do\n  rsync -avz ~/.openclaw/workspace-$agent/memory/ user@nas-ip:~/_agents/$agent/memory-backup/\ndone\n\nTroubleshooting\n\nSSH connection refused: → Check VPN/Tailnet status — is NAS online and connected? → Verify SSH service running on NAS (Synology: DSM → Control Panel → Terminal & SNMP)\n\nPermission denied: → SSH key not added: ssh-copy-id user@nas-ip → NAS home folder not enabled (Synology: DSM → User → Advanced → Enable home service)\n\nSlow transfers: → Use direct VPN connection (not relayed) → Consider compression: rsync -avz --compress\n\nCompatible NAS Models\n✅ Synology (any model with DSM 7+)\n✅ QNAP (QTS 5+)\n✅ TrueNAS / FreeNAS\n✅ Any Linux server with SSH access\n✅ Raspberry Pi with external storage\nChangelog\nv1.1.0\nRemoved all specific agent/setup references\nGeneralized folder structure and examples\nAdded backup strategy with cron\nv1.0.0\nInitial release"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/neal-collab/nas-agent-sync",
    "publisherUrl": "https://clawhub.ai/neal-collab/nas-agent-sync",
    "owner": "neal-collab",
    "version": "1.1.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/nas-agent-sync",
    "downloadUrl": "https://openagent3.xyz/downloads/nas-agent-sync",
    "agentUrl": "https://openagent3.xyz/skills/nas-agent-sync/agent",
    "manifestUrl": "https://openagent3.xyz/skills/nas-agent-sync/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/nas-agent-sync/agent.md"
  }
}