Geode DSN (Data Source Name) Specification

Version: 1.0.0
Status: Official Specification
Last Updated: 2026-02-05

This document defines the official DSN (Data Source Name) format for Geode client libraries. All client implementations MUST conform to this specification.

Overview

A DSN (Data Source Name) is a connection string that specifies how to connect to a Geode database server. It encodes the transport protocol, server address, authentication credentials, and connection options in a single URL-like string.

DSN Format

<scheme>://[<username>:<password>@]<host>[:<port>][?<parameters>]

Alternative Formats

For convenience, these alternative formats are also supported:

# Scheme-less (defaults to quic://)
<host>:<port>[?<parameters>]
<host>[?<parameters>]

Supported Schemes

SchemeTransportDefault PortTLSDescription
quic://QUIC3141RequiredRecommended. High-performance UDP-based transport with built-in TLS 1.3
grpc://gRPC50051OptionalStandard gRPC over HTTP/2
(none)QUIC3141RequiredScheme-less defaults to QUIC transport

Note: Use quic:// as the default transport for optimal performance.

Host Specification

IPv4 Addresses

quic://192.168.1.100:3141
quic://127.0.0.1:3141

IPv6 Addresses

IPv6 addresses MUST be enclosed in square brackets:

quic://[::1]:3141
grpc://[2001:db8::1]:50051
quic://[fe80::1%eth0]:3141

Hostnames

quic://localhost:3141
quic://geode.example.com:3141

Authentication

URL-Embedded Credentials

Credentials can be embedded in the URL using standard HTTP basic auth format:

quic://username:password@localhost:3141

Special characters in credentials MUST be percent-encoded:

  • @%40
  • :%3A
  • /%2F
  • %%25
  • Space → %20 or +

Example with special characters:

quic://user%40domain:p%40ss%3Dword@localhost:3141

Query Parameter Credentials

Credentials can also be specified via query parameters:

quic://localhost:3141?username=admin&password=secret

Aliases:

  • username, user → Authentication username
  • password, pass → Authentication password

Query Parameters

Standard Parameters

ParameterTypeDefaultDescription
page_sizeinteger1000Results page size (1-100,000)
hello_namestringvariesClient name sent in HELLO handshake
hello_verstringvariesClient version sent in HELLO handshake
conformancestring“min”GQL conformance level (“min”, “full”)

Authentication Parameters

ParameterAliasesTypeDescription
usernameuserstringAuthentication username
passwordpassstringAuthentication password

TLS Parameters

ParameterAliasesTypeDefaultDescription
tls-booleantrueEnable/disable TLS (gRPC only, QUIC always uses TLS)
insecure_tls_skip_verify-booleanfalseSkip TLS certificate verification (testing only)
caca_certstring-Path to CA certificate file
certclient_certstring-Path to client certificate file (for mTLS)
keyclient_keystring-Path to client private key file (for mTLS)
server_name-string-SNI server name for TLS

Important: The DSN specification uses only insecure_tls_skip_verify for TLS verification bypass. Do not use legacy aliases in new configurations.

Timeout Parameters

ParameterAliasesTypeDefaultDescription
connect_timeouttimeoutinteger30Connection timeout in seconds
timeout_ms-integer30000Connection timeout in milliseconds

Note: When both connect_timeout (seconds) and timeout_ms (milliseconds) are specified, timeout_ms takes precedence.

Boolean Parameter Values

Boolean parameters accept:

  • True: true, 1, yes, on
  • False: false, 0, no, off

Examples

Basic Connection

# QUIC transport (recommended)
quic://localhost:3141

# gRPC transport
grpc://localhost:50051

# Scheme-less (defaults to QUIC)
localhost:3141

With Authentication

quic://admin:secret@localhost:3141
quic://localhost:3141?username=admin&password=secret

With Options

quic://localhost:3141?page_size=500&hello_name=my-app
grpc://localhost:50051?tls=0&insecure_tls_skip_verify=true

Full Examples

# QUIC with all options
quic://admin:[email protected]:3141?page_size=500&hello_name=my-app&hello_ver=1.0.0&conformance=min

# gRPC with mTLS
grpc://localhost:50051?ca=/path/to/ca.crt&cert=/path/to/client.crt&key=/path/to/client.key

# IPv6 with authentication
quic://admin:secret@[2001:db8::1]:3141?insecure_tls_skip_verify=true

# Development/testing
grpc://localhost:50051?tls=0

Environment Variables

Implementations MAY support the following environment variables as fallback defaults:

VariableDescription
GEODE_HOSTDefault host if DSN is empty
GEODE_PORTDefault port if not specified
GEODE_TLS_CADefault CA certificate path
GEODE_USERNAMEDefault username
GEODE_PASSWORDDefault password
GEODE_TRANSPORTDefault transport (quic or grpc)