Skip to content

Graphorin API reference v0.15.1


Graphorin API reference / @graphorin/server / config / ServerConfigSpec

Interface: ServerConfigSpec

Defined in: packages/server/src/config.ts:46

Stable

Properties

PropertyModifierTypeDescriptionDefined in
app?readonlystringPath to an app-compose module, relative to the config file. The standalone launcher (graphorin start) imports it and spreads the returned adapter bag (sessions / memory / agents / workflows / ...) into createServer(...), mounting the full domain surface. Ignored by createServer itself - programmatic embedders pass adapters directly.packages/server/src/config.ts:55
auditreadonly{ cipher?: string; enabled: boolean; passphraseRef?: string; path?: string; toolEvents: "all" | "off" | "security"; }-packages/server/src/config.ts:146
audit.cipher?readonlystring-packages/server/src/config.ts:150
audit.enabledreadonlyboolean-packages/server/src/config.ts:147
audit.passphraseRef?readonlystring-packages/server/src/config.ts:149
audit.path?readonlystring-packages/server/src/config.ts:148
audit.toolEventsreadonly"all" | "off" | "security"Which tools/MCP audit-bus events land in the audit chain. 'security' (default) writes the security-significant subset (dataflow flagged/blocked/declassified, sanitization, approvals, collisions, cap-disabled); 'all' adds per-call tool:execute:* chatter; 'off' disables the bridge.packages/server/src/config.ts:158
authreadonly{ kind: "none" | "token"; pepperRef?: string; perIpFailureThreshold?: number; perIpLockoutMs?: number; tokenEnvironments: readonly string[]; tokenPrefix: string; }-packages/server/src/config.ts:164
auth.kindreadonly"none" | "token"-packages/server/src/config.ts:165
auth.pepperRef?readonlystring-packages/server/src/config.ts:166
auth.perIpFailureThreshold?readonlynumber-packages/server/src/config.ts:169
auth.perIpLockoutMs?readonlynumber-packages/server/src/config.ts:170
auth.tokenEnvironmentsreadonlyreadonly string[]-packages/server/src/config.ts:168
auth.tokenPrefixreadonlystring-packages/server/src/config.ts:167
hardeningreadonly{ applyOnStart: boolean; refuseRoot: boolean; umask: number; }-packages/server/src/config.ts:175
hardening.applyOnStartreadonlyboolean-packages/server/src/config.ts:176
hardening.refuseRootreadonlyboolean-packages/server/src/config.ts:177
hardening.umaskreadonlynumber-packages/server/src/config.ts:178
healthreadonly{ walWarnThresholdBytes: number; }-packages/server/src/config.ts:192
health.walWarnThresholdBytesreadonlynumber-packages/server/src/config.ts:193
metricsreadonly{ enabled: boolean; path: string; requireAuth: boolean; }-packages/server/src/config.ts:180
metrics.enabledreadonlyboolean-packages/server/src/config.ts:181
metrics.pathreadonlystring-packages/server/src/config.ts:182
metrics.requireAuthreadonlybooleanRequire a verified token with admin:metrics:read on the exposition endpoint. Default true since 0.12.0: the exposition leaks operational intel (trigger ids in labels, consolidator budgets), so scraping is authenticated unless the operator explicitly opts out for a trusted network.packages/server/src/config.ts:190
observabilityreadonly{ logger: "json" | "pretty" | "silent"; }-packages/server/src/config.ts:172
observability.loggerreadonly"json" | "pretty" | "silent"-packages/server/src/config.ts:173
retentionreadonly{ auditDays?: number; consolidatorRunsDays: number; dlqExhaustedDays: number; enabled: boolean; idempotency: boolean; intervalMs: number; memoryHistoryDays?: number; sessionsClosedOnly: boolean; sessionsDays?: number; spansDays: number; workflowThreadsDays?: number; }-packages/server/src/config.ts:133
retention.auditDays?readonlynumber-packages/server/src/config.ts:144
retention.consolidatorRunsDaysreadonlynumber-packages/server/src/config.ts:137
retention.dlqExhaustedDaysreadonlynumber-packages/server/src/config.ts:138
retention.enabledreadonlyboolean-packages/server/src/config.ts:134
retention.idempotencyreadonlyboolean-packages/server/src/config.ts:139
retention.intervalMsreadonlynumber-packages/server/src/config.ts:135
retention.memoryHistoryDays?readonlynumber-packages/server/src/config.ts:142
retention.sessionsClosedOnlyreadonlyboolean-packages/server/src/config.ts:141
retention.sessionsDays?readonlynumber-packages/server/src/config.ts:140
retention.spansDaysreadonlynumber-packages/server/src/config.ts:136
retention.workflowThreadsDays?readonlynumber-packages/server/src/config.ts:143
secretsreadonly{ source: SecretsSource; strict: boolean; }-packages/server/src/config.ts:160
secrets.sourcereadonlySecretsSource-packages/server/src/config.ts:161
secrets.strictreadonlyboolean-packages/server/src/config.ts:162
serverreadonly{ basePath: string; cors: { allowCredentials: boolean; allowHeaders: readonly string[]; allowMethods: readonly string[]; allowOrigins: readonly string[]; maxAgeSeconds: number; }; csrf: { cookieName: string; enabled: boolean; headerName: string; safeMethods: readonly string[]; }; host: string; idempotency: { checkBodyFingerprint: boolean; enabled: boolean; lruCacheSize: number; requireKey: IdempotencyRequireKeyMode; ttlSeconds: number; }; port: number; rateLimit: { enabled: boolean; perIpRequests: number; windowMs: number; }; shutdown: { drainTimeoutMs: number; }; sse: { enabled: boolean; keepAliveMs: number; path: string; }; stream: { disconnectGracePeriodMs: number; disconnectPolicy: "continue" | "pause-on-disconnect" | "abort-on-disconnect"; perConnectionQueueLimit: number; replayBuffer: { maxEvents: number; pruneIntervalSeconds: number; ttlSeconds: number; }; }; tlsTerminatedUpstream: boolean; trustProxy: boolean; ws: { commentarySanitization: { applyToEvents: readonly string[]; policy: DeliveryCommentaryPolicyConfig; }; enabled: boolean; path: string; ticketTtlMs: number; }; }-packages/server/src/config.ts:56
server.basePathreadonlystring-packages/server/src/config.ts:59
server.corsreadonly{ allowCredentials: boolean; allowHeaders: readonly string[]; allowMethods: readonly string[]; allowOrigins: readonly string[]; maxAgeSeconds: number; }-packages/server/src/config.ts:60
server.cors.allowCredentialsreadonlyboolean-packages/server/src/config.ts:62
server.cors.allowHeadersreadonlyreadonly string[]-packages/server/src/config.ts:64
server.cors.allowMethodsreadonlyreadonly string[]-packages/server/src/config.ts:63
server.cors.allowOriginsreadonlyreadonly string[]-packages/server/src/config.ts:61
server.cors.maxAgeSecondsreadonlynumber-packages/server/src/config.ts:65
server.csrfreadonly{ cookieName: string; enabled: boolean; headerName: string; safeMethods: readonly string[]; }-packages/server/src/config.ts:67
server.csrf.cookieNamereadonlystring-packages/server/src/config.ts:69
server.csrf.enabledreadonlyboolean-packages/server/src/config.ts:68
server.csrf.headerNamereadonlystring-packages/server/src/config.ts:70
server.csrf.safeMethodsreadonlyreadonly string[]-packages/server/src/config.ts:71
server.hostreadonlystring-packages/server/src/config.ts:57
server.idempotencyreadonly{ checkBodyFingerprint: boolean; enabled: boolean; lruCacheSize: number; requireKey: IdempotencyRequireKeyMode; ttlSeconds: number; }-packages/server/src/config.ts:78
server.idempotency.checkBodyFingerprintreadonlyboolean-packages/server/src/config.ts:82
server.idempotency.enabledreadonlyboolean-packages/server/src/config.ts:79
server.idempotency.lruCacheSizereadonlynumber-packages/server/src/config.ts:83
server.idempotency.requireKeyreadonlyIdempotencyRequireKeyMode-packages/server/src/config.ts:80
server.idempotency.ttlSecondsreadonlynumber-packages/server/src/config.ts:81
server.portreadonlynumber-packages/server/src/config.ts:58
server.rateLimitreadonly{ enabled: boolean; perIpRequests: number; windowMs: number; }-packages/server/src/config.ts:73
server.rateLimit.enabledreadonlyboolean-packages/server/src/config.ts:74
server.rateLimit.perIpRequestsreadonlynumber-packages/server/src/config.ts:76
server.rateLimit.windowMsreadonlynumber-packages/server/src/config.ts:75
server.shutdownreadonly{ drainTimeoutMs: number; }-packages/server/src/config.ts:85
server.shutdown.drainTimeoutMsreadonlynumber-packages/server/src/config.ts:86
server.ssereadonly{ enabled: boolean; keepAliveMs: number; path: string; }-packages/server/src/config.ts:117
server.sse.enabledreadonlyboolean-packages/server/src/config.ts:118
server.sse.keepAliveMsreadonlynumber-packages/server/src/config.ts:120
server.sse.pathreadonlystring-packages/server/src/config.ts:119
server.streamreadonly{ disconnectGracePeriodMs: number; disconnectPolicy: "continue" | "pause-on-disconnect" | "abort-on-disconnect"; perConnectionQueueLimit: number; replayBuffer: { maxEvents: number; pruneIntervalSeconds: number; ttlSeconds: number; }; }-packages/server/src/config.ts:98
server.stream.disconnectGracePeriodMsreadonlynumber-packages/server/src/config.ts:100
server.stream.disconnectPolicyreadonly"continue" | "pause-on-disconnect" | "abort-on-disconnect"-packages/server/src/config.ts:99
server.stream.perConnectionQueueLimitreadonlynumber-packages/server/src/config.ts:106
server.stream.replayBufferreadonly{ maxEvents: number; pruneIntervalSeconds: number; ttlSeconds: number; }-packages/server/src/config.ts:101
server.stream.replayBuffer.maxEventsreadonlynumber-packages/server/src/config.ts:102
server.stream.replayBuffer.pruneIntervalSecondsreadonlynumber-packages/server/src/config.ts:104
server.stream.replayBuffer.ttlSecondsreadonlynumber-packages/server/src/config.ts:103
server.tlsTerminatedUpstreamreadonlybooleanOperator acknowledgement that a TLS-terminating reverse proxy fronts this server. Graphorin itself serves PLAINTEXT HTTP only - there is deliberately no in-process TLS - so a non-loopback bind without this acknowledgement logs a startup WARN (bearer tokens would otherwise cross the network unencrypted). Setting it true silences the warning; it changes no runtime behaviour.packages/server/src/config.ts:97
server.trustProxyreadonlyboolean-packages/server/src/config.ts:88
server.wsreadonly{ commentarySanitization: { applyToEvents: readonly string[]; policy: DeliveryCommentaryPolicyConfig; }; enabled: boolean; path: string; ticketTtlMs: number; }-packages/server/src/config.ts:108
server.ws.commentarySanitizationreadonly{ applyToEvents: readonly string[]; policy: DeliveryCommentaryPolicyConfig; }-packages/server/src/config.ts:112
server.ws.commentarySanitization.applyToEventsreadonlyreadonly string[]-packages/server/src/config.ts:114
server.ws.commentarySanitization.policyreadonlyDeliveryCommentaryPolicyConfig-packages/server/src/config.ts:113
server.ws.enabledreadonlyboolean-packages/server/src/config.ts:109
server.ws.pathreadonlystring-packages/server/src/config.ts:110
server.ws.ticketTtlMsreadonlynumber-packages/server/src/config.ts:111
storagereadonly{ encryption: { cipher?: string; enabled: boolean; passphraseRef?: string; }; mode: "server" | "lib"; path: string; walCheckpointIntervalMs?: number; }-packages/server/src/config.ts:123
storage.encryptionreadonly{ cipher?: string; enabled: boolean; passphraseRef?: string; }-packages/server/src/config.ts:127
storage.encryption.cipher?readonlystring-packages/server/src/config.ts:129
storage.encryption.enabledreadonlyboolean-packages/server/src/config.ts:128
storage.encryption.passphraseRef?readonlystring-packages/server/src/config.ts:130
storage.modereadonly"server" | "lib"-packages/server/src/config.ts:125
storage.pathreadonlystring-packages/server/src/config.ts:124
storage.walCheckpointIntervalMs?readonlynumber-packages/server/src/config.ts:126