Receive2/Send2 and skip transports entirely. Read this page only when you use IOperations.Send or Receive (Path B) — for example the Full send/receive tour or local-only MemoryTransport/SQLiteTransport workflows.
Read next: Load and publish model data — Path B vs Path C.
ServerTransport
Sends and receives objects (and blobs) over HTTP to a Speckle Server project.ServerTransport Create(Account account, string streamId, int timeoutSeconds = 60, string? blobStorageFolder = null)
Constructs a
ServerTransport. Always use this factory — ServerTransport’s constructor has
DI-resolved dependencies (ISpeckleHttp, ISdkActivityFactory) that aren’t convenient to supply
manually.Example
streamId here is the project id — a naming holdover from Speckle’s v2 terminology.SQLiteTransport
A general-purpose local disk cache, used automatically as the default local cache whenuseDefaultCache: true is passed to Send/Receive.
SQLiteTransport(string? basePath = null, string? applicationName = null, string? scope = null)
Creates or opens a local SQLite database for caching objects. Defaults to a per-user application
data path.
Example
SQLiteTransport2 is a related, per-project variant used internally as the default local cache
alongside ServerTransport — you generally won’t construct it directly.MemoryTransport
An in-memory, non-persistent transport. Fastest option; data is lost when the process ends.MemoryTransport(ConcurrentDictionary<string, string>? objects = null, bool blobStorageEnabled = false, string? basePath = null, string? applicationName = null)
Creates an in-memory object store. Useful for tests and short-lived scripts that don’t need
persistence.
Example
ITransport
All transports implementITransport, which supports:
IBlobCapableTransport (implemented by ServerTransport, SQLiteTransport, and
MemoryTransport) adds blob sidecar storage for binary attachments alongside object graphs.FAQ
Do I need a transport if I use Send2?
Do I need a transport if I use Send2?
No for server send/receive —
Send2/Receive2 talk to the server directly. You still use
transports for Path B (Send/Receive), local-only workflows, or the Full send/receive
tour.Why must ServerTransport come from IServerTransportFactory?
Why must ServerTransport come from IServerTransportFactory?
Its constructor depends on
ISpeckleHttp and other services registered by AddSpeckleSdk. The
factory supplies those dependencies.When should I use MemoryTransport vs SQLiteTransport?
When should I use MemoryTransport vs SQLiteTransport?
MemoryTransport for tests and ephemeral scripts. SQLiteTransport when you want a
persistent local cache across runs or offline receive of previously fetched data.
Next Steps
Load and publish model data
When Path B needs a transport
Full send/receive tour
ServerTransport worked example
Operations
Send and Receive signatures