Bolt Protocol
Traverse implements the Bolt protocol (versions 5.1 through 6.0) for binary client-server communication.
Supported Versions
| Version | Status |
|---|---|
| Bolt 6.0 | Preferred |
| Bolt 5.8 | Supported |
| Bolt 5.7 | Supported |
| Bolt 5.6 | Supported |
| Bolt 5.5 | Supported |
| Bolt 5.4 | Supported |
| Bolt 5.3 | Supported |
| Bolt 5.2 | Supported |
| Bolt 5.1 | Supported |
Handshake
The Bolt handshake begins with a 4-byte magic preamble:
60 60 B0 17
The client then sends four 32-bit version proposals. Each proposal is range-encoded in big-endian byte order:
[padding:8, range:8, minor:8, major:8]
padding (bits 24-31): always 0
range (bits 16-23): number of minor versions backward from "minor" that are accepted
minor (bits 8-15): minor version
major (bits 0-7): major version
The server iterates proposals in order, tries each version in the range, and responds with the highest mutually supported version. If no version matches, the server responds with 0.0 and closes the connection.
Default Port
Traverse listens for Bolt connections on port 7690 by default (configurable via --listen).
Authentication
After the handshake, the client sends a HELLO message followed by LOGON with credentials (Bolt 5.4+). If authentication is not configured on the server, any credentials are accepted.
Re-authentication is supported via LOGOFF + LOGON to switch users on the same connection.
TLS
When the server is started with --tls-cert and --tls-key, Bolt connections are upgraded to TLS. Drivers connect using the bolt+s:// scheme:
bolt+s://localhost:7690
Transactions
Bolt supports explicit transactions via BEGIN, COMMIT, and ROLLBACK messages. Queries outside an explicit transaction run in auto-commit mode.
Features
- Streaming results — rows sent as individual
RECORDmessages - Query parameters — safe parameterized queries to prevent injection
- Bookmarks — causal consistency across sessions
- Query statistics — nodes created, relationships created, properties set, labels added, etc.
- Notifications — warnings and informational messages from the server
- Telemetry — client API type telemetry (Bolt 5.4+)
- RESET — connection health recovery
Driver Compatibility
Any Bolt driver supporting version 5.1 or later works with Traverse. Tested drivers include:
| Language | Driver | Connection URI |
|---|---|---|
| Python | neo4j-driver | bolt://host:7690 |
| JavaScript | neo4j-driver | bolt://host:7690 |
| Java | neo4j-java-driver | bolt://host:7690 |
| Go | neo4j-go-driver | bolt://host:7690 |
| .NET | Traverse.Bolt (native) | bolt://host:7690 |
| .NET | Neo4j.Driver | bolt://host:7690 |
Note: Traverse provides a native .NET Bolt client (Traverse.Bolt) with zero external dependencies and pipelined RUN+PULL for lower latency. See .NET Bolt Client.