Plugins
HappyView uses WASM plugins to extend its functionality. Plugins can integrate with external platforms, sync data to users’ atproto identities, and more. Auth plugins — the first supported plugin type — enable users to link accounts from platforms like Steam, Xbox, itch.io, and others, then sync data like game libraries.
Official plugins for Steam, Xbox, itch.io, and other platforms are available in the happyview-plugins repository.
Installing Plugins
Section titled “Installing Plugins”Via Dashboard
Section titled “Via Dashboard”- Go to Settings > Plugins
- Click Add Plugin
- Enter the URL to a plugin’s
manifest.jsonor.wasmfile - Review the plugin details and click Install Plugin
- Configure any required secrets using the settings button
Via Environment Variables
Section titled “Via Environment Variables”Set PLUGIN_URLS to load plugins at startup:
PLUGIN_URLS=steam|https://example.com/plugins/steam/manifest.jsonFormat: id|url or id|url|sha256:hash (comma-separated for multiple).
Via File System
Section titled “Via File System”Place plugins in the ./plugins/ directory:
plugins/ steam/ manifest.json plugin.wasmPlugin Configuration
Section titled “Plugin Configuration”Plugins may require secrets (API keys, client credentials, etc.) to function. There are two ways to configure these:
Dashboard Configuration
Section titled “Dashboard Configuration”Click the settings icon next to a plugin to enter secrets. These are encrypted using AES-256-GCM and stored in the database.
Requires: TOKEN_ENCRYPTION_KEY environment variable (base64-encoded 32-byte key).
Generate one with:
openssl rand -base64 32Environment Variables
Section titled “Environment Variables”Set secrets as environment variables with the PLUGIN_<ID>_ prefix:
PLUGIN_STEAM_API_KEY=your-api-keyPLUGIN_XBOX_CLIENT_ID=your-client-idPLUGIN_XBOX_CLIENT_SECRET=your-client-secretThese are only necessary if you can’t configure variables via the dashboard. Dashboard-configured secrets take precedence over environment variables.
Security
Section titled “Security”- Sandboxed execution: Plugins run in isolated WASM environments
- Limited host access: Plugins can only call approved host functions (HTTP requests, KV storage, secrets, logging)
- Encrypted storage: OAuth tokens and secrets are encrypted at rest using AES-256-GCM
- Scoped storage: Plugin KV storage is isolated per-plugin and per-user
- No filesystem access: Plugins cannot access the host filesystem
Next steps
Section titled “Next steps”- Developing Plugins — create your own plugins with the WASM plugin API
- Official plugins repository — ready-to-use plugins for Steam, Xbox, itch.io, and more
- API Keys — authenticate programmatic access to admin endpoints
- Permissions — configure user access to plugin management

