Configuration

The NullBore client reads configuration from ~/.config/nullbore/config.toml.

Legacy path ~/.nullbore/config.toml is still supported. The installer auto-migrates to the XDG location.

Config file

# ~/.config/nullbore/config.toml

server = "https://tunnel.nullbore.com"
api_key = "nbk_your_api_key_here"
default_ttl = "1h"
debug = false

# Persistent tunnels (managed by the daemon)
[[tunnels]]
name = "api"
port = 3000

[[tunnels]]
name = "web"
port = 8080

The installer creates this file automatically. Edit it directly — there is no config set command.

Persistent tunnels

Define [[tunnels]] sections to have the daemon manage tunnels automatically. Changes are hot-reloaded every 10 seconds — no restart needed.

[[tunnels]]
name = "api"        # tunnel name (becomes the subdomain slug)
port = 3000         # local port to expose
host = "localhost"  # target host (default: localhost)
ttl = "2h"          # TTL override (default: server default)
# auth = "user:pass"  # require HTTP basic auth before relaying (optional)

[[tunnels]]
name = "web"
port = 8080

Then run nullbore daemon to start.

Environment variables

Environment variables override config file values. See the full list in the CLI Reference.

Important: Use export when setting environment variables — without it, the variable won't be passed to child processes.

# Wrong — shell variable only, nullbore won't see it:
NULLBORE_API_KEY="nbk_..."
nullbore open 3000

# Right:
export NULLBORE_API_KEY="nbk_..."
nullbore open 3000

Debug mode

Enable verbose logging (relay connections, control channel, dashboard polling):

debug = true

Or pass --debug / -v to any command:

nullbore open --port 3000 --debug

Precedence

Environment variables > Config file > Defaults

Full CLI reference

See CLI Reference for all commands, flags, and environment variables — auto-generated from the source code.