Skip to content

Configuration constraints

These checks apply when ngit-grasp loads and validates its runtime configuration.

Upcoming operator surface

This page is generated from an unreleased ngit-grasp commit. Its interface may change before the next release.

relay-owner-key-format

The relay owner key must be a valid Nostr secret key.

  • Options: NGIT_RELAY_OWNER_NSEC
  • Rule: format
  • Stable ID: ngit-grasp.configuration.constraint.relay-owner-key-format

base-path-normalized

The base path must be '/' or a normalized absolute URL path without a trailing slash, empty segment, query, fragment, '.' or '..'.

  • Options: NGIT_BASE_PATH
  • Rule: format
  • Stable ID: ngit-grasp.configuration.constraint.base-path-normalized

bind-address-format

The bind address must be a valid IP address and port.

  • Options: NGIT_BIND_ADDRESS
  • Rule: format
  • Stable ID: ngit-grasp.configuration.constraint.bind-address-format

startup-integrity-identifiers-valid

Every startup integrity identifier must be a valid repository identifier.

  • Options: NGIT_STARTUP_INTEGRITY_IDENTIFIERS
  • Rule: format
  • Stable ID: ngit-grasp.configuration.constraint.startup-integrity-identifiers-valid

startup-integrity-identifiers-unique

Startup integrity identifiers must not contain duplicates.

  • Options: NGIT_STARTUP_INTEGRITY_IDENTIFIERS
  • Rule: unique items
  • Stable ID: ngit-grasp.configuration.constraint.startup-integrity-identifiers-unique

archive-services-with-archive-all

Archive GRASP services and archive-all mode are mutually exclusive.

  • Options: NGIT_ARCHIVE_GRASP_SERVICES, NGIT_ARCHIVE_ALL
  • Rule: mutually exclusive
  • Stable ID: ngit-grasp.configuration.constraint.archive-services-with-archive-all

archive-services-with-whitelist

Archive GRASP services and the archive whitelist are mutually exclusive.

  • Options: NGIT_ARCHIVE_GRASP_SERVICES, NGIT_ARCHIVE_WHITELIST
  • Rule: mutually exclusive
  • Stable ID: ngit-grasp.configuration.constraint.archive-services-with-whitelist

archive-read-only-requires-archive

Explicit read-only archive mode requires archive-all, an archive whitelist, or archive GRASP services.

  • Options: NGIT_ARCHIVE_READ_ONLY, NGIT_ARCHIVE_ALL, NGIT_ARCHIVE_WHITELIST, NGIT_ARCHIVE_GRASP_SERVICES
  • Rule: requires any
  • Stable ID: ngit-grasp.configuration.constraint.archive-read-only-requires-archive

private-mode-requires-members

Private mode requires at least one configured member.

  • Options: NGIT_PRIVATE_MODE, NGIT_PRIVATE_MEMBERS
  • Rule: requires
  • Stable ID: ngit-grasp.configuration.constraint.private-mode-requires-members

private-members-require-mode

Configured private members require private mode.

  • Options: NGIT_PRIVATE_MEMBERS, NGIT_PRIVATE_MODE
  • Rule: requires
  • Stable ID: ngit-grasp.configuration.constraint.private-members-require-mode

private-mode-with-grasp06

Private mode and the unauthenticated GRASP-06 contributor endpoint are mutually exclusive.

  • Options: NGIT_PRIVATE_MODE, NGIT_GRASP06_ENABLE
  • Rule: mutually exclusive
  • Stable ID: ngit-grasp.configuration.constraint.private-mode-with-grasp06

private-members-format

Every private member must be a valid npub.

  • Options: NGIT_PRIVATE_MEMBERS
  • Rule: format
  • Stable ID: ngit-grasp.configuration.constraint.private-members-format

private-public-origin-format

The private public origin, when set, must be an absolute HTTP(S) origin without a path, query, or fragment.

  • Options: NGIT_PRIVATE_PUBLIC_ORIGIN
  • Rule: format
  • Stable ID: ngit-grasp.configuration.constraint.private-public-origin-format

holding-retention-positive

Holding retention must be greater than zero seconds.

  • Options: NGIT_HOLDING_RETENTION_SECS
  • Rule: greater than 0
  • Stable ID: ngit-grasp.configuration.constraint.holding-retention-positive

holding-cleanup-interval-positive

The holding cleanup interval must be greater than zero seconds.

  • Options: NGIT_HOLDING_CLEANUP_INTERVAL_SECS
  • Rule: greater than 0
  • Stable ID: ngit-grasp.configuration.constraint.holding-cleanup-interval-positive

sync-descendant-limit-positive

The recursive sync descendant limit must be greater than zero.

  • Options: NGIT_SYNC_RECURSIVE_DESCENDANT_LIMIT
  • Rule: greater than 0
  • Stable ID: ngit-grasp.configuration.constraint.sync-descendant-limit-positive

deletion-retention-durations-positive

Each deletion-request retention duration must be greater than zero seconds.

  • Options: NGIT_DELETION_REQUEST_RETENTION_UNUSED_SERVED_SECS, NGIT_DELETION_REQUEST_RETENTION_UNUSED_UNSERVED_GATING_ADDITIONAL_SECS, NGIT_DELETION_REQUEST_RETENTION_USED_SERVED_AFTER_LAST_USED_SECS, NGIT_DELETION_REQUEST_RETENTION_USED_UNSERVED_GATING_ADDITIONAL_SECS
  • Rule: greater than 0
  • Stable ID: ngit-grasp.configuration.constraint.deletion-retention-durations-positive

unused-deletion-retention-sum

Unused served and additional gating durations must not overflow when combined.

  • Options: NGIT_DELETION_REQUEST_RETENTION_UNUSED_SERVED_SECS, NGIT_DELETION_REQUEST_RETENTION_UNUSED_UNSERVED_GATING_ADDITIONAL_SECS
  • Rule: checked sum
  • Stable ID: ngit-grasp.configuration.constraint.unused-deletion-retention-sum

used-deletion-retention-sum

Used served and additional gating durations must not overflow when combined.

  • Options: NGIT_DELETION_REQUEST_RETENTION_USED_SERVED_AFTER_LAST_USED_SECS, NGIT_DELETION_REQUEST_RETENTION_USED_UNSERVED_GATING_ADDITIONAL_SECS
  • Rule: checked sum
  • Stable ID: ngit-grasp.configuration.constraint.used-deletion-retention-sum

relay-limits-positive

Relay subscription, event-size, and filter limits must each be greater than zero.

  • Options: NGIT_RELAY_MAX_SUBSCRIPTIONS, NGIT_RELAY_MAX_EVENT_SIZE_BYTES, NGIT_RELAY_FILTER_LIMIT
  • Rule: greater than 0
  • Stable ID: ngit-grasp.configuration.constraint.relay-limits-positive

relay-event-size-websocket-limit

The relay event-size limit must not exceed the 5 MiB WebSocket message limit.

  • Options: NGIT_RELAY_MAX_EVENT_SIZE_BYTES
  • Rule: at most 5242880 bytes
  • Stable ID: ngit-grasp.configuration.constraint.relay-event-size-websocket-limit

repository-whitelist-with-read-only-archive

A repository whitelist cannot be used when effective archive read-only mode is true; read-only defaults to true whenever any archive mode is enabled.

  • Options: NGIT_REPOSITORY_WHITELIST, NGIT_ARCHIVE_READ_ONLY, NGIT_ARCHIVE_ALL, NGIT_ARCHIVE_WHITELIST, NGIT_ARCHIVE_GRASP_SERVICES
  • Rule: custom
  • Stable ID: ngit-grasp.configuration.constraint.repository-whitelist-with-read-only-archive

Git collaboration, without the platform.