ObjectStackObjectStack

Registry Config — System Protocol reference

Defines the configuration for the ObjectStack Registry Service. Includes federation, synchronization, and storage settings.

Registry Configuration Protocol

Defines the configuration for the ObjectStack Registry Service. Includes federation, synchronization, and storage settings.

Source: packages/spec/src/system/registry-config.zod.ts

TypeScript Usage

import { RegistryConfigSchema, RegistrySyncPolicySchema, RegistryUpstreamSchema } from '@objectstack/spec/system';
import type { RegistryConfig, RegistrySyncPolicy, RegistryUpstream } from '@objectstack/spec/system';

// Validate data
const result = RegistryConfigSchema.parse(data);

RegistryConfig

Properties

PropertyTypeRequiredDescription
typeEnum<'public' | 'private' | 'hybrid'>✅Registry deployment type
upstream{ url: string; syncPolicy?: Enum<'manual' | 'auto' | 'proxy'>; syncIntervalSeconds?: integer; auth?: object; … }[]optionalUpstream registries to sync from or proxy to
scopestring[]optionalnpm-style scopes managed by this registry (e.g., @my-corp, @enterprise)
defaultScopestringoptionalDefault scope prefix for new plugins
storage{ backend?: Enum<'local' | 's3' | 'gcs' | 'azure-blob' | 'oss'>; path?: string; credentials?: Record<string, any> }optional
visibilityEnum<'public' | 'private' | 'internal'>optional (default: "private")Who can access this registry
accessControl{ requireAuthForRead?: boolean; requireAuthForWrite?: boolean; allowedPrincipals?: string[] }optional
cache{ enabled?: boolean; ttlSeconds?: integer; maxSize?: integer }optional
mirrors{ url: string; priority?: integer }[]optionalMirror registries for redundancy

Nested Shape: RegistryConfig.upstream[number]

PropertyTypeRequiredDescription
urlstring✅Upstream registry endpoint
syncPolicyEnum<'manual' | 'auto' | 'proxy'>optional (default: "auto")Registry synchronization strategy
syncIntervalSecondsintegeroptionalAuto-sync interval in seconds
syncIntervalneveroptional[REMOVED] RegistryUpstream.syncInterval was renamed to syncIntervalSeconds in @objectstack/spec 17 — the unit of a duration-shaped number lives in the key name, not only in the describe prose, and the timeout beside it on this same block is milliseconds. Rename the key to syncIntervalSeconds; the value (seconds) and the min-60 bound are unchanged.
auth{ type?: Enum<'none' | 'basic' | 'bearer' | 'api-key' | 'oauth2'>; username?: string; password?: string; token?: string; … }optional
tls{ enabled?: boolean; verifyCertificate?: boolean; certificate?: string; privateKey?: string }optional
timeoutMsintegeroptional (default: 30000)Request timeout in milliseconds
timeoutneveroptional[REMOVED] RegistryUpstream.timeout was renamed to timeoutMs in @objectstack/spec 17 — the unit of a duration-shaped number lives in the key name, not only in the describe prose, and syncIntervalSeconds on this same block is seconds. Rename the key to timeoutMs; the value (milliseconds), the 30000 default and the min-1000 bound are unchanged.
retry{ maxAttempts?: integer; backoff?: Enum<'fixed' | 'linear' | 'exponential'> }optional

Nested Shape: RegistryConfig.cache

PropertyTypeRequiredDescription
enabledbooleanoptional (default: true)
ttlSecondsintegeroptional (default: 3600)Cache TTL in seconds
ttlneveroptional[REMOVED] RegistryConfig.cache.ttl was renamed to ttlSeconds in @objectstack/spec 17 — the unit of a duration-shaped number lives in the key name, not only in the describe prose, and the sibling maxSize in this same cache block is bytes. Rename the key to ttlSeconds; the value (seconds) and the 3600 default are unchanged.
maxSizeintegeroptionalMaximum cache size in bytes

RegistrySyncPolicy

Registry synchronization strategy

Allowed Values

  • manual
  • auto
  • proxy

RegistryUpstream

Properties

PropertyTypeRequiredDescription
urlstring✅Upstream registry endpoint
syncPolicyEnum<'manual' | 'auto' | 'proxy'>optional (default: "auto")Registry synchronization strategy
syncIntervalSecondsintegeroptionalAuto-sync interval in seconds
syncIntervalneveroptional[REMOVED] RegistryUpstream.syncInterval was renamed to syncIntervalSeconds in @objectstack/spec 17 — the unit of a duration-shaped number lives in the key name, not only in the describe prose, and the timeout beside it on this same block is milliseconds. Rename the key to syncIntervalSeconds; the value (seconds) and the min-60 bound are unchanged.
auth{ type?: Enum<'none' | 'basic' | 'bearer' | 'api-key' | 'oauth2'>; username?: string; password?: string; token?: string; … }optional
tls{ enabled?: boolean; verifyCertificate?: boolean; certificate?: string; privateKey?: string }optional
timeoutMsintegeroptional (default: 30000)Request timeout in milliseconds
timeoutneveroptional[REMOVED] RegistryUpstream.timeout was renamed to timeoutMs in @objectstack/spec 17 — the unit of a duration-shaped number lives in the key name, not only in the describe prose, and syncIntervalSeconds on this same block is seconds. Rename the key to timeoutMs; the value (milliseconds), the 30000 default and the min-1000 bound are unchanged.
retry{ maxAttempts?: integer; backoff?: Enum<'fixed' | 'linear' | 'exponential'> }optional

On this page