Skip to content

Graphorin API reference v0.12.1


Graphorin API reference / @graphorin/server / / CreateServerOptions

Interface: CreateServerOptions

Defined in: packages/server/src/app.ts:119

Stable

Properties

PropertyModifierTypeDescriptionDefined in
agents?readonlyAgentRegistryOptional pre-built registries.packages/server/src/app.ts:138
audit?readonlyAuditApi-packages/server/src/app.ts:145
channels?readonlyChannelsInputB1.6: optional channel-gateway surface (@graphorin/channels, matched structurally - no package dependency). Pass the gateway ({ gateway }) or a pre-built daemon; the server starts/stops it with the lifecycle, reports it on /v1/health, and bridges accepted inbound messages into scheduler.recordActivity().packages/server/src/app.ts:172
config?readonly{ audit?: { cipher?: string; enabled?: boolean; passphraseRef?: string; path?: string; toolEvents?: "all" | "off" | "security"; }; auth?: { kind?: "none" | "token"; pepperRef?: string; perIpFailureThreshold?: number; perIpLockoutMs?: number; tokenEnvironments?: string[]; tokenPrefix?: string; }; hardening?: { applyOnStart?: boolean; refuseRoot?: boolean; umask?: number; }; health?: { walWarnThresholdBytes?: number; }; metrics?: { enabled?: boolean; path?: string; requireAuth?: boolean; }; observability?: { logger?: "json" | "pretty" | "silent"; }; retention?: { auditDays?: number; consolidatorRunsDays?: number; dlqExhaustedDays?: number; enabled?: boolean; idempotency?: boolean; intervalMs?: number; memoryHistoryDays?: number; sessionsClosedOnly?: boolean; sessionsDays?: number; spansDays?: number; workflowThreadsDays?: number; }; secrets?: { source?: "auto" | "keyring" | "encrypted-file" | "env"; strict?: boolean; }; server?: { basePath?: string; cors?: { allowCredentials?: boolean; allowHeaders?: string[]; allowMethods?: string[]; allowOrigins?: string[]; maxAgeSeconds?: number; }; csrf?: { cookieName?: string; enabled?: boolean; headerName?: string; safeMethods?: string[]; }; host?: string; idempotency?: { checkBodyFingerprint?: boolean; enabled?: boolean; lruCacheSize?: number; requireKey?: "off" | "warn" | "enforce"; 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?: string[]; policy?: "wrap" | "strip" | "pass-through"; }; enabled?: boolean; path?: string; ticketTtlMs?: number; }; }; storage?: { encryption?: { cipher?: string; enabled?: boolean; passphraseRef?: string; }; mode?: "server" | "lib"; path?: string; walCheckpointIntervalMs?: number; }; }Loaded graphorin.config.ts payload - see defineConfig({...}).packages/server/src/app.ts:121
config.audit?public{ cipher?: string; enabled?: boolean; passphraseRef?: string; path?: string; toolEvents?: "all" | "off" | "security"; }-packages/server/src/config.ts:444
config.audit.cipher?publicstring-packages/server/src/config.ts:366
config.audit.enabled?publicboolean-packages/server/src/config.ts:363
config.audit.passphraseRef?publicstring-packages/server/src/config.ts:365
config.audit.path?publicstring-packages/server/src/config.ts:364
config.audit.toolEvents?public"all" | "off" | "security"-packages/server/src/config.ts:368
config.auth?public{ kind?: "none" | "token"; pepperRef?: string; perIpFailureThreshold?: number; perIpLockoutMs?: number; tokenEnvironments?: string[]; tokenPrefix?: string; }-packages/server/src/config.ts:446
config.auth.kind?public"none" | "token"-packages/server/src/config.ts:383
config.auth.pepperRef?publicstring-packages/server/src/config.ts:384
config.auth.perIpFailureThreshold?publicnumber-packages/server/src/config.ts:387
config.auth.perIpLockoutMs?publicnumber-packages/server/src/config.ts:388
config.auth.tokenEnvironments?publicstring[]-packages/server/src/config.ts:386
config.auth.tokenPrefix?publicstring-packages/server/src/config.ts:385
config.hardening?public{ applyOnStart?: boolean; refuseRoot?: boolean; umask?: number; }-packages/server/src/config.ts:448
config.hardening.applyOnStart?publicboolean-packages/server/src/config.ts:402
config.hardening.refuseRoot?publicboolean-packages/server/src/config.ts:403
config.hardening.umask?publicnumber-packages/server/src/config.ts:404
config.health?public{ walWarnThresholdBytes?: number; }-packages/server/src/config.ts:450
config.health.walWarnThresholdBytes?publicnumber-packages/server/src/config.ts:423
config.metrics?public{ enabled?: boolean; path?: string; requireAuth?: boolean; }-packages/server/src/config.ts:449
config.metrics.enabled?publicboolean-packages/server/src/config.ts:411
config.metrics.path?publicstring-packages/server/src/config.ts:412
config.metrics.requireAuth?publicboolean-packages/server/src/config.ts:416
config.observability?public{ logger?: "json" | "pretty" | "silent"; }-packages/server/src/config.ts:447
config.observability.logger?public"json" | "pretty" | "silent"-packages/server/src/config.ts:395
config.retention?public{ 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:443
config.retention.auditDays?publicnumber-packages/server/src/config.ts:356
config.retention.consolidatorRunsDays?publicnumber-packages/server/src/config.ts:349
config.retention.dlqExhaustedDays?publicnumber-packages/server/src/config.ts:350
config.retention.enabled?publicboolean-packages/server/src/config.ts:342
config.retention.idempotency?publicboolean-packages/server/src/config.ts:351
config.retention.intervalMs?publicnumber-packages/server/src/config.ts:343
config.retention.memoryHistoryDays?publicnumber-packages/server/src/config.ts:354
config.retention.sessionsClosedOnly?publicboolean-packages/server/src/config.ts:353
config.retention.sessionsDays?publicnumber-packages/server/src/config.ts:352
config.retention.spansDays?publicnumber-packages/server/src/config.ts:348
config.retention.workflowThreadsDays?publicnumber-packages/server/src/config.ts:355
config.secrets?public{ source?: "auto" | "keyring" | "encrypted-file" | "env"; strict?: boolean; }-packages/server/src/config.ts:445
config.secrets.source?public"auto" | "keyring" | "encrypted-file" | "env"-packages/server/src/config.ts:375
config.secrets.strict?publicboolean-packages/server/src/config.ts:376
config.server?public{ basePath?: string; cors?: { allowCredentials?: boolean; allowHeaders?: string[]; allowMethods?: string[]; allowOrigins?: string[]; maxAgeSeconds?: number; }; csrf?: { cookieName?: string; enabled?: boolean; headerName?: string; safeMethods?: string[]; }; host?: string; idempotency?: { checkBodyFingerprint?: boolean; enabled?: boolean; lruCacheSize?: number; requireKey?: "off" | "warn" | "enforce"; 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?: string[]; policy?: "wrap" | "strip" | "pass-through"; }; enabled?: boolean; path?: string; ticketTtlMs?: number; }; }-packages/server/src/config.ts:441
config.server.basePath?publicstring-packages/server/src/config.ts:298
config.server.cors?public{ allowCredentials?: boolean; allowHeaders?: string[]; allowMethods?: string[]; allowOrigins?: string[]; maxAgeSeconds?: number; }-packages/server/src/config.ts:299
config.server.cors.allowCredentials?publicboolean-packages/server/src/config.ts:191
config.server.cors.allowHeaders?publicstring[]-packages/server/src/config.ts:193
config.server.cors.allowMethods?publicstring[]-packages/server/src/config.ts:192
config.server.cors.allowOrigins?publicstring[]-packages/server/src/config.ts:190
config.server.cors.maxAgeSeconds?publicnumber-packages/server/src/config.ts:196
config.server.csrf?public{ cookieName?: string; enabled?: boolean; headerName?: string; safeMethods?: string[]; }-packages/server/src/config.ts:300
config.server.csrf.cookieName?publicstring-packages/server/src/config.ts:204
config.server.csrf.enabled?publicboolean-packages/server/src/config.ts:203
config.server.csrf.headerName?publicstring-packages/server/src/config.ts:205
config.server.csrf.safeMethods?publicstring[]-packages/server/src/config.ts:206
config.server.host?publicstring-packages/server/src/config.ts:296
config.server.idempotency?public{ checkBodyFingerprint?: boolean; enabled?: boolean; lruCacheSize?: number; requireKey?: "off" | "warn" | "enforce"; ttlSeconds?: number; }-packages/server/src/config.ts:302
config.server.idempotency.checkBodyFingerprint?publicboolean-packages/server/src/config.ts:225
config.server.idempotency.enabled?publicboolean-packages/server/src/config.ts:222
config.server.idempotency.lruCacheSize?publicnumber-packages/server/src/config.ts:226
config.server.idempotency.requireKey?public"off" | "warn" | "enforce"-packages/server/src/config.ts:223
config.server.idempotency.ttlSeconds?publicnumber-packages/server/src/config.ts:224
config.server.port?publicnumber-packages/server/src/config.ts:297
config.server.rateLimit?public{ enabled?: boolean; perIpRequests?: number; windowMs?: number; }-packages/server/src/config.ts:301
config.server.rateLimit.enabled?publicboolean-packages/server/src/config.ts:213
config.server.rateLimit.perIpRequests?publicnumber-packages/server/src/config.ts:215
config.server.rateLimit.windowMs?publicnumber-packages/server/src/config.ts:214
config.server.shutdown?public{ drainTimeoutMs?: number; }-packages/server/src/config.ts:303
config.server.shutdown.drainTimeoutMs?publicnumber-packages/server/src/config.ts:233
config.server.sse?public{ enabled?: boolean; keepAliveMs?: number; path?: string; }-packages/server/src/config.ts:308
config.server.sse.enabled?publicboolean-packages/server/src/config.ts:287
config.server.sse.keepAliveMs?publicnumber-packages/server/src/config.ts:289
config.server.sse.path?publicstring-packages/server/src/config.ts:288
config.server.stream?public{ disconnectGracePeriodMs?: number; disconnectPolicy?: "continue" | "pause-on-disconnect" | "abort-on-disconnect"; perConnectionQueueLimit?: number; replayBuffer?: { maxEvents?: number; pruneIntervalSeconds?: number; ttlSeconds?: number; }; }-packages/server/src/config.ts:306
config.server.stream.disconnectGracePeriodMs?publicnumber-packages/server/src/config.ts:254
config.server.stream.disconnectPolicy?public"continue" | "pause-on-disconnect" | "abort-on-disconnect"-packages/server/src/config.ts:251
config.server.stream.perConnectionQueueLimit?publicnumber-packages/server/src/config.ts:256
config.server.stream.replayBuffer?public{ maxEvents?: number; pruneIntervalSeconds?: number; ttlSeconds?: number; }-packages/server/src/config.ts:255
config.server.stream.replayBuffer.maxEvents?publicnumber-packages/server/src/config.ts:240
config.server.stream.replayBuffer.pruneIntervalSeconds?publicnumber-packages/server/src/config.ts:244
config.server.stream.replayBuffer.ttlSeconds?publicnumber-packages/server/src/config.ts:241
config.server.tlsTerminatedUpstream?publicboolean-packages/server/src/config.ts:305
config.server.trustProxy?publicboolean-packages/server/src/config.ts:304
config.server.ws?public{ commentarySanitization?: { applyToEvents?: string[]; policy?: "wrap" | "strip" | "pass-through"; }; enabled?: boolean; path?: string; ticketTtlMs?: number; }-packages/server/src/config.ts:307
config.server.ws.commentarySanitization?public{ applyToEvents?: string[]; policy?: "wrap" | "strip" | "pass-through"; }-packages/server/src/config.ts:280
config.server.ws.commentarySanitization.applyToEvents?publicstring[]-packages/server/src/config.ts:264
config.server.ws.commentarySanitization.policy?public"wrap" | "strip" | "pass-through"-packages/server/src/config.ts:263
config.server.ws.enabled?publicboolean-packages/server/src/config.ts:273
config.server.ws.path?publicstring-packages/server/src/config.ts:274
config.server.ws.ticketTtlMs?publicnumber-packages/server/src/config.ts:275
config.storage?public{ encryption?: { cipher?: string; enabled?: boolean; passphraseRef?: string; }; mode?: "server" | "lib"; path?: string; walCheckpointIntervalMs?: number; }-packages/server/src/config.ts:442
config.storage.encryption?public{ cipher?: string; enabled?: boolean; passphraseRef?: string; }-packages/server/src/config.ts:327
config.storage.encryption.cipher?publicstring-packages/server/src/config.ts:316
config.storage.encryption.enabled?publicboolean-packages/server/src/config.ts:315
config.storage.encryption.passphraseRef?publicstring-packages/server/src/config.ts:317
config.storage.mode?public"server" | "lib"-packages/server/src/config.ts:325
config.storage.path?publicstring-packages/server/src/config.ts:324
config.storage.walCheckpointIntervalMs?publicnumber-packages/server/src/config.ts:326
consolidator?readonlyConsolidatorLikeOptional consolidator surface (@graphorin/memory). Phase 14c starts/stops the runtime alongside the server lifecycle and surfaces its status through /v1/health.packages/server/src/app.ts:151
healthProbes?readonly() => | HealthCheckOptions | Promise<HealthCheckOptions>Optional probes that augment /v1/health. Provided by consumer code (e.g. embedder provides embedderLoaded).packages/server/src/app.ts:182
hooks?readonlyLifecycleHooksLifecycle hook overrides.packages/server/src/app.ts:190
mcp?readonlyMcpApi-packages/server/src/app.ts:144
memory?readonlyMemoryApi-packages/server/src/app.ts:142
metricRegistry?readonlyMetricRegistryOptional Prometheus metric registry override. When omitted, the server constructs the canonical registry from createServerMetricRegistry.packages/server/src/app.ts:188
now?readonly() => numberWall-clock provider for tests.packages/server/src/app.ts:192
probeCipherPeer?readonly() => Promise<void>Override the cipher peer probe. Tests inject a stub.packages/server/src/app.ts:194
replay?readonlyReplayApiOptional replay API consumed by the scope-enforced replay endpoints. Phase 14c.packages/server/src/app.ts:177
runs?readonlyRunStateTrackerOptional pre-built tracker. Tests inject deterministic timing.packages/server/src/app.ts:136
sessions?readonlySessionApiOptional in-process domain adapters wired into REST routes.packages/server/src/app.ts:141
skills?readonlySkillsApi-packages/server/src/app.ts:143
skipHardening?readonlybooleanSkip applyProcessHardening (tests).packages/server/src/app.ts:198
skipListen?readonlybooleanSkip starting the actual listener (tests).packages/server/src/app.ts:200
store?readonlyGraphorinSqliteStorePre-built SQLite store. Tests inject an in-memory store. The caller retains ownership: stop() never closes an injected store (E-21), so it can be shared across server restarts. Omit the option to let the server create - and close - its own store.packages/server/src/app.ts:134
triggers?readonlyTriggersDaemonInputOptional triggers daemon - pass an existing one (e.g. built from createScheduler) or a triggers configuration the server should wrap with the daemon adapter.packages/server/src/app.ts:157
validatedConfig?readonlyServerConfigSpecOptional pre-validated config. When supplied, config is ignored and the schema validation step is skipped. Useful for tests + the graphorin migrate CLI command which bypasses the listener.packages/server/src/app.ts:127
version?readonlystringOverride the package version reported on /v1/health.packages/server/src/app.ts:196
workflows?readonlyWorkflowRegistry-packages/server/src/app.ts:139
workflowTimers?readonlyWorkflowTimersInputW-032: optional workflow durable-timer surface - pass a createTimerDriver(...) built over your workflows + checkpoint stores ({ driver }), or a pre-built daemon. The server starts and stops it with the lifecycle and reports it on /v1/health.packages/server/src/app.ts:164