---
title: "openvibe-sdk/link · OpenVibe.Services"
canonical: "https://openvibe.services/docs/sdk/link"
updated: null
---

# openvibe-sdk/link · OpenVibe.Services

HTML: [openvibe-sdk/link · OpenVibe.Services](https://openvibe.services/docs/sdk/link)

# `openvibe-sdk/link`

Generated at 2026-11-13 06:25:48 UTC from [`openvibe-contracts v0.419.0`](https://github.com/OpenVibers/OpenVibe.Contracts/tree/v0.419.0) and [`openvibe-sdk v0.161.0`](https://github.com/OpenVibers/OpenVibe.SDK/tree/v0.161.0).

From `types/link.d.ts` (server only). Declarations are shown verbatim.

## type LinkCpu

platform.link-capabilities@1: Link machine hardware, placement regions, tags and operating costs. Validated by openvibe-contracts (required lazily by validateLinkCapabilities). linkOffers() maps a descriptor to a platform.resource-offer@1 (kind "node") and a platform.runtime-offer@1.

~~~~
export type LinkCpu = { cores: number; threads?: number };
~~~~

## type LinkGpu

~~~~
export type LinkGpu = { model: string; count: number; vram_mb?: number };
~~~~

## type LinkStorage

~~~~
export type LinkStorage = { capacity_gb: number; available_gb?: number; kind?: string };
~~~~

## type LinkNetwork

~~~~
export type LinkNetwork = { ingress_mbps: number; egress_mbps: number };
~~~~

## type LinkCosts

~~~~
export type LinkCosts = { per_hour_usd: number; egress_per_gb_usd?: number };
~~~~

## type LinkCapabilities

~~~~
export type LinkCapabilities = { node_id: string; cpu: LinkCpu; arch: string; memory_mb: number; gpu?: LinkGpu;
    storage: LinkStorage; network: LinkNetwork; regions: string[]; tags: string[]; costs: LinkCosts;
    capabilities?: string[]; agent_version?: string; updated_at?: string };
~~~~

## type LinkOffersOptions

~~~~
export type LinkOffersOptions = { trust?: string };
~~~~

## type ValidationError

~~~~
export type ValidationError = { path: string; message: string };
~~~~

## function linkCapabilities

Null/undefined fields are stripped.

~~~~
export declare function linkCapabilities(fields: Partial<LinkCapabilities>): LinkCapabilities;
~~~~

## function linkOffers

Map a Link descriptor to { resource: resource-offer@1, runtime: runtime-offer@1 }. trust defaults to "first-party"; it is "user-owned" only when opts.trust says so.

~~~~
export declare function linkOffers(descriptor: LinkCapabilities, opts?: LinkOffersOptions): {
    resource: Record<string, unknown>; runtime: Record<string, unknown> };
~~~~

## function validateLinkCapabilities

~~~~
export declare function validateLinkCapabilities(record: unknown): { ok: boolean; errors: ValidationError[] };
~~~~

## function createLink

~~~~
export declare function createLink(options: import('./machines').MachinesClientOptions): { compute: import('./machines').LinkComputeClient };
~~~~
