Skip to content

JavaScript/TypeScript Server API

Server APIs live in @nnrp/native-server. Browser packages do not expose server entrypoints.

openBackendRuntime

Creates a native backend runtime without immediately starting a listener.

ParameterTypeRequiredDescription
optionsNnrpBackendRuntimeOptionsNoTransport policy, installed transport providers, environment/platform overrides, and optional FFI binding.
Returns
Promise<NnrpBackendRuntime>
ts
import { openBackendRuntime } from "@nnrp/native-server";
import { createTcpTransportProvider } from "@nnrp/transport-tcp";

const runtime = await openBackendRuntime({
  transportPolicy: "force-tcp",
  transports: [createTcpTransportProvider()],
});

NnrpBackendRuntime.listen

Creates a backend server listener.

ParameterTypeRequiredDescription
optionsNnrpListenOptionsYesLocal endpoint, optional transport policy, and optional transport providers.
Returns
NnrpServer
ts
const server = runtime.listen({ endpoint: "nnrp://0.0.0.0:4433" });

NnrpBackendRuntime.connect

Creates a native client from an existing backend runtime. Use this when a backend process owns both server and client lifecycle.

ParameterTypeRequiredDescription
optionsNnrpConnectOptionsYesEndpoint, optional transport policy, optional transport providers, and optional session defaults.
Returns
NnrpClient

NnrpBackendRuntime.selectTransport

Selects a transport against a peer manifest.

ParameterTypeRequiredDescription
optionsNnrpTransportSelectionOptionsYesPeer manifest and optional score overrides.
Returns
NnrpTransportSelectionSummary

Preview4 Server Session Methods

NnrpServerSession.receive(options?) returns the same typed NnrpRuntimeEvent union used by client sessions, including incoming control, runtime-object, and cache frames. The server sends incremental state with these methods:

MethodMessageMetadataOptional tail
sendProgress(metadata, body?)ProgressProgressMetadataprogress body
sendPartialResult(metadata, body?)PartialResultPartialResultMetadatainline partial result
sendBackpressure(metadata)BackpressurePressureMetadatanone
sendCreditUpdate(metadata)CreditUpdatePressureMetadatanone
sendResultDropReason(metadata, diagnostic?)ResultDropReasonResultDropReasonMetadatadiagnostic bytes
sendTraceContext(metadata, body?)TraceContextTraceContextMetadatatrace attributes
sendRecoverableError(metadata, diagnostic?)ErrorRecoverableRecoverableErrorMetadatadiagnostic bytes
sendRetryAfter(metadata, diagnostic?)RetryAfterRetryAfterMetadatadiagnostic bytes
sendControl(messageType, metadata, tail?)Any server-sendable Preview4 control frameMatching runtime metadata typedeclared tail

All methods return Promise<void>. Metadata/body length mismatches fail before the frame reaches the carrier provider.

Preview4 Server Object And Cache Methods

MethodMessageMetadataOptional tail
declareObject(metadata, body?)ObjectDeclareObjectDescriptorMetadataobject metadata
referenceObject(metadata, body?)ObjectRefObjectReferenceMetadatareference metadata
releaseObject(metadata, diagnostic?)ObjectReleaseObjectReleaseMetadatadiagnostic bytes
patchObject(metadata, delta)ObjectPatchObjectDeltaMetadatadelta bytes
sendObjectDelta(metadata, delta)ObjectDeltaObjectDeltaMetadatadelta bytes
referenceCache(metadata, body?)CacheReferenceCacheReferenceMetadatacache metadata
reportCacheMiss(metadata, diagnostic?)CacheMissCacheMissMetadatadiagnostic bytes
invalidateCache(metadata)CacheInvalidateCacheInvalidateMetadatanone

The final sendResult(result) remains separate from partial-result and object-delta frames.

Boundary Rules

PackageOwnsMust not own
@nnrp/native-serverServer runtime, listen lifecycle, backend runtime lifecycle.TCP/QUIC artifacts, browser code, or client-only top-level helpers.
@nnrp/native-clientClient runtime and session lifecycle.Server listener APIs.
@nnrp/transport-tcp / @nnrp/transport-quic / @nnrp/transport-ipc / @nnrp/transport-websocketTransport behavior and packaged native artifacts.Server or client role lifecycle.

Option Types

NnrpBackendRuntimeOptions

FieldTypeRequiredDescription
transportPolicyNnrpTransportPolicyNoDefault selection policy.
transportsreadonly NnrpTransportProvider[]NoInstalled native transport providers. See Transport Providers.
environmentRecord<string, string>NoEnvironment override for artifact lookup or diagnostics.
platformstringNoPlatform override for tests and controlled packaging checks.
ffiNnrpNativeFfiBindingNoExplicit native binding for controlled deployments and tests.

NnrpListenOptions

FieldTypeRequiredDescription
endpointstringYesLocal endpoint to listen on.
providerEndpointstring | URLNoExplicit carrier-local bind endpoint.
transportPolicyNnrpTransportPolicyNoSelection policy for the listener.
transportsreadonly NnrpTransportProvider[]NoTransport providers allowed for this listener.

NnrpConnectOptions

FieldTypeRequiredDescription
endpointstringYesRemote endpoint.
providerEndpointstring | URLNoExplicit carrier-local connect endpoint.
transportPolicyNnrpTransportPolicyNoSelection policy for the connection.
transportsreadonly NnrpTransportProvider[]NoTransport providers allowed for this connection.
sessionDefaultsNnrpSessionOptionsNoDefaults applied when sessions omit values.

NnrpTransportSelectionOptions

FieldTypeRequiredDescription
peerManifestNnrpCapabilityManifestYesPeer capability manifest.
providersreadonly NnrpTransportProvider[]NoLocal providers to score.
policyNnrpTransportPolicyNoSelection policy override.

NNRP Documentation