Hamburger Cross Icon
GitHub Org Cataloger - Lunar Cataloger

GitHub Org Cataloger

Cataloger Stable VcsService Catalog

Sync repositories from GitHub organizations into your Lunar catalog. Automatically track visibility, topics, and metadata across all repos with configurable filtering.

Add github-org to your lunar-config.yml:
uses: github://earthly/lunar-lib/catalogers/github-org@v1.0.0

What This Integration Syncs

This integration includes 1 cataloger that sync data from your systems.

Cataloger cron

repos

Syncs all repositories from a GitHub organization as components.

  • Maps GitHub topics to Lunar tags with configurable prefix
  • Supports filtering by visibility (public, private, internal)
  • Supports include/exclude patterns for repository names
  • Optionally includes archived repositories
Schedule: 0 2 * * *
service catalog auto-discovery github repository sync
Book a demo

How Catalogers Fit into Lunar

Lunar catalogers sync component metadata into your Lunar catalog from external systems or source code. They can run on a schedule or be triggered by code changes to keep your service registry up-to-date.

By automatically discovering components from GitHub organizations, service registries, or by detecting technology usage in source code, catalogers ensure your guardrails apply to all relevant services without manual configuration.

Learn How Lunar Works
1
Catalogers Sync Context This Integration
Sync component metadata from service catalogs, ownership systems, and external APIs
2
Guardrails Engine
Once cataloged, components are automatically analyzed by collectors and evaluated against your guardrails

Example Catalog Entry

This cataloger syncs component metadata into your Lunar catalog. Here's an example of a catalog entry it creates:

{ } catalog entry Catalog JSON
{
  "components": {
    "github.com/acme/payment-api": {
      "owner": "platform-team@acme.com",
      "tags": ["gh-backend", "gh-go", "gh-production", "github-visibility-private"],
      "meta": {
        "description": "Payment processing API service",
        "visibility": "private",
        "archived": "false"
      }
    },
    "github.com/acme/frontend-app": {
      "owner": "platform-team@acme.com",
      "tags": ["gh-react", "gh-typescript", "github-visibility-public"],
      "meta": {
        "description": "Customer-facing web application",
        "visibility": "public",
        "archived": "false"
      }
    }
  }
}

Configuration

Configure this cataloger in your lunar-config.yml.

Inputs

Input Required Default Description
org_name Required GitHub organization name to sync (required)
include_public Optional true Include public repositories
include_private Optional true Include private repositories
include_internal Optional true Include internal repositories (GitHub Enterprise)
include_archived Optional false Include archived repositories
include_repos Required Comma-separated list of glob patterns for repos to include. Empty means include all. Examples: "api-*,backend-*"
exclude_repos Required Comma-separated list of glob patterns for repos to exclude. Examples: "sandbox-*,deprecated-*,test-*"
tag_prefix Optional gh- Prefix for GitHub topics when converting to Lunar tags
default_owner Required Default owner email for all components. Leave empty to not set owner.

Documentation

View on GitHub

GitHub Org Cataloger

Catalogs all repositories from a GitHub organization as Lunar components.

Overview

This cataloger syncs repositories from a GitHub organization into the Lunar catalog. It maps GitHub topics to Lunar tags (with a configurable prefix), supports filtering by visibility and repository name patterns, and can optionally set a default owner for all components.

Synced Data

This cataloger writes to the following Catalog JSON paths:

Path Type Description
.components[*].owner string Default owner (if configured)
.components[*].tags[] array GitHub topics with prefix (e.g., gh-backend)
.components[*].meta.description string Repository description
.components[*].meta.visibility string Repository visibility (public, private, internal)
.components[*].meta.archived string Whether the repository is archived ("true"/"false")
Example Catalog JSON output
{
  "components": {
    "github.com/acme/api": {
      "owner": "platform-team@acme.com",
      "tags": ["gh-backend", "gh-go", "gh-production"],
      "meta": {
        "description": "Main API service",
        "visibility": "private",
        "archived": "false"
      }
    },
    "github.com/acme/frontend": {
      "owner": "platform-team@acme.com",
      "tags": ["gh-frontend", "gh-typescript"],
      "meta": {
        "description": "Web application",
        "visibility": "private",
        "archived": "false"
      }
    },
    "github.com/acme/docs": {
      "tags": ["gh-documentation"],
      "meta": {
        "description": "Public documentation site",
        "visibility": "public",
        "archived": "false"
      }
    }
  }
}

Catalogers

This plugin provides the following catalogers:

Cataloger Description
repos Syncs all repositories from the GitHub organization

Hook Type

Hook Schedule Description
cron 0 2 * * * Runs daily at 2am UTC

Installation

Add to your lunar-config.yml:

catalogers:
  - uses: github.com/earthly/lunar-lib/catalogers/github-org@v1.0.0
    with:
      org_name: "acme-corp"

Advanced Configuration

catalogers:
  - uses: github.com/earthly/lunar-lib/catalogers/github-org@v1.0.0
    with:
      org_name: "acme-corp"
      include_public: "true"
      include_private: "true"
      include_internal: "false"
      include_archived: "false"
      exclude_repos: "sandbox-*,deprecated-*,*-archive"
      tag_prefix: "gh-"
      default_owner: "platform-team@acme.com"

Include Only Specific Repos

catalogers:
  - uses: github.com/earthly/lunar-lib/catalogers/github-org@v1.0.0
    with:
      org_name: "acme-corp"
      include_repos: "api-*,backend-*,frontend-*"

Source System

This cataloger uses the GitHub CLI (gh) to query the GitHub API. It requires:

  1. GitHub CLI installed and available in the container (included in custom image)
  2. Authentication via LUNAR_SECRET_GH_TOKEN (same as other GitHub collectors) with appropriate scopes:
    • repo scope for private/internal repositories
    • read:org scope for public repositories only

The cataloger makes API calls to list repositories and their topics. For large organizations, it fetches up to 10,000 repositories per visibility level.

Open Source

This cataloger is open source and available on GitHub. Contribute improvements, report issues, or fork it for your own use.

View Repository

Ready to Automate Your Standards?

See how Lunar can turn your engineering wiki, compliance docs, or postmortem action items into automated guardrails with our 100+ built-in guardrails.

Works with any process
check Infrastructure conventions
check Post-mortem action items
check Security & compliance policies
check Testing & quality requirements
Book a Demo
See it work with your own use cases
See How It Works