npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

openclaw-workspace-sync

v1.3.3

Published

Bidirectional workspace cloud sync via rclone (Dropbox, Google Drive, S3, OneDrive, 70+ providers)

Readme

OpenClaw Workspace Cloud Sync Plugin

Bidirectional workspace sync between your OpenClaw agent and cloud storage via rclone.

Supports Dropbox, Google Drive, OneDrive, S3/R2/Minio, and 70+ cloud providers.

How it works

Drop a file locally — it appears on the remote Gateway (and vice versa).

Zero LLM cost. All sync operations are pure rclone file operations — they never wake the bot or trigger LLM calls.

Architecture

Install

openclaw plugins install openclaw-workspace-sync

Or clone into your extensions directory:

cd ~/.openclaw/extensions
git clone https://github.com/ashbrener/openclaw-workspace-sync workspace-sync
cd workspace-sync && npm install --omit=dev

Quick start

# Interactive setup wizard (recommended)
openclaw workspace setup

The setup wizard guides you through:

  1. Checking/installing rclone
  2. Selecting cloud provider
  3. Dropbox app folder option (for scoped access)
  4. Background sync interval
  5. OAuth authorization
  6. First sync

Or configure manually — see Configuration below.

Configuration

Add to your openclaw.json:

{
  "plugins": {
    "entries": {
      "openclaw-workspace-sync": {
        "enabled": true,
        "config": {
          "provider": "dropbox",
          "remotePath": "openclaw-share",
          "localPath": "shared",
          "interval": 300,
          "onSessionStart": true,
          "onSessionEnd": false,
          "conflictResolve": "newer",
          "exclude": [".git/**", "node_modules/**", "*.log"]
        }
      }
    }
  }
}

Config reference

| Key | Type | Default | Description | |-----|------|---------|-------------| | provider | string | "off" | dropbox | gdrive | onedrive | s3 | custom | off | | remotePath | string | "openclaw-share" | Folder name in cloud storage | | localPath | string | "shared" | Subfolder within workspace to sync | | interval | number | 0 | Background sync interval in seconds (0 = manual only, min 60) | | onSessionStart | boolean | false | Sync when an agent session begins | | onSessionEnd | boolean | false | Sync when an agent session ends | | remoteName | string | "cloud" | rclone remote name | | configPath | string | auto | Path to rclone.conf | | conflictResolve | string | "newer" | newer | local | remote | | exclude | string[] | see below | Glob patterns to exclude | | copySymlinks | boolean | false | Follow symlinks during sync |

Default excludes: .git/**, node_modules/**, .venv/**, __pycache__/**, *.log, .DS_Store

Provider-specific options

Dropbox with app folder (recommended for security):

{
  "provider": "dropbox",
  "remotePath": "",
  "dropbox": {
    "appFolder": true,
    "appKey": "your-app-key",
    "appSecret": "your-app-secret",
    "token": "{\"access_token\":\"...\"}"
  }
}

Google Drive:

{
  "provider": "gdrive",
  "remotePath": "openclaw-sync",
  "gdrive": {
    "token": "{\"access_token\":\"...\"}",
    "teamDrive": "0ABcDeFgHiJ",
    "rootFolderId": "folder-id"
  }
}

teamDrive and rootFolderId are optional — omit them for personal Google Drive.

OneDrive:

{
  "provider": "onedrive",
  "remotePath": "openclaw-sync",
  "onedrive": {
    "token": "{\"access_token\":\"...\"}",
    "driveId": "drive-id",
    "driveType": "business"
  }
}

driveType can be personal, business, or sharepoint. Both fields are optional.

S3 / Cloudflare R2 / Minio:

{
  "provider": "s3",
  "remotePath": "openclaw-sync",
  "s3": {
    "endpoint": "https://s3.us-east-1.amazonaws.com",
    "bucket": "your-bucket",
    "region": "us-east-1",
    "accessKeyId": "AKID...",
    "secretAccessKey": "SECRET..."
  }
}

Any rclone backend (SFTP, B2, Mega, pCloud, etc.):

{
  "provider": "custom",
  "remotePath": "openclaw-sync",
  "custom": {
    "rcloneType": "sftp",
    "rcloneOptions": {
      "host": "example.com",
      "user": "deploy",
      "key_file": "/path/to/key"
    }
  }
}

The custom provider accepts any rclone backend type and passes rcloneOptions directly to the rclone config. This gives you config-driven access to all 70+ providers without manually editing rclone.conf.

CLI commands

# Interactive setup wizard
openclaw workspace setup

# Check sync status
openclaw workspace status

# Sync bidirectionally
openclaw workspace sync

# First sync (required once to establish baseline)
openclaw workspace sync --resync

# Preview changes without syncing
openclaw workspace sync --dry-run

# One-way sync
openclaw workspace sync --direction pull   # remote -> local
openclaw workspace sync --direction push   # local -> remote

# Authorize with cloud provider
openclaw workspace authorize
openclaw workspace authorize --provider gdrive

# List remote files
openclaw workspace list

Auto-sync

Session hooks

Sync automatically when sessions start or end. These run during existing agent activity and incur zero LLM cost:

{
  "onSessionStart": true,
  "onSessionEnd": false
}

Periodic background sync

Set interval to enable automatic background sync (in seconds):

{
  "interval": 300
}

The gateway runs rclone bisync in the background at this interval. Minimum interval is 60 seconds.

External cron (alternative)

# Add to crontab (crontab -e)
*/5 * * * * openclaw workspace sync >> /var/log/openclaw-sync.log 2>&1

Supported providers

| Provider | Config value | Auth method | Config-driven | |----------|-------------|-------------|---------------| | Dropbox | dropbox | OAuth token | Full (token, appKey, appSecret, appFolder) | | Google Drive | gdrive | OAuth token | Full (token, teamDrive, rootFolderId) | | OneDrive | onedrive | OAuth token | Full (token, driveId, driveType) | | S3/R2/Minio | s3 | Access keys | Full (endpoint, bucket, region, credentials) | | Any rclone backend | custom | Varies | Full (rcloneType + rcloneOptions) |

All providers are fully config-driven — no manual rclone.conf editing needed. The custom provider gives access to all 70+ rclone backends (SFTP, B2, Mega, pCloud, Azure Blob, etc.).

Manual setup (without wizard)

If you prefer to skip the interactive wizard, configure the plugin in openclaw.json and use the CLI:

# 1. Authorize with your cloud provider
openclaw workspace authorize --provider dropbox

# 2. Run the first sync (establishes baseline)
openclaw workspace sync --resync

The plugin handles rclone installation, config generation, and token storage automatically based on your openclaw.json settings.

Dropbox app folder access (recommended)

For better security, create a scoped Dropbox app that only accesses a single folder:

  1. Go to Dropbox App Console
  2. Click Create app > Scoped access > App folder
  3. Name it (e.g., openclaw-sync)
  4. In Permissions tab, enable:
    • files.metadata.read / files.metadata.write
    • files.content.read / files.content.write
  5. Copy App key and App secret from Settings

Benefits:

  • Token only accesses one folder, not your entire Dropbox
  • If token is compromised, blast radius is limited
  • Clean separation — sync folder lives under Apps/

Troubleshooting

Token expired

openclaw workspace authorize

Conflicts

Files modified on both sides get .conflict suffix:

find <workspace>/shared -name "*.conflict"

First sync fails

openclaw workspace sync --resync

Permission errors

chmod -R 755 <workspace>/shared

Security notes

  • Token storage: rclone tokens are stored in rclone.conf with 0600 permissions
  • Sensitive files: Don't sync secrets, API keys, or credentials
  • Encryption: Consider rclone crypt for sensitive data
  • App folder: Use Dropbox app folder access for minimal permissions

Development

# Install dependencies
npm install

# Run tests
npm test

# Type check
npx tsc --noEmit

License

MIT