Skip to content

Plugin Registry Submission

This guide explains how to submit your plugin to the FinFocus plugin registry.

Before submitting, ensure your plugin:

  1. Implements the FinFocus plugin protocol - Uses gRPC with the finfocus-spec protobuf definitions
  2. Has GitHub releases - Uses GoReleaser or similar to create releases with platform-specific binaries
  3. Follows naming conventions - Binary naming must match GoReleaser v2 format

Your release assets must follow this naming pattern:

{plugin-name}_{version}_{os}_{arch}.{format}

Examples:

  • kubecost_v1.0.0_linux_amd64.tar.gz
  • kubecost_v1.0.0_darwin_arm64.tar.gz
  • kubecost_v1.0.0_windows_amd64.zip

Supported platforms:

  • Linux: amd64, arm64
  • macOS (darwin): amd64, arm64
  • Windows: amd64 (zip format required)

Add your plugin to internal/registry/registry.json:

{
"schema_version": "1.0.0",
"plugins": {
"your-plugin": {
"name": "your-plugin",
"description": "Brief description of what your plugin does",
"repository": "owner/repo-name",
"author": "Your Name or Organization",
"license": "Apache-2.0",
"homepage": "https://github.com/owner/repo-name",
"supported_providers": ["aws", "gcp", "azure"],
"capabilities": ["projected", "actual"],
"security_level": "community",
"min_spec_version": "0.1.0"
}
}
}
FieldDescription
namePlugin name (used in plugin install <name>)
descriptionBrief description (shown in plugin list --available)
repositoryGitHub repository in owner/repo format
FieldDescription
authorPlugin author or organization
licenseSPDX license identifier (e.g., “Apache-2.0”, “MIT”)
homepageURL to documentation or homepage
supported_providersCloud providers supported (aws, gcp, azure, kubernetes)
capabilitiesFeatures: “projected” (cost estimates), “actual” (historical costs)
security_levelTrust level (see below)
min_spec_versionMinimum finfocus-spec version required
LevelDescription
officialMaintained by the FinFocus team, fully reviewed
communityCommunity-maintained, basic review completed
experimentalNew or untested, use with caution

Ensure your plugin repository has:

  • Working GitHub releases with proper binary naming
  • README with usage instructions
  • LICENSE file
  • At least one release tag (e.g., v0.1.0)

Test that your plugin installs correctly:

Terminal window
# Test direct URL installation
finfocus plugin install github.com/your-org/your-plugin
# Verify it works
finfocus plugin list
finfocus plugin validate
  1. Fork the finfocus repository
  2. Add your plugin entry to internal/registry/registry.json
  3. Submit a pull request with:
    • Plugin entry in registry.json
    • Brief description of the plugin’s purpose
    • Link to plugin repository

The FinFocus team will:

  1. Verify the plugin builds and installs correctly
  2. Review basic security considerations
  3. Test plugin functionality
  4. Assign appropriate security level

Example .goreleaser.yml for proper binary naming:

{% raw %}

version: 2
builds:
- id: plugin
main: ./cmd/plugin
binary: your-plugin
goos:
- linux
- darwin
- windows
goarch:
- amd64
- arm64
ignore:
- goos: windows
goarch: arm64
archives:
- id: plugin
builds:
- plugin
name_template: '{{ .ProjectName }}_{{ .Tag }}_{{ .Os }}_{{ .Arch }}'
format_overrides:
- goos: windows
format: zip
checksum:
name_template: 'checksums.txt'
release:
github:
owner: your-org
name: your-plugin

{% endraw %}

Reference these existing plugins:

  • kubecost - Kubernetes cost analysis via Kubecost API
  • aws-public - AWS public pricing data