Skip to content

Declarative GitHub governance · Octoform 0.5

Make GitHub policy visible before it becomes real

Octoform compares an explicit YAML policy with the current state of your GitHub organization and its repositories, builds a deterministic plan, and applies only the changes you approve.

Read-only audit Deterministic plan Explicit apply

Governance is a reviewable workflow

Every run separates what you intend, what GitHub currently exposes, and what Octoform is actually allowed to change.

01 · Declare

Describe only what you manage

Omitted settings remain untouched, and nothing is removed because a line was left out. Defaults, repository types, and repository overrides resolve field by field into one effective policy.

02 · Review

See drift and blocked work

The plan identifies current and desired values, warnings, unsupported capabilities, and operations the supplied token cannot prove safe.

03 · Apply

Confirm deliberate changes

Octoform presents the planned operations before mutation and reports each outcome without treating unreadable state as permission to overwrite it.

Start with the smallest useful policy

octoform.yml
owner: your-account

defaults:
  features:
    wiki: false
  security:
    vulnerability_alerts: true

The example manages two explicit settings and makes no claim about anything else. Produce a read-only plan before considering an apply:

octoform plan --config octoform.yml

Follow the complete quick start →

Safety is part of the model

Omission means unmanaged

A short configuration cannot silently become an instruction to disable or delete settings you never declared.

Capability comes from evidence

Owner kind, repository visibility, token permissions, and GitHub responses decide whether an operation is available—not a hard-coded commercial plan name.

Uncertainty blocks mutation

If Octoform cannot read enough state to produce a trustworthy diff, the plan surfaces the block instead of inventing a safe-looking answer.

The account, not only its repositories

Octoform 0.5 governs the organization above the repositories: its profile, what members may do, its custom properties, the rulesets it aims at repositories it selects, its teams and its roles. All of it appears in the same plan, and all of it is confirmed the same way.

Reach is stated, not discovered

A base permission, an organization ruleset and an organization role each reach every repository the account owns — including ones no policy names. Each is reported as sensitive before it is applied.

Read the organization block

Membership asks first

Inviting, removing or converting one person is a command that names them, says what will happen, and waits. An invitation is addressed to a person, not reconciled by a schedule.

Read the members commands

Nothing is removed by omission

Every removable resource has a word that has to be written: none for a grant, mode: absent for a team, a label or a property definition. Deleting a line stops managing something; it never destroys it.

Follow the organization guide

Current documentation: this site describes Octoform 0.5. Use the version selector when operating another release line so commands, configuration, and permissions remain aligned with the package you installed.