# Cloudflare R2 Storage

> R2 object storage - manage buckets, browse objects, usage stats

| | |
|---|---|
| Version | 1.0.0 |
| Category | Cloud |
| Permissions | network.remote |
| Depends on | ai-chat |

# Cloudflare R2 Storage

R2 object storage - manage buckets, browse objects, usage stats

**Type:** `ui-settings` — see `.claude/skills/kazuo-create-plugin/references/plugin-examples.md`

**Requires:** `ai-chat` — checked when installing, not installed for you.

**Permissions declared:** `network.remote` — shown to the user before install; the host does not sandbox on them.

## What it does

- Browses R2 buckets and their objects, with usage figures.
- Bucket listing goes through the Cloudflare API, object listing through the S3-compatible endpoint, so it needs both an API token and an S3 access key pair.

## Files

- `manifest.json` — metadata, `defaultSettings`, `defaultWidgetConfig`
- `widget.html` / `js/widget.js` / `css/widget.css` — the widget, including its own gear button and settings overlay (the host draws no per-widget gear icon)
- `settings.html` / `js/settings.js` / `css/settings.css` — the same fields again, for the Plugin Manager screen and the pop-out window
- `locales/en.json5` / `locales/vi.json5` — UI strings under `widget.*` and `settings.*`
- `icon.png` — Store and Plugin Manager icon

## Default settings

- `apiToken` — default: `""`
- `accountId` — default: `""`
- `s3AccessKeyId` — default: `""`
- `s3SecretAccessKey` — default: `""`
- `refreshInterval` — default: `60`

## Test

Open Kazuo AI → Plugin Manager — the plugin appears on its own (the host scans `plugins-library/`,
nothing to register) → Install → Enable.
