Early-stage software. Shurli is experimental and built with AI assistance. It will have bugs. Not recommended for production or safety-critical use. Read the disclaimer.
Managing Your Network

Managing Your Network

Your relay is secured and peers are connected. This guide covers daily operations: who can do what, how to manage peers, and what to do when things go wrong.

Roles: admin vs member

Every authorized peer has a role. The first peer to join a fresh relay is automatically promoted to admin.

AdminMember
Connect and use the relayYesYes
Use proxied servicesYesYes
Create pairing codesYesOnly if invite policy is “open”
Create invite depositsYesOnly if invite policy is “open”
Seal/unseal the vaultYesNo
Remote unsealYesNo
Authorize/deauthorize peersYesNo
Change invite policyYes (config file)No

Auto-promotion: When the relay starts with zero admins in authorized_keys, the first peer to pair is automatically promoted to admin. After that, new peers join as members.

Viewing your peers

From the relay server

# Full peer list with roles, groups, and verification status
shurli relay list-peers

Example output:

1. [admin]  12D3KooWLqK4ab...  home-node
2. [member] 12D3KooWRtP7cd...  laptop    group=family  [UNVERIFIED]
3. [member] 12D3KooWXyZ9ef...  phone     group=family  [verified=2026-03-01]

3 authorized peers (1 admin, 2 members)

From any device

# Uses the local config to find the authorized_keys file
shurli auth list

The output shows:

  • Short peer ID (first 16 characters)
  • Role badge: [admin] or [member]
  • Comment (the name you gave when pairing)
  • Group affiliation (if set)
  • Verification status: [UNVERIFIED] or [verified=DATE]

Changing roles

Promote a member to admin

shurli auth add 12D3KooWRtP7cd... --role admin

If the peer is already authorized, this updates their role without removing their other attributes.

Demote an admin to member

shurli auth add 12D3KooWRtP7cd... --role member

Caution: Don’t demote yourself unless another admin exists. A relay with zero admins can’t create invites, unseal the vault remotely, or manage peers.

Removing peers

# From a client device
shurli auth remove 12D3KooWXyZ9ef...

# From the relay server
shurli relay deauthorize 12D3KooWXyZ9ef...

What happens when you remove a peer:

  1. The peer ID is deleted from authorized_keys
  2. Existing connections from this peer continue until they disconnect (TCP keepalive timeout)
  3. When the peer tries to reconnect, the connection gater rejects them
  4. The peer needs a new invite to rejoin

Relay server note: After running shurli relay authorize or shurli relay deauthorize, restart the relay to apply changes: sudo systemctl restart shurli-relay

Adding peers manually

Sometimes you have a peer ID but don’t want to go through the invite flow (e.g., adding your own new device):

# On the relay server
shurli relay authorize 12D3KooWNewDevice... my-new-laptop

# On a client device
shurli auth add 12D3KooWNewDevice... --comment "my-new-laptop" --role member

Relay info

See your relay’s identity, addresses, and connection details:

shurli relay info

Example output:

Peer ID: 12D3KooWRelay...
Connection gating: enabled
Authorized peers: 3

Public addresses:
  /ip4/203.0.113.50/tcp/7777/p2p/12D3KooWRelay...
  /ip4/203.0.113.50/udp/7777/quic-v1/p2p/12D3KooWRelay...
  /ip6/2001:db8::1/tcp/7777/p2p/12D3KooWRelay...

Quick setup:
  shurli relay add 203.0.113.50:7777 --peer-id 12D3KooWRelay...

If qrencode is installed, it also displays a QR code for easy mobile setup.

Validating your auth file

Check for syntax errors or malformed peer IDs:

shurli auth validate

Or validate a specific file:

shurli auth validate /etc/shurli/relay_authorized_keys

Output shows the count of valid peer IDs and any errors with line numbers.

Configuration reference

Key configuration fields for network management:

relay-server.yaml (relay side)

KeyTypeDefaultWhat it does
security.invite_policystring"admin-only"Who can create invites: admin-only or open
security.vault_filestring""Path to sealed vault JSON (empty = no vault)
security.auto_seal_minutesint0Auto-reseal timeout (0 = manual only)
security.require_totpboolfalseForce TOTP for all unseal operations
security.enable_connection_gatingbooltrueReject unauthorized peers
security.authorized_keys_filestring"relay_authorized_keys"Path to the peer allowlist

shurli.yaml (client side)

KeyTypeDefaultWhat it does
security.authorized_keys_filestring"authorized_keys"Path to the peer allowlist
relay.addresseslist[]Relay server multiaddrs
namesmap{}Peer name to ID mappings

Common operations quick reference

TaskCommand
List peersshurli auth list or shurli relay list-peers
Add peershurli auth add <peer-id> --comment "name"
Remove peershurli auth remove <peer-id>
Promote to adminshurli auth add <peer-id> --role admin
View relay infoshurli relay info
Add relay to configshurli relay add <addr> --peer-id <id>
Remove relayshurli relay remove <addr>
List relaysshurli relay list
Validate auth fileshurli auth validate
Create pairing codeshurli relay pair --count N --ttl 2h
Create invite depositshurli relay invite create --ttl 86400
List invitesshurli relay invite list
Seal vaultshurli relay seal
Unseal vaultshurli relay unseal
Remote unsealshurli relay unseal --remote <addr>
Vault statusshurli relay seal-status

Troubleshooting

IssueCauseSolution
Peer can’t connectNot in authorized_keysshurli relay authorize <peer-id> and restart relay
“vault is sealed” on inviteVault lockedUnseal: shurli relay unseal
TOTP code rejectedClock skewSync your device clock (NTP). TOTP allows +/- 30 seconds
Remote unseal failsNot an admin, or wrong addressCheck role with shurli auth list, verify address with shurli relay info
“permanently blocked” on unseal11+ failed attemptsSSH to relay and unseal locally: shurli relay unseal
Peer shows [UNVERIFIED]SAS not confirmedCompare emojis and run: shurli verify <peer>
Invite deposit “not found”Typo in ID, or expiredCheck with shurli relay invite list
Can’t create invites (member)Invite policy is admin-onlyAsk an admin, or change policy to “open” in config
Relay address changedServer IP changedUpdate clients: shurli relay remove <old> then shurli relay add <new>
Auth file has errorsMalformed peer IDsRun shurli auth validate to find the problem

Next step: Monitoring - set up Prometheus and Grafana to see everything your relay is doing in real time.