likwid/docs/admin/plugins.md

96 lines
2.3 KiB
Markdown
Raw Normal View History

# Plugin Management
Likwid uses a plugin architecture for extensibility.
## Plugin Types
### Core Plugins (Cannot Disable)
- `core.auth` - Authentication system
- `core.communities` - Community management
- `core.proposals` - Proposal system
### Voting Plugins
- `voting.approval` - Approval voting
- `voting.ranked_choice` - Instant runoff
- `voting.schulze` - Condorcet method
- `voting.star` - STAR voting
- `voting.quadratic` - Quadratic voting
### Feature Plugins
- `feature.delegation` - Liquid delegation
- `feature.deliberation` - Structured discussion
### Integration Plugins
- `integration.gitlab` - GitLab integration
- `integration.matrix` - Matrix chat integration
## Managing Plugins
### Via Admin Panel
1. Go to **Admin****Plugins**
2. View installed plugins
3. Enable/disable as needed
4. Configure plugin settings
### Via API
```bash
# List plugins
curl -H "Authorization: Bearer $TOKEN" \
http://localhost:3000/api/plugins/defaults
# Enable plugin
curl -X POST -H "Authorization: Bearer $TOKEN" \
http://localhost:3000/api/plugins/instance/voting.quadratic
# Disable plugin
curl -X DELETE -H "Authorization: Bearer $TOKEN" \
http://localhost:3000/api/plugins/instance/voting.quadratic
```
## Voting Method Configuration
### Platform Level
Enable/disable voting methods for the entire instance:
```bash
# List available methods
curl http://localhost:3000/api/voting-methods
# Enable a method
curl -X PUT -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"is_active": true}' \
http://localhost:3000/api/voting-methods/quadratic
```
### Community Level
Communities can configure which enabled methods they use:
```bash
# Set community voting methods
curl -X PUT -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"methods": ["schulze", "approval"]}' \
http://localhost:3000/api/communities/{id}/voting-methods
```
## Plugin Security
### Signed Plugins
For third-party plugins, require signatures:
- Instance setting: `require_signed_plugins: true`
- Validates plugin authenticity
### Capabilities
Plugins request specific capabilities:
- Database access (read/write)
- Outbound HTTP
- Background jobs
- UI components
## Developing Plugins
See the [Plugin Development Guide](../reference/plugin-development.md) for creating custom plugins.