Skip to content

sharing with friends

freqhole lets you share your music library with friends via peer-to-peer connections — no port forwarding or public IP needed.

[federation]
enabled = true

settings → network → enable P2P

after enabling, your server gets a unique node ID — your P2P identity.


Terminal window
freqhole federation status

settings → network → your node ID

looks like:

2bfzgvv4jqzhxqq5izn4k4u3whx7xh7c4qmdknhfhdyqbhnxlmaa

this never changes for your server. share it to let friends connect.


  1. create invite code

    Terminal window
    freqhole auth create-invite --role viewer
  2. share with friend

    send them:

    • your node ID
    • the invite code
  3. friend connects

    they add your node ID as a remote and enter the code.


  1. get their info

    you need:

    • their node ID
    • an invite code
  2. add as remote

    in web app: remotes → add → enter node ID

  3. register

    enter invite code and create username.

  4. done

    their library appears in your remotes.


an alternative to sharing invite codes ahead of time.

when someone tries to connect without an invite code, it creates a “knock request” — they’re asking for access.

[federation]
knocking_enabled = true

in desktop app:

notifications → pending knocks → approve/deny

in CLI:

Terminal window
freqhole federation list-knocks
freqhole federation accept-knock <knock-id>
freqhole federation reject-knock <knock-id>

approved users get viewer role by default (you can set a different role in freqhole-config.toml).


if you know a friend’s node ID, you can grant them access directly:

Terminal window
freqhole federation allow-peer <node-id> --username alice --role viewer

  • song metadata (title, artist, album, duration)
  • album artwork
  • stream access (can play songs)
  • search functionality
  • feed of server activity: new music, listening sessions, favorites & ratings
  • file paths on your disk
  • your playback history
  • server configuration

if direct connection fails, data routes through relay server:

  • same bandwidth used
  • added latency
  • relay sees traffic volume, not content

  • all P2P connections are encrypted
  • node ID is cryptographic identity
  • authentication still required (invite/knock)
  • viewers can only read, not modify
  • can revoke access anytime