Skip to content
Export

Package map

Overview

Public API lives under pkg/. The daemon and tests import these packages. internal/ holds daemon-specific wiring that is not a stable import path for external modules.

This page maps each package to its responsibility and primary entry points. For recipes, Python migration, and concurrency rules, see API reference.

Core protocol stack

pkg/packet

Wire packet serialization, header types 1 and 2, hashing, receipts.

Item Detail
Key types Packet, PacketReceipt
Constants MTU = 500
Main files packet.go, receipt.go, constants.go

pkg/identity

Key generation, recall, sign and verify, encrypt and decrypt, ratchets, optional Secret Service persistence.

Item Detail
Key types Identity
Hardware signing NewIdentityWithSigner, RHB1 descriptor in hardware_bound.go
At-rest store pkg/identity/store (file or Freedesktop Secret Service), RSSI markers
Main files identity.go, identity_signer.go, hardware_bound.go, known_persist.go, store/

pkg/securemem

Best-effort locked buffers for long-term identity private keys (mlock, wipe on close).

Item Detail
Key types Buf
Main files buf.go, wipe.go, alloc_unix.go

pkg/cryptography

Single integration point for primitives. See Cryptography.

Item Detail
Key types CryptoProvider, Ed25519Signer
Extension SetProvider, ActiveProvider
Main files provider.go, stdlib_provider.go, curve/AES/HKDF helpers

pkg/destination

Application-facing destinations (SINGLE, GROUP, PLAIN, LINK).

Item Detail
Key types Destination, RequestHandler
Main files destination.go, constants.go

pkg/announce

Announce construction, signing, handler registration.

Item Detail
Key types Announce, Handler
Main files announce.go, handler.go

pkg/transport

Routing engine: path table, announces, forwarding, links, persistence.

Item Detail
Key types Transport, PathInfo
Main files transport.go, ingress.go, relay.go, path_selection.go, path_persist.go

See Transport.

pkg/link

Encrypted bidirectional links, request/response, channel and resource integration.

Item Detail
Key types Link
Entry points HandleIncomingLinkRequest, Reestablish, WatchAndReconnect
Main files link.go, link_path_recovery.go, reconnect.go

pkg/pathfinder

Per-link path lookup table used inside links.

Item Detail
Key types PathFinder, Path
Main file pathfinder.go

Data transfer and messaging

pkg/channel

Reliable message delivery over a link.

Item Detail
Key types Channel, Envelope
Main files channel.go, constants.go

pkg/buffer

Stream buffer over channel with bzip2 compression.

Item Detail
Key types Buffer
Main files buffer.go, constants.go

pkg/resource

Multi-part file transfer, hashmaps, RESOURCE_PRF, bzip2.

Item Detail
Key types Resource, Advertisement
Main files resource.go, advertisement.go, bzip2_compress.go

Network interfaces

pkg/interfaces

All interface implementations and factory.

Item Detail
Key types Interface, BaseInterface
Factory NewFromConfigWithContext in fromconfig.go
Reconnect reconnect.go
Lifecycle lifecycle.go (Enable, Disable, Detach)
Go-only QUIC quic.go, quic_tls.go (QUICClientInterface / QUICServerInterface)

See Interfaces.

pkg/ifac

Interface Access Code mask and unmask.

Item Detail
Key types Identity (IFAC identity)
Main file ifac.go

pkg/i2p

I2P SAM client, destinations, tunnels.

Item Detail
Key types Controller, Destination, Tunnel
Main files sam.go, controller.go, destination.go, tunnel.go

pkg/backbone

Multiplexed I/O hub for backbone TCP.

Item Detail
Key types Hub, Backend
Backends auto, epoll, kqueue, io_uring, go
Main files backbone.go, hub.go, platform pollers

Node orchestration and embedding

pkg/node

Embedder API: transport plus interfaces plus lifecycle.

Item Detail
Key types Node, PauseMode, LinkReconnectOptions
Lifecycle OnNetworkAvailable, OnNetworkLost, RefreshPaths, ReloadInterfaces
Main files node.go, lifecycle.go, reload.go, wiring.go, netmon.go

pkg/sharedinstance

Python share_instance equivalent.

Item Detail
Key types Instance, Hooks
Entry Attach(cfg, tr, hooks)
Framing SendFramed / RecvFramed
Main files instance.go, rpc.go, mpconn.go

pkg/cli

Subcommand dispatch for the unified reticulum-go binary (Main, RunStatus, RunID, RunProbe, RunPath, RunCP, RunPageserver).

Item Detail
Entry Main(opts) from cmd/reticulum-go
Docs CLI utilities

pkg/pageserver

NomadNet-style page and file server used by reticulum-go pageserver.

Item Detail
Entry pageserver.Run via cli.RunPageserver
Dynamic pages pkg/pageserver/dynamicpage
Sample tree examples/pageserver/

pkg/health

Node-local mesh integrity and link-health counters. Used by drop-site instrumentation and ops surfaces. Counters never leave the node unless the operator exports them via status RPC or the control API.

Item Detail
Key types Registry, Snapshot, Kind
Entry health.Inc, health.Default
Main files registry.go, kind.go, window.go
Docs Security, CLI utilities

pkg/rnsutil

Helpers and RPC client for CLI utilities (reticulum-go status, slow, id, probe, …).

Item Detail
RPC DialRPC, GetInterfaceStats, path and link helpers
Identity .rsg / .rsm / .rfe create and verify
Probe WaitPath, SendProbe
Slow report AnalyzeSlow, integrity and bottleneck findings
Docs CLI utilities

pkg/wasm

JavaScript bridge for browser builds (//go:build js && wasm).

Item Detail
Entry RegisterJSFunctions
Main files wasm.go, lifecycle.go

pkg/controlapi

Localhost JSON and WebSocket control plane.

Item Detail
Key types Server
Main files server.go, session.go, protocol.go, ws.go

See Control API.

pkg/librns

C ABI facade for in-process embed. Pure Go core. CGO shims in pkg/librns/capi.

Item Detail
Header include/rns.h
Shared lib task build-librns produces bin/librns.so
Smoke examples/librns-smoke
Odin bindings/odin (task test-odin)
Main files node.go, identity.go, destination.go, link.go, queue.go

See librns.

bindings/odin

Idiomatic Odin package over librns.so. Not a Go import path. Use -collection:rns=bindings/odin and import rns "rns:rns".

Item Detail
Package bindings/odin/rns
Tests bindings/odin/tests
Build task test-odin or make -C bindings/odin test
Platform Linux (links system:rns)

See librns.

bindings/dart

Dart package rns_control with librns FFI (ffi.dart) and a Control API client. Path dependency for Flutter apps.

Item Detail
Package bindings/dart (name: rns_control)
FFI Linux, Android, Windows via librns (package:rns_control/ffi.dart)
Tests dart test / task test-dart
Platforms Flutter mobile and desktop (events need dart:io). FFI needs shipped native libs

See Control API.

Discovery and policy

pkg/discovery

rnstransport wire constants, LXStamper, msgpack layouts.

Item Detail
Key types InterfaceDiscovery
Main files discovery.go, interface_discovery.go

pkg/blackhole

Blackhole table semantics, merge, announce filtering.

Item Detail
Key types Table, Entry
Main file blackhole.go

pkg/rate

Token-bucket limiter, ingress and egress announce controls.

Item Detail
Key types Limiter, IngressControl
Main file rate.go

Configuration and shared types

pkg/reticulumconfig

Canonical INI parser and writer.

Item Detail
Functions LoadConfig, SaveConfig, DefaultConfig, InitConfig, GetConfigPath
Main file config.go

pkg/common

Shared config structs, path types, IFAC helpers, persistence utilities.

Item Detail
Key types ReticulumConfig, InterfaceConfig, Path
Main files types.go, config.go, interfaces.go, persistence.go

pkg/config (legacy)

Older standalone config struct. New code should use pkg/reticulumconfig.

Security and operations

pkg/sandbox

Post-startup OS restrictions.

Item Detail
Entry Apply(cfg)
Main files sandbox.go, platform-specific files

pkg/debug

Structured logging with debug levels 1 through 7.

Item Detail
Functions Init, Log, SetDebugLevel
Main file debug.go

Utilities

pkg/resolver

Deterministic identity resolution from a full name string (SHA-256).

Item Detail
Key type Resolver
Main file resolver.go

Internal packages (not stable for importers)

internal/config

Re-exports pkg/reticulumconfig for the daemon.

internal/storage

Filesystem persistence under ~/.reticulum-go/storage/.

Item Detail
Key type Manager
Main files manager.go, atomic.go

Command binaries

Path Binary Role
cmd/reticulum-go reticulum-go Daemon and tools (status, id, probe, path, cp, pageserver). Legacy rgo* names are thin wrappers / install symlinks.
cmd/rgostatuscmd/rgocp (wrappers) Call into pkg/cli for compatibility with old build scripts
cmd/reticulum-wasm WASM module Browser entry

CLI dispatch lives in pkg/cli. Pageserver logic lives in pkg/pageserver.

Suggested import paths for applications

Task Packages
Embed full node pkg/node, pkg/reticulumconfig, pkg/destination, pkg/identity
Embed from C / FFI pkg/librns (or link librns.so + include/rns.h)
Embed from Odin bindings/odin (import rns "rns:rns", link librns.so)
Flutter / Dart FFI bindings/dart (package:rns_control/ffi.dart)
Flutter / Dart Control API bindings/dart (package:rns_control)
Low-level transport only pkg/transport, pkg/interfaces, pkg/packet
Crypto only pkg/cryptography, pkg/identity
Browser pkg/wasm (compiled), WebSocket interface
Out-of-process non-Go client Control API (pkg/controlapi on the daemon)

Do not import internal/ from outside this module.

Related documents

R
Reticulum-Go

A Go implementation of the Reticulum Network Stack. Building the future of resilient, sovereign communications.

Implementation License: Apache-2.0

Follow Development

Links

Quad4 Software

Backed by Quad4 Software. Building privacy-first, secure, efficient software.

quad4.io
© 2026 Quad4 Software. All rights reserved.
Deployed using Coolify