{
  "schemaVersion": "1.0",
  "item": {
    "slug": "solid-agent-storage",
    "name": "Solid Agent Storage",
    "source": "tencent",
    "type": "skill",
    "category": "AI 智能",
    "sourceUrl": "https://clawhub.ai/masterworrall/solid-agent-storage",
    "canonicalUrl": "https://clawhub.ai/masterworrall/solid-agent-storage",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/solid-agent-storage",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=solid-agent-storage",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SECURITY.md",
      "SKILL.md",
      "dist/auth/client-credentials.d.ts",
      "dist/auth/client-credentials.js",
      "dist/auth/index.d.ts",
      "dist/auth/index.js"
    ],
    "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/solid-agent-storage"
    },
    "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/solid-agent-storage",
    "agentPageUrl": "https://openagent3.xyz/skills/solid-agent-storage/agent",
    "manifestUrl": "https://openagent3.xyz/skills/solid-agent-storage/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/solid-agent-storage/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": "Solid Agent Storage",
        "body": "This Skill gives you a Solid Pod — a personal data store with a WebID (your identity on the web). You can store data, read it back, and share specific resources with other agents."
      },
      {
        "title": "When to Use This Skill",
        "body": "You need to remember something across conversations (notes, preferences, learned facts)\nYou need to store structured data (RDF/Turtle format for linked data, or any content type)\nYou need to share data with another agent who also has a Pod\nYou need a persistent identity that other agents or services can verify"
      },
      {
        "title": "Setup",
        "body": "Before using any commands, set the INTERITION_PASSPHRASE environment variable. This passphrase encrypts the Solid server credentials stored on your device (under ~/.interition/agents/), protecting them at rest in your OpenClaw environment. Use a strong passphrase and keep it secret."
      },
      {
        "title": "Running your own Solid server (recommended)",
        "body": "For full control, run your own Community Solid Server (CSS). The CSS is open-source software maintained by the Open Data Institute.\n\nSet SOLID_SERVER_URL to your server's URL:\n\nexport SOLID_SERVER_URL=\"http://localhost:3000\"\n\nSee the source repository for a hardened Docker configuration you can use as a starting point."
      },
      {
        "title": "Using a shared Solid server (for multi-agent collaboration)",
        "body": "If your agents need to collaborate with other agents using the Solid Protocol, they need to share the same Solid server. Two public CSS instances are available:\n\nhttps://solidcommunity.net — operated by the Open Data Institute\nhttps://crawlout.io — operated by Interition, the provider of this Skill\n\nTo use a shared server, set SOLID_SERVER_URL:\n\nexport SOLID_SERVER_URL=\"https://crawlout.io\"\n\nIf SOLID_SERVER_URL is not set, the Skill defaults to https://crawlout.io."
      },
      {
        "title": "How Credentials Work",
        "body": "The Solid server issues credentials to prevent anyone other than your agent from accessing its services and data. This is the same trust model as any remote service that requires users to identify themselves and prove they are authorised. When you provision an agent:\n\nThe CSS creates an account, WebID, and Pod for your agent\nThe CSS issues client credentials (ID and secret) that your agent uses to authenticate\nYour agent uses those credentials to obtain time-limited Bearer tokens for reading and writing data\nThe CSS enforces access control (WAC) on every request — only authorised agents can access protected resources\n\nINTERITION_PASSPHRASE is not a server credential. It seeds the encryption (AES-256-GCM) of the server-issued credentials stored locally on your device (under ~/.interition/agents/ with 0600 permissions), making them less vulnerable in your OpenClaw environment. The server never sees your passphrase."
      },
      {
        "title": "How It Works",
        "body": "This Skill provides three management scripts for CSS-specific operations (provisioning, deprovisioning, status) plus a token helper for authentication. All standard Solid operations (read, write, delete, share) are done with curl and a Bearer token — your Pod is a standard W3C Solid server.\n\nFor broader guidance on using Solid servers and the wider Solid ecosystem, refer to solidproject.org. The full protocol specification is at Solid Protocol (W3C)."
      },
      {
        "title": "Two-Step Workflow",
        "body": "Step 1: Get a token:\n\nscripts/get-token.sh --agent <name>\n\nOutput:\n\n{\"token\": \"eyJhbG...\", \"expiresIn\": 600, \"serverUrl\": \"https://crawlout.io\", \"podUrl\": \"https://crawlout.io/example-agent/\", \"webId\": \"https://crawlout.io/example-agent/profile/card#me\"}\n\nStep 2: Use curl with Authorization: Bearer $TOKEN for any Solid operation."
      },
      {
        "title": "Token Expiry",
        "body": "Tokens last 600 seconds (10 minutes). If more than 8 minutes have elapsed since your last get-token.sh call, fetch a new token before making requests."
      },
      {
        "title": "Quick Reference",
        "body": "Extract token and URLs:\n\nTOKEN_JSON=$(scripts/get-token.sh --agent example-agent)\nTOKEN=$(echo \"$TOKEN_JSON\" | jq -r '.token')\nPOD_URL=$(echo \"$TOKEN_JSON\" | jq -r '.podUrl')\n\nRead a resource:\n\ncurl -s -H \"Authorization: Bearer $TOKEN\" \"${POD_URL}memory/notes.ttl\"\n\nWrite a resource:\n\ncurl -s -X PUT \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: text/turtle\" \\\n  --data-raw '@prefix schema: <http://schema.org/>.\n<#note-1> a schema:Note;\n  schema:text \"Important finding\";\n  schema:dateCreated \"2024-01-15\".' \\\n  \"${POD_URL}memory/notes.ttl\"\n\nDelete a resource:\n\ncurl -s -X DELETE -H \"Authorization: Bearer $TOKEN\" \"${POD_URL}memory/old.ttl\"\n\nFor the full set of operations (containers, PATCH, access control, public access), see references/solid-http-reference.md."
      },
      {
        "title": "Provision Identity and Storage",
        "body": "Creates a WebID and Pod for an agent. Run this once per unique agent name.\n\nscripts/provision.sh --name <agent-name> [--displayName <display-name>]\n\nExample:\n\nscripts/provision.sh --name example-agent --displayName \"Example Agent\"\n\nOutput:\n\n{\"status\": \"ok\", \"agent\": \"example-agent\", \"webId\": \"https://crawlout.io/example-agent/profile/card#me\", \"podUrl\": \"https://crawlout.io/example-agent/\"}"
      },
      {
        "title": "Deprovision Identity and Storage",
        "body": "Fully removes an agent's WebID and Pod: deletes its pods, client credentials, WebID links, and password logins from the CSS server, then deletes local credential files.\n\nscripts/deprovision.sh --name <agent-name>\n\nExample:\n\nscripts/deprovision.sh --name example-agent\n\nOutput (success):\n\n{\"status\": \"ok\", \"agent\": \"example-agent\", \"accountDeleted\": true, \"credentialsDeleted\": true}\n\nOutput (partial — e.g. server unreachable):\n\n{\"status\": \"partial\", \"agent\": \"example-agent\", \"accountDeleted\": false, \"credentialsDeleted\": true, \"warnings\": [\"Could not delete CSS account: ...\"]}\n\nstatus: \"ok\" — CSS account fully dismantled and local files deleted\nstatus: \"partial\" — local files deleted but CSS cleanup failed (see warnings)\n\nIf the agent was provisioned before email/password storage was added, CSS cleanup is skipped and a warning explains why."
      },
      {
        "title": "Check Status",
        "body": "Lists all provisioned agents and their details.\n\nscripts/status.sh"
      },
      {
        "title": "Pod Structure",
        "body": "Each agent's Pod has these containers:\n\nPathPurpose/{name}/memory/Private agent memory (notes, learned facts, preferences)/{name}/shared/Resources intended for sharing with other agents/{name}/conversations/Conversation logs and context"
      },
      {
        "title": "Turtle Templates",
        "body": "When storing structured data, use Turtle (RDF) format. Here are templates for common patterns:"
      },
      {
        "title": "A note or memory",
        "body": "@prefix schema: <http://schema.org/>.\n<#note-1> a schema:Note;\n  schema:text \"The content of the note\";\n  schema:dateCreated \"2024-01-15\"."
      },
      {
        "title": "An agent preference",
        "body": "@prefix foaf: <http://xmlns.com/foaf/0.1/>.\n@prefix schema: <http://schema.org/>.\n<#pref-1> a schema:PropertyValue;\n  schema:name \"response-style\";\n  schema:value \"concise\"."
      },
      {
        "title": "A shared dataset",
        "body": "@prefix schema: <http://schema.org/>.\n<#dataset-1> a schema:Dataset;\n  schema:name \"Research Results\";\n  schema:description \"Findings from the analysis task\";\n  schema:dateModified \"2024-01-15\"."
      },
      {
        "title": "Error Handling",
        "body": "All management commands output JSON. On error, stderr will contain:\n\n{\"error\": \"description of what went wrong\"}\n\nCommon errors:\n\n\"No passphrase provided\" — Set INTERITION_PASSPHRASE env var\n\"No credentials found\" — Run provision.sh first\n\"Invalid passphrase\" — Wrong INTERITION_PASSPHRASE value\n\"Token request failed: 401\" — Credentials expired; re-provision the agent's WebID and Pod\n\"HTTP 404\" — Resource doesn't exist at that URL"
      }
    ],
    "body": "Solid Agent Storage\n\nThis Skill gives you a Solid Pod — a personal data store with a WebID (your identity on the web). You can store data, read it back, and share specific resources with other agents.\n\nWhen to Use This Skill\nYou need to remember something across conversations (notes, preferences, learned facts)\nYou need to store structured data (RDF/Turtle format for linked data, or any content type)\nYou need to share data with another agent who also has a Pod\nYou need a persistent identity that other agents or services can verify\nSetup\n\nBefore using any commands, set the INTERITION_PASSPHRASE environment variable. This passphrase encrypts the Solid server credentials stored on your device (under ~/.interition/agents/), protecting them at rest in your OpenClaw environment. Use a strong passphrase and keep it secret.\n\nRunning your own Solid server (recommended)\n\nFor full control, run your own Community Solid Server (CSS). The CSS is open-source software maintained by the Open Data Institute.\n\nSet SOLID_SERVER_URL to your server's URL:\n\nexport SOLID_SERVER_URL=\"http://localhost:3000\"\n\n\nSee the source repository for a hardened Docker configuration you can use as a starting point.\n\nUsing a shared Solid server (for multi-agent collaboration)\n\nIf your agents need to collaborate with other agents using the Solid Protocol, they need to share the same Solid server. Two public CSS instances are available:\n\nhttps://solidcommunity.net — operated by the Open Data Institute\nhttps://crawlout.io — operated by Interition, the provider of this Skill\n\nTo use a shared server, set SOLID_SERVER_URL:\n\nexport SOLID_SERVER_URL=\"https://crawlout.io\"\n\n\nIf SOLID_SERVER_URL is not set, the Skill defaults to https://crawlout.io.\n\nHow Credentials Work\n\nThe Solid server issues credentials to prevent anyone other than your agent from accessing its services and data. This is the same trust model as any remote service that requires users to identify themselves and prove they are authorised. When you provision an agent:\n\nThe CSS creates an account, WebID, and Pod for your agent\nThe CSS issues client credentials (ID and secret) that your agent uses to authenticate\nYour agent uses those credentials to obtain time-limited Bearer tokens for reading and writing data\nThe CSS enforces access control (WAC) on every request — only authorised agents can access protected resources\n\nINTERITION_PASSPHRASE is not a server credential. It seeds the encryption (AES-256-GCM) of the server-issued credentials stored locally on your device (under ~/.interition/agents/ with 0600 permissions), making them less vulnerable in your OpenClaw environment. The server never sees your passphrase.\n\nHow It Works\n\nThis Skill provides three management scripts for CSS-specific operations (provisioning, deprovisioning, status) plus a token helper for authentication. All standard Solid operations (read, write, delete, share) are done with curl and a Bearer token — your Pod is a standard W3C Solid server.\n\nFor broader guidance on using Solid servers and the wider Solid ecosystem, refer to solidproject.org. The full protocol specification is at Solid Protocol (W3C).\n\nTwo-Step Workflow\n\nStep 1: Get a token:\n\nscripts/get-token.sh --agent <name>\n\n\nOutput:\n\n{\"token\": \"eyJhbG...\", \"expiresIn\": 600, \"serverUrl\": \"https://crawlout.io\", \"podUrl\": \"https://crawlout.io/example-agent/\", \"webId\": \"https://crawlout.io/example-agent/profile/card#me\"}\n\n\nStep 2: Use curl with Authorization: Bearer $TOKEN for any Solid operation.\n\nToken Expiry\n\nTokens last 600 seconds (10 minutes). If more than 8 minutes have elapsed since your last get-token.sh call, fetch a new token before making requests.\n\nQuick Reference\n\nExtract token and URLs:\n\nTOKEN_JSON=$(scripts/get-token.sh --agent example-agent)\nTOKEN=$(echo \"$TOKEN_JSON\" | jq -r '.token')\nPOD_URL=$(echo \"$TOKEN_JSON\" | jq -r '.podUrl')\n\n\nRead a resource:\n\ncurl -s -H \"Authorization: Bearer $TOKEN\" \"${POD_URL}memory/notes.ttl\"\n\n\nWrite a resource:\n\ncurl -s -X PUT \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: text/turtle\" \\\n  --data-raw '@prefix schema: <http://schema.org/>.\n<#note-1> a schema:Note;\n  schema:text \"Important finding\";\n  schema:dateCreated \"2024-01-15\".' \\\n  \"${POD_URL}memory/notes.ttl\"\n\n\nDelete a resource:\n\ncurl -s -X DELETE -H \"Authorization: Bearer $TOKEN\" \"${POD_URL}memory/old.ttl\"\n\n\nFor the full set of operations (containers, PATCH, access control, public access), see references/solid-http-reference.md.\n\nManagement Commands\nProvision Identity and Storage\n\nCreates a WebID and Pod for an agent. Run this once per unique agent name.\n\nscripts/provision.sh --name <agent-name> [--displayName <display-name>]\n\n\nExample:\n\nscripts/provision.sh --name example-agent --displayName \"Example Agent\"\n\n\nOutput:\n\n{\"status\": \"ok\", \"agent\": \"example-agent\", \"webId\": \"https://crawlout.io/example-agent/profile/card#me\", \"podUrl\": \"https://crawlout.io/example-agent/\"}\n\nDeprovision Identity and Storage\n\nFully removes an agent's WebID and Pod: deletes its pods, client credentials, WebID links, and password logins from the CSS server, then deletes local credential files.\n\nscripts/deprovision.sh --name <agent-name>\n\n\nExample:\n\nscripts/deprovision.sh --name example-agent\n\n\nOutput (success):\n\n{\"status\": \"ok\", \"agent\": \"example-agent\", \"accountDeleted\": true, \"credentialsDeleted\": true}\n\n\nOutput (partial — e.g. server unreachable):\n\n{\"status\": \"partial\", \"agent\": \"example-agent\", \"accountDeleted\": false, \"credentialsDeleted\": true, \"warnings\": [\"Could not delete CSS account: ...\"]}\n\nstatus: \"ok\" — CSS account fully dismantled and local files deleted\nstatus: \"partial\" — local files deleted but CSS cleanup failed (see warnings)\n\nIf the agent was provisioned before email/password storage was added, CSS cleanup is skipped and a warning explains why.\n\nCheck Status\n\nLists all provisioned agents and their details.\n\nscripts/status.sh\n\nPod Structure\n\nEach agent's Pod has these containers:\n\nPath\tPurpose\n/{name}/memory/\tPrivate agent memory (notes, learned facts, preferences)\n/{name}/shared/\tResources intended for sharing with other agents\n/{name}/conversations/\tConversation logs and context\nTurtle Templates\n\nWhen storing structured data, use Turtle (RDF) format. Here are templates for common patterns:\n\nA note or memory\n@prefix schema: <http://schema.org/>.\n<#note-1> a schema:Note;\n  schema:text \"The content of the note\";\n  schema:dateCreated \"2024-01-15\".\n\nAn agent preference\n@prefix foaf: <http://xmlns.com/foaf/0.1/>.\n@prefix schema: <http://schema.org/>.\n<#pref-1> a schema:PropertyValue;\n  schema:name \"response-style\";\n  schema:value \"concise\".\n\nA shared dataset\n@prefix schema: <http://schema.org/>.\n<#dataset-1> a schema:Dataset;\n  schema:name \"Research Results\";\n  schema:description \"Findings from the analysis task\";\n  schema:dateModified \"2024-01-15\".\n\nError Handling\n\nAll management commands output JSON. On error, stderr will contain:\n\n{\"error\": \"description of what went wrong\"}\n\n\nCommon errors:\n\n\"No passphrase provided\" — Set INTERITION_PASSPHRASE env var\n\"No credentials found\" — Run provision.sh first\n\"Invalid passphrase\" — Wrong INTERITION_PASSPHRASE value\n\"Token request failed: 401\" — Credentials expired; re-provision the agent's WebID and Pod\n\"HTTP 404\" — Resource doesn't exist at that URL"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/masterworrall/solid-agent-storage",
    "publisherUrl": "https://clawhub.ai/masterworrall/solid-agent-storage",
    "owner": "masterworrall",
    "version": "0.3.9",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/solid-agent-storage",
    "downloadUrl": "https://openagent3.xyz/downloads/solid-agent-storage",
    "agentUrl": "https://openagent3.xyz/skills/solid-agent-storage/agent",
    "manifestUrl": "https://openagent3.xyz/skills/solid-agent-storage/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/solid-agent-storage/agent.md"
  }
}