Help us shape the future of Go! Take the 2026 Go Developer Survey

rig-plugins

module
v1.7.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 21, 2026 License: Apache-2.0

README

rig-plugins

The official plugins for rig: runtimes, builders, databases, brokers, metrics, logs, traces, profilers, debuggers, load generators, hosts, forges, trackers, docs, infrastructure, registries and notifications, plus importers and packs.

You do not install these by hand: the first rig in a project installs the ones its rig.yaml names, as prebuilt binaries from the releases, no Go needed. By hand, rig plugin add --user pack-std (the everyday set) or rig plugin add <name>.

Building from source (Go 1.26+): go install github.com/goxang/rig-plugins/cmd/rig-std@latest && rig-std install.

rig-std is one binary holding every Go plugin; rig starts rig-std <name> when a component's type names that plugin. A name shared by several kinds (docker, command, http) is one plugin implementing each kind's contract.

Layout

  • cmd/rig-std/ the binary and its plugin table
  • adapters/<kind>/<type>/ the adapters, served through contracts.Serve
  • cmd/rig-std/manifests/ manifest keys beyond the code: config schema, secrets, detect, views
  • cmd/rig-index/ packs a release and writes the signed registry index; cmd/rig-changed/ finds the plugins a change touches
  • plugins/ declarative plugins and packs (pack-std, pack-product, ...), a directory each
  • internal/ helpers the adapters share (shell, HTTP, forges, frames, importers)

Releasing

Automatic on every push to main (.github/workflows/release.yml). cmd/rig-changed maps the changed files to the plugins they touch (a plugin directory, its manifest, or a package it imports); only those are built, packed, signed with RIG_SIGNING_KEY and added to registry/index.json, as the next version (feat: minor, !: major, else patch). A change that touches no plugin releases nothing; a Go plugin change builds rig-std once per platform. Pull requests dry-run the same pack.

rig-index keygen    # once: the public key goes in rig's host.OfficialKey, the secret in RIG_SIGNING_KEY
go run ./cmd/rig-changed -base origin/main    # what a change touches
rig-std install --relative dist/manifests
rig-index -version 1.2.0 -url https://github.com/goxang/rig-plugins/releases/download/v1.2.0 -only jira,arcade

Adding a plugin

Write the adapter against github.com/goxang/rig/core, register it with plugin.Register, and add it to the table in cmd/rig-std/plugins.go. go test ./cmd/rig-std checks it serves its contract.

Directories

Path Synopsis
adapters
all
Package all registers every adapter bundled with rig; a custom binary imports it plus its own.
Package all registers every adapter bundled with rig; a custom binary imports it plus its own.
builder/command
Package command builds with the service's own build.command (ko, bazel, buildpacks, a Makefile, ...).
Package command builds with the service's own build.command (ko, bazel, buildpacks, a Makefile, ...).
builder/docker
Package docker builds images with `docker build` and pushes them when the environment has a registry.
Package docker builds images with `docker build` and pushes them when the environment has a registry.
builder/golang
Package golang builds a Go main package on this machine and puts the binary on a base image as one layer, with no Docker daemon and no in-container module download: the local build cache makes rebuilds take seconds.
Package golang builds a Go main package on this machine and puts the binary on a base image as one layer, with no Docker daemon and no in-container module download: the local build cache makes rebuilds take seconds.
cache/redis
Package redis is the cache adapter for Redis and protocol-compatible servers (Valkey, KeyDB, Dragonfly).
Package redis is the cache adapter for Redis and protocol-compatible servers (Valkey, KeyDB, Dragonfly).
cloud/aws
Package aws drives the aws CLI with the user's profiles and SSO: CloudWatch as metrics/1 and logs/1, and resource browsers for EC2, ECS, EKS, RDS, S3 and Lambda.
Package aws drives the aws CLI with the user's profiles and SSO: CloudWatch as metrics/1 and logs/1, and resource browsers for EC2, ECS, EKS, RDS, S3 and Lambda.
database/sql
Package sql is the database adapter for SQL servers: one implementation, a dialect per driver (postgres, mssql, mysql) for listing, creating and dropping databases.
Package sql is the database adapter for SQL servers: one implementation, a dialect per driver (postgres, mssql, mysql) for listing, creating and dropping databases.
debugger/delve
Package delve attaches a headless Delve server to a running Go service: to the local process directly, or inside the container (the image needs dlv and the pod SYS_PTRACE) with the port forwarded.
Package delve attaches a headless Delve server to a running Go service: to the local process directly, or inside the container (the image needs dlv and the pod SYS_PTRACE) with the port forwarded.
docs/confluence
Package confluence is Confluence as docs/1: CQL search, pages read as Markdown, written from Markdown, and the page tree, over the REST API (Cloud's /wiki or a Server base URL).
Package confluence is Confluence as docs/1: CQL search, pages read as Markdown, written from Markdown, and the page tree, over the REST API (Cloud's /wiki or a Server base URL).
docs/markdown
Package markdown is docs/1 over the repository's own Markdown: docs/, ADRs and READMEs, searched, read, written and listed as a tree.
Package markdown is docs/1 over the repository's own Markdown: docs/, ADRs and READMEs, searched, read, written and listed as a tree.
hosts/ssh
Package ssh manages servers over the system ssh client, so ~/.ssh/config, agents, keys and jump hosts work exactly as they do in a terminal.
Package ssh manages servers over the system ssh client, so ~/.ssh/config, agents, keys and jump hosts work exactly as they do in a terminal.
iac/helm
Package helm is Helm releases: list, history, values, a values diff between revisions, upgrade and rollback, in plugins.helm's kube context and namespace.
Package helm is Helm releases: list, history, values, a values diff between revisions, upgrade and rollback, in plugins.helm's kube context and namespace.
iac/terraform
Package terraform is iac/1 over Terraform or OpenTofu: stacks, plan, apply, outputs, drift and state.
Package terraform is iac/1 over Terraform or OpenTofu: stacks, plan, apply, outputs, drift and state.
kv/consul
Package consul is the KV adapter for Consul's HTTP API.
Package consul is the KV adapter for Consul's HTTP API.
loadgen
Package loadgen holds pieces shared by the load generator adapters (command, http, kv, tool).
Package loadgen holds pieces shared by the load generator adapters (command, http, kv, tool).
loadgen/command
Package command wraps any load tool behind shell commands: start, stop, rate (with {rate}) and status, whose output may be JSON {"running":..,"rate":..,"sent":..,"failed":..}.
Package command wraps any load tool behind shell commands: start, stop, rate (with {rate}) and status, whose output may be JSON {"running":..,"rate":..,"sent":..,"failed":..}.
loadgen/http
Package http is a built-in open-model load generator: requests go out at a fixed rate whatever the latency (no coordinated omission), from this process, for as long as rig runs.
Package http is a built-in open-model load generator: requests go out at a fixed rate whatever the latency (no coordinated omission), from this process, for as long as rig runs.
loadgen/kv
Package kv drives load generators that run as services and read their rate from a key-value store: the rate is written to a key (or one JSON field of it), start and stop scale the generator services, and counters come from metrics queries when configured.
Package kv drives load generators that run as services and read their rate from a key-value store: the rate is written to a key (or one JSON field of it), start and stop scale the generator services, and counters come from metrics queries when configured.
loadgen/tool
Package tool drives an external load tool (k6, vegeta, ghz) as a rig load generator: the tool runs as a child process at the current rate and its per-request results stream back into the counters.
Package tool drives an external load tool (k6, vegeta, ghz) as a rig load generator: the tool runs as a child process at the current rate and its per-request results stream back into the counters.
logs/loki
Package loki reads logs from Grafana Loki: following polls query_range, ad hoc queries take LogQL.
Package loki reads logs from Grafana Loki: following polls query_range, ad hoc queries take LogQL.
logs/runtime
Package runtime serves logs straight from the runtime (kubectl logs, docker logs, local log files), merged across services.
Package runtime serves logs straight from the runtime (kubectl logs, docker logs, local log files), merged across services.
messaging/kafka
Package kafka reads and manages Kafka through its own protocol: topics with their sizes and the lag of the groups reading them, purge, publish, and queries for groups and the latest records.
Package kafka reads and manages Kafka through its own protocol: topics with their sizes and the lag of the groups reading them, purge, publish, and queries for groups and the latest records.
messaging/rabbitmq
Package rabbitmq reads and manages RabbitMQ through its management HTTP API (the management plugin).
Package rabbitmq reads and manages RabbitMQ through its management HTTP API (the management plugin).
metrics/prometheus
Package prometheus reads metrics from anything that serves the Prometheus HTTP API: Prometheus, Thanos, Mimir, VictoriaMetrics, or an OpenTelemetry pipeline that ends in one of them.
Package prometheus reads metrics from anything that serves the Prometheus HTTP API: Prometheus, Thanos, Mimir, VictoriaMetrics, or an OpenTelemetry pipeline that ends in one of them.
metrics/scrape
Package scrape is a metrics backend with no server: it scrapes the services' Prometheus or OpenTelemetry (Prometheus exporter) endpoints itself, keeps a short in-memory history, and answers a PromQL subset over it.
Package scrape is a metrics backend with no server: it scrapes the services' Prometheus or OpenTelemetry (Prometheus exporter) endpoints itself, keeps a short in-memory history, and answers a PromQL subset over it.
notify/slack
Package slack is notify/1 over Slack: an incoming webhook (SLACK_WEBHOOK_URL), or a bot token (SLACK_TOKEN) with chat.postMessage to a channel.
Package slack is notify/1 over Slack: an incoming webhook (SLACK_WEBHOOK_URL), or a bot token (SLACK_TOKEN) with chat.postMessage to a channel.
org
Package org is unit/1: a project as an organisational unit (a team, a division, a company) that reports KPIs, people figures and items to the unit above, takes requests from it, and rolls up the units below it, which it reads over their `rig serve` with a token each.
Package org is unit/1: a project as an organisational unit (a team, a division, a company) that reports KPIs, people figures and items to the unit above, takes requests from it, and rolls up the units below it, which it reads over their `rig serve` with a token each.
profiler/command
Package command profiles with any tool you can run: async-profiler for the JVM, perf, py-spy, rbspy, dotnet-trace, ...
Package command profiles with any tool you can run: async-profiler for the JVM, perf, py-spy, rbspy, dotnet-trace, ...
profiler/pprof
Package pprof captures Go profiles from a service's net/http/pprof endpoint, through the runtime's forwarding.
Package pprof captures Go profiles from a service's net/http/pprof endpoint, through the runtime's forwarding.
query/http
Package http is a query component for HTTP APIs: "GET /path", "POST /path {json}".
Package http is a query component for HTTP APIs: "GET /path", "POST /path {json}".
registry
Package registry is registry/1: an image registry's tags, and pruning all but the newest per image.
Package registry is registry/1: an image registry's tags, and pruning all but the newest per image.
runtime/docker
Package docker runs each service as labelled containers on one network, so services reach each other by service name.
Package docker runs each service as labelled containers on one network, so services reach each other by service name.
runtime/kind
Package kind is the Kubernetes runtime on a local kind cluster, plus what only kind can do: create and delete the cluster with a local registry, load images, and shell into nodes with docker.
Package kind is the Kubernetes runtime on a local kind cluster, plus what only kind can do: create and delete the cluster with a local registry, load images, and shell into nodes with docker.
runtime/kubernetes
Package kubernetes runs services on a Kubernetes cluster through kubectl, so it uses whatever auth the user's kubeconfig has.
Package kubernetes runs services on a Kubernetes cluster through kubectl, so it uses whatever auth the user's kubeconfig has.
runtime/local
Package local runs services as processes on this machine.
Package local runs services as processes on this machine.
scm/github
Package github is GitHub as scm/1 and tracker/1: pull requests, Actions runs and job logs, releases and issues of the repository the origin remote (or plugins.github.project) names, over the REST API.
Package github is GitHub as scm/1 and tracker/1: pull requests, Actions runs and job logs, releases and issues of the repository the origin remote (or plugins.github.project) names, over the REST API.
scm/gitlab
Package gitlab is GitLab as scm/1 and tracker/1: merge requests, pipelines, job logs, releases and issues of the project the origin remote (or plugins.gitlab.project) names, over the REST API v4.
Package gitlab is GitLab as scm/1 and tracker/1: merge requests, pipelines, job logs, releases and issues of the project the origin remote (or plugins.gitlab.project) names, over the REST API v4.
tracing/jaeger
Package jaeger reads traces through the Jaeger query API (Jaeger, or Grafana Tempo's Jaeger-compatible query).
Package jaeger reads traces through the Jaeger query API (Jaeger, or Grafana Tempo's Jaeger-compatible query).
tracing/tempo
Package tempo reads traces through Grafana Tempo's own API: TraceQL search and OTLP traces.
Package tempo reads traces through Grafana Tempo's own API: TraceQL search and OTLP traces.
tracing/zipkin
Package zipkin reads traces through the Zipkin v2 API (Zipkin itself, or anything compatible).
Package zipkin reads traces through the Zipkin v2 API (Zipkin itself, or anything compatible).
tracker/jira
Package jira is Jira as tracker/1: JQL search with completion, issues, transitions, comments, create, assign and link, and agile boards and sprints, over the REST API v2 (Cloud and Server).
Package jira is Jira as tracker/1: JQL search with completion, issues, transitions, comments, create, assign and link, and agile boards and sprints, over the REST API v2 (Cloud and Server).
vcs/git
Package git is the vcs/1 plugin for the project's repository: status, log graph, branches, diff, blame, stashes and worktrees; commit, checkout, pull, push and the export of a ref.
Package git is the vcs/1 plugin for the project's repository: status, log graph, branches, diff, blame, stashes and worktrees; commit, checkout, pull, push and the export of a ref.
cmd
rig-changed command
Command rig-changed prints the plugins a change touches, so CI builds and releases only those:
Command rig-changed prints the plugins a change touches, so CI builds and releases only those:
rig-index command
Command rig-index packs a release of the official plugins and writes registry/index.json: one archive per Go plugin and platform (its manifest; bin/rig-std is a shared file, one per platform), one per declarative plugin, each with its sha256 and, when RIG_SIGNING_KEY is set, a minisign signature.
Command rig-index packs a release of the official plugins and writes registry/index.json: one archive per Go plugin and platform (its manifest; bin/rig-std is a shared file, one per platform), one per declarative plugin, each with its sha256 and, when RIG_SIGNING_KEY is set, a minisign signature.
rig-std command
Command rig-std is every official Go plugin in one binary: `rig-std <name>` serves one plugin over rig/1 on stdio, and `rig-std install` writes each plugin's manifest where rig finds it.
Command rig-std is every official Go plugin in one binary: `rig-std <name>` serves one plugin over rig/1 on stdio, and `rig-std install` writes each plugin's manifest where rig finds it.
internal
forge
Package forge is what the hosted-service plugins (gitlab, github, jira, confluence, slack) share: their config, token and JSON calls.
Package forge is what the hosted-service plugins (gitlab, github, jira, confluence, slack) share: their config, token and JSON calls.
forge/forgetest
Package forgetest is a canned forge API for adapter tests.
Package forgetest is a canned forge API for adapter tests.
frames
Package frames builds rig/1 frames from slices of structs, a column per json-tagged field.
Package frames builds rig/1 frames from slices of structs, a column per json-tagged field.
httpx
Package httpx is the HTTP plumbing adapters share: base URLs from svc:// addresses, JSON calls with auth.
Package httpx is the HTTP plumbing adapters share: base URLs from svc:// addresses, JSON calls with auth.
ide
Package ide writes the project's services into GoLand and VS Code, so they can be watched, stopped and debugged from the IDE while rig runs them.
Package ide writes the project's services into GoLand and VS Code, so they can be watched, stopped and debugged from the IDE while rig runs them.
importers
Package importers turns other tools' files into rig.yaml fragments: task runners into tasks, CI jobs into tasks, Procfiles into services, dotenv files into vars, Grafana dashboards into dashboards, Prometheus rules into alerts and OpenAPI specs into queries.
Package importers turns other tools' files into rig.yaml fragments: task runners into tasks, CI jobs into tasks, Procfiles into services, dotenv files into vars, Grafana dashboards into dashboards, Prometheus rules into alerts and OpenAPI specs into queries.
kubectx
Package kubectx picks the kubeconfig context an environment means.
Package kubectx picks the kubeconfig context an environment means.
localhost
Package localhost describes this machine as a host and probes local HTTP endpoints; runtimes that run on this machine (local processes, docker) embed Host.
Package localhost describes this machine as a host and probes local HTTP endpoints; runtimes that run on this machine (local processes, docker) embed Host.
sh
Package sh runs external tools (kubectl, docker, ssh, ...) with errors that carry their stderr.
Package sh runs external tools (kubectl, docker, ssh, ...) with errors that carry their stderr.
traces
Package traces holds what every tracing adapter shares: summaries and the "traces" query language.
Package traces holds what every tracing adapter shares: summaries and the "traces" query language.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL