Skip to content

Genesis Key Specification

The Genesis Key is the optional workspace constitution stored at .mentu/genesis.key. It defines the governance rules that control how commitments flow through the pipeline — who can do what, what evidence is required, and how review tiers work.

The Genesis Key is a YAML file that acts as the source of truth for workspace governance. It is:

  • Optional — without it, the workspace runs in permissionless mode
  • Declarative — defines rules, not procedures
  • Version controlled — lives in the repository, changes are tracked in git
  • Machine-readable — agents and tools parse it to enforce governance
.mentu/genesis.key

The file is located in the .mentu/ directory at the root of your project, alongside the ledger.jsonl file.

The Genesis Key has five top-level sections:

workspace: # Metadata and defaults
permissions: # Who can do what
tiers: # Review tier configuration
actors: # Identity mappings
constraints: # Operational limits

Workspace metadata and default behavior.

workspace:
name: "My Project"
slug: "my-project"
description: "Governance rules for the project"
default_tier: "t2"
FieldDescriptionDefault
nameHuman-readable workspace nameRequired
slugURL-safe identifierRequired
descriptionPurpose of this governance configOptional
default_tierTier assigned when no classification rule matchest2

Defines which actors can perform which operations. Each operation key maps to allow and/or deny lists.

permissions:
claim:
allow: ["agent:*", "human:*"]
submit:
allow: ["agent:*", "human:*"]
close:
allow: ["human:rashid", "human:maria"]
deny: ["agent:*"]
dismiss:
allow: ["human:*"]
deny: ["agent:*"]
close_direct:
allow: ["human:rashid"]
reopen:
allow: ["human:*"]
  1. Check deny list — if the actor matches, reject
  2. Check allow list — if the actor matches, permit
  3. No match — deny (in governed mode) or permit (in permissionless mode)
  • human:* — any human actor
  • agent:* — any agent actor
  • * — any actor of any type

Permissions can be defined for: commit, claim, unclaim, evidence, submit, close, close_direct, reopen, dismiss, capture, annotate, triage, link.

Defines the review tiers and classification rules.

tiers:
t1:
name: "Trivial"
auto_close: true
review_required: false
description: "Typos, config changes, one-line fixes"
t2:
name: "Standard"
auto_close: true
review_window: "24h"
description: "Localized bug fixes, 1-3 file changes"
t3:
name: "Complex"
auto_close: false
review_required: true
approvers:
- "human:rashid"
- "human:maria"
description: "Multi-file changes, architectural impact"
FieldTypeDescription
namestringHuman-readable tier name
auto_closebooleanWhether to close automatically upon submission
review_requiredbooleanWhether human approval is needed before close
review_windowstringDuration string (e.g., 24h, 7d) for post-close review
approversstring[]Actor patterns authorized to approve this tier
descriptionstringExplanation of what falls into this tier
TierOn SubmitReviewClose
T1Auto-close immediatelyNoneAutomatic
T2Auto-close immediately24h window to reopenAutomatic, reversible
T3Move to in_reviewRequired before closeManual by approver

Rules for automatically assigning tiers to new commitments.

tiers:
classification:
rules:
- match:
tags: ["typo", "config", "docs", "style"]
assign: "t1"
- match:
tags: ["bugfix", "hotfix", "test"]
files_changed_max: 3
assign: "t2"
- match:
tags: ["refactor", "architecture", "migration", "security"]
assign: "t3"
default: "t2"
ConditionTypeDescription
tagsstring[]Commitment must have at least one of these tags
files_changed_maxnumberMaximum number of files changed (estimated at commit time)
files_changed_minnumberMinimum number of files changed
actorstringActor pattern that created the commitment

Rules are evaluated top-to-bottom. The first matching rule wins. If no rule matches, the default tier is assigned.

Maps external identities (GitHub usernames, CI systems) to Mentu actor identities.

actors:
mappings:
- external: "github:rashid-m"
mentu: "human:rashid"
- external: "github:claude-bot[bot]"
mentu: "agent:claude"
- external: "ci:github-actions"
mentu: "agent:ci"
defaults:
unknown_human: "human:anonymous"
unknown_agent: "agent:unknown"
FieldDescription
externalThe identity as it appears in external systems ({system}:{username})
mentuThe corresponding Mentu actor identity

When an operation arrives from an unmapped identity:

FieldDescription
unknown_humanActor assigned to unrecognized human identities
unknown_agentActor assigned to unrecognized agent identities

Operational limits that prevent runaway or undesired behavior.

constraints:
max_open_per_actor: 5
required_evidence_kinds:
- "build"
- "test"
max_stale_days: 7
stale_action: "notify"
ConstraintTypeDescription
max_open_per_actornumberMaximum open + claimed commitments per actor
required_evidence_kindsstring[]Evidence kinds required before submit or close
max_stale_daysnumberDays without activity before a claimed commitment is stale
stale_actionstringAction on stale: notify, unclaim, or dismiss
workspace:
name: "Vendora"
slug: "vendora-app"
description: "Governance for the Vendora business management platform"
default_tier: "t2"
permissions:
commit:
allow: ["human:*", "agent:*"]
claim:
allow: ["agent:*", "human:*"]
unclaim:
allow: ["agent:*", "human:*"]
evidence:
allow: ["agent:*", "human:*", "ci:*"]
submit:
allow: ["agent:*", "human:*"]
close:
allow: ["human:rashid", "human:maria"]
deny: ["agent:*"]
close_direct:
allow: ["human:rashid"]
dismiss:
allow: ["human:*"]
deny: ["agent:*"]
reopen:
allow: ["human:*"]
capture:
allow: ["*"]
annotate:
allow: ["human:*", "agent:*"]
triage:
allow: ["human:*", "agent:*"]
link:
allow: ["human:*", "agent:*"]
tiers:
t1:
name: "Trivial"
auto_close: true
review_required: false
description: "Typos, config changes, one-line fixes, documentation"
t2:
name: "Standard"
auto_close: true
review_window: "24h"
description: "Localized bug fixes, small features, 1-3 files"
t3:
name: "Complex"
auto_close: false
review_required: true
approvers:
- "human:rashid"
- "human:maria"
description: "Multi-file refactors, architectural changes, security patches"
classification:
rules:
- match:
tags: ["typo", "config", "docs", "style", "formatting"]
assign: "t1"
- match:
tags: ["bugfix", "hotfix", "test", "small-feature"]
files_changed_max: 3
assign: "t2"
- match:
tags: ["refactor", "architecture", "migration", "security", "breaking"]
assign: "t3"
- match:
files_changed_min: 10
assign: "t3"
default: "t2"
actors:
mappings:
- external: "github:rashid-m"
mentu: "human:rashid"
- external: "github:maria-dev"
mentu: "human:maria"
- external: "github:claude-bot[bot]"
mentu: "agent:claude"
- external: "ci:github-actions"
mentu: "agent:ci"
- external: "sdk:bug-reporter"
mentu: "sdk:bug-reporter"
defaults:
unknown_human: "human:anonymous"
unknown_agent: "agent:unknown"
constraints:
max_open_per_actor: 5
required_evidence_kinds:
- "build"
max_stale_days: 7
stale_action: "notify"

The Genesis Key is validated when:

  1. The MCP server starts — it reads .mentu/genesis.key and parses it
  2. An operation is submitted — permissions and constraints are checked before the operation is appended to the ledger
  3. A commitment is classified — tier rules are evaluated to assign the appropriate tier

Invalid YAML or unknown fields produce a validation error. The MCP server will refuse to start with a malformed Genesis Key.

If no .mentu/genesis.key file exists, the workspace operates in permissionless mode:

AspectBehavior
PermissionsAny actor can perform any operation
TiersNo tier classification; all commitments are equal
EvidenceNo evidence requirements; close without proof
ConstraintsNo actor limits; unlimited open commitments
ReviewDirect close is always allowed; no Accountability Airlock
Actor mappingActors use their raw identity strings

Permissionless mode is appropriate for:

  • Solo developers who do not need governance overhead
  • Prototyping and experimentation where speed matters more than process
  • Trusted small teams where accountability is implicit

For production teams — especially those deploying autonomous agents — a Genesis Key is strongly recommended to maintain accountability, enforce review gates, and prevent unbounded agent behavior.