SolidClaw

v1.2.2

Interact with SOLID Pods — read data, write data, create containers, request access to topics, upload files, and provision new SOLID Pods. Supports Inrupt ES...

0· 68· 6 versions· 0 current· 0 all-time· Updated 3h ago· MIT-0

SolidClaw — SOLID Pod Skill

This skill lets you interact with SOLID Pods — personal decentralised data stores — directly from OpenClaw. It uses Inrupt's @inrupt/solid-client and @inrupt/solid-client-authn-node under the hood.

Environment Variables

VariableRequiredDescription
SOLID_IDPYesIdentity Provider URL (e.g. https://login.inrupt.com)
SOLID_CLIENT_IDYesClient ID from your SOLID app registration
SOLID_OIDC_KEYYesOIDC client key from your SOLID app registration
SOLID_POD_URLOptionalDefault Pod URL to operate against
SOLID_OIDC_ISSUEROptionalOverride OIDC issuer (defaults to SOLID_IDP)

Setup

  1. Register a client app at your Identity Provider (e.g. https://login.inrupt.com/registration.html)
  2. Set the three required env vars above in your OpenClaw environment
  3. Install: npm install --prefix {baseDir} --omit=dev

Commands

Read Operations

Read a dataset (RDF resource)

/solidclaw read <url>

Fetches and displays all Things and their predicates from the dataset at <url>.

Read a specific Thing

/solidclaw thing <dataset-url> <thing-url>

Displays all properties of a specific Thing within a dataset.

List a container

/solidclaw list <container-url>

Lists all resources and sub-containers inside a SOLID container (directory).

Read a non-RDF resource

/solidclaw resource <url>

Downloads and displays a non-RDF resource (text, JSON, etc.) from the pod.


Write Operations

Create a container

/solidclaw mkdir <url>

Creates a new container (directory) at the given URL. Creates parent containers as needed.

Create or update a dataset

/solidclaw write <url> <predicate> <object>

Creates or updates an RDF dataset. Adds a triple <thing-in-dataset> <predicate> <object>.

Delete a resource

/solidclaw delete <url>

Deletes a resource or empty container from the pod.


Access Control

View access for a resource

/solidclaw acl show <url>

Displays current access control rules for the resource (WAC or ACP depending on server).

Grant access

/solidclaw acl grant <url> <webid> <modes>

Grants access to a WebID. <modes> is a comma-separated list: read, write, append, control.

Example: /solidclaw acl grant https://mypod.example/data/ https://alice.example/profile/card#me read,write

Revoke access

/solidclaw acl revoke <url> <webid>`

Removes all access for the given WebID on the resource.

Request access (ACP)

/solidclaw acl request <url> <reason>

Sends an access request message to the resource owner (requires ACP-enabled server).


Pod Management

Show pod info

/solidclaw pod info [pod-url]

Shows storage root, owner WebID, and type info for a pod. Uses SOLID_POD_URL if URL is omitted.

Create a new SOLID Pod

/solidclaw pod create <username> --server <css-base-url>

Prints step-by-step registration instructions and a ready-to-run curl command for provisioning a new Pod on a Community Solid Server (CSS) instance. The actual registration request runs in your own shell so you retain full control over your credentials.

Register a WebID

/solidclaw pod register <webid-url>

Registers/links a WebID profile document on the pod.


Area / Topic Management

Areas are top-level containers in a pod that group related data. The skill uses a solidclaw:Area type to mark them.

List areas

/solidclaw area list [pod-url]

Lists all registered SolidClaw areas in the pod.

Create an area

/solidclaw area create <name> [--description "text"] [--pod-url <url>]

Creates a new named area container in the pod and registers it in the pod's index.

Request access to a topic/area

/solidclaw area request <area-url> [--reason "why you need access"]

Sends an access request for an area to its owner using SOLID notifications or access request resources.


How the Skill Works

All commands run through {baseDir}/scripts/solidclaw.js via Node.js.

Authentication uses the Client Credentials flow (machine-to-machine, no browser needed) via @inrupt/solid-client-authn-node. The authenticated session is reused across operations within a single invocation.

When you ask me to interact with a SOLID pod, I will:

  1. Confirm the target Pod URL and operation with you before writing anything
  2. Show you exactly what will be created/modified/deleted
  3. Execute via node {baseDir}/scripts/solidclaw.js <command> [args]
  4. Display the result clearly

I will always ask for confirmation before:

  • Deleting any resource
  • Changing access control rules
  • Creating a new Pod
  • Uploading files that overwrite existing resources

Security Notes

  • Client credentials are passed via environment variables, never command-line args
  • The skill does not store tokens to disk — each run re-authenticates
  • ACL changes are shown before confirmation to prevent accidental exposure
  • Private data from the pod is shown only in your local terminal session

Examples

# List everything in your pod root
/solidclaw list https://mypod.inrupt.net/

# Create an area called "health"
/solidclaw area create health --description "My health data" --pod-url https://mypod.inrupt.net/

# Grant Alice read access to the health area
/solidclaw acl grant https://mypod.inrupt.net/health/ https://alice.solidcommunity.net/profile/card#me read

# Read a dataset
/solidclaw read https://mypod.inrupt.net/health/summary.ttl

External Endpoints

This skill contacts only URLs that the user explicitly provides via environment variables or command arguments. No fixed third-party endpoints are hardcoded.

Variable / ArgumentPurposeWho controls it
SOLID_IDPOIDC authentication — the user's own Identity ProviderThe user
SOLID_POD_URLThe user's own SOLID Pod storage rootThe user
<url> argumentsSOLID Pod resources to read/write/manageThe user

No data is sent to any endpoint not supplied by the user. No telemetry, analytics, or third-party services are contacted.


Security & Privacy

Authentication: SOLID_OIDC_KEY is used exclusively for the OIDC Client Credentials grant to the user's own Identity Provider (SOLID_IDP). This is the standard machine-to-machine authentication pattern for SOLID applications, equivalent to any OAuth2 client credential flow. The key is read from an environment variable (the recommended practice) and passed directly to the @inrupt/solid-client-authn-node SDK — it is never logged, stored to disk, or sent anywhere except the user's own IDP.

Data flow: All network requests are authenticated SOLID protocol operations (LDP/HTTP) against the user's own Pod. No data from the Pod is forwarded to any third party.

Local filesystem: This skill does not read from or write to the local filesystem. All read/write operations target the user's SOLID Pod over HTTPS.

No persistence: No tokens, credentials, or Pod data are written to disk by this skill.

Version tags

latestvk97c2thgmsrkwpdznyb4dcn59985s24vpodvk97c2thgmsrkwpdznyb4dcn59985s24vsolidvk97c2thgmsrkwpdznyb4dcn59985s24vsolidclawvk97c2thgmsrkwpdznyb4dcn59985s24v

Runtime requirements

🪣 Clawdis
Binsnode
EnvSOLID_IDP, SOLID_CLIENT_ID, SOLID_OIDC_KEY
Primary envSOLID_IDP