Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

FRESH — P2P Audio Transport + VST Send Plugin

Peer-to-peer file synchronization evolved from the earlier CupStringGo-P2P prototype. FRESH adds a VST3 send plugin so DAW audio exports drop directly into the P2P sync pipeline.

Two components

FRESH Transport (FRESHP2P_SRC/)

Go desktop daemon — FRESH TRANSPORT — that syncs files between peers.

  • IRC discovery: peers find each other in a shared IRC channel using a pairing secret
  • libp2p transfer: direct encrypted file transfer with NAT traversal (hole punching, UPnP, relay fallback)
  • Fyne GUI: tabbed interface (config, P2P status, IRC chat, manifest, sync logs)
  • Dual-lane sync: separate export (outgoing) and import (incoming) folders
  • Self-upgrade: in-place binary upgrade with cascade backup versions
  • Connection revival: IRC bot manager with automatic reconnection and coordinated P2P host updates

FRESH Send Plugin (fresh-modular/)

Rust VST3 plugin built with nih_plug + egui.

  • Arms from the DAW GUI; starts recording when transport plays from position 0
  • Captures incoming audio with dynamic mono/stereo channel detection
  • Exports WAV, FLAC, or MP3 with configurable bit depth (16/24-bit)
  • Writes to an export folder watched by FRESH Transport for P2P pickup
  • Background-thread file I/O — never blocks the audio processing callback

The VST cannot network directly (sandboxing). The Go daemon handles all P2P work.

Stack

Component Language Key libraries
FRESH Transport Go 1.24 libp2p, Fyne, irc-go, fsnotify, goupnp
FRESH Send Rust 2021 nih_plug, egui, hound, flacenc, mp3lame-encoder

Project lineage

String-and-Cup (Python, WebRTC + IRC)
    └── CupStringGo-P2P (Go, libp2p + IRC)  ← earlier GitHub repo
            └── FRESH Transport (Go, hardened IRC + GUI tabs + upgrades)
                    └── FRESH Send VST (Rust, DAW → export folder → P2P)

CupStringGo-P2P on GitHub is the earlier version. FRESH is the current codebase.

Build

FRESH Transport

cd FRESHP2P_SRC
go build -o FRESH.exe .

FRESH Send VST

cd fresh-modular
cargo xtask bundle fresh --release

Output: fresh-modular/target/bundled/fresh.vst3

Configuration

FRESH Transport reads mysetup.json (created by first-run setup wizard):

  • IRC server, channel, pairing secret
  • Local libp2p port
  • Export/import folder paths
  • File watcher settings

Point the VST export folder at the Transport export lane so recorded takes sync automatically.

Technical highlights

  • IRC-as-signaling: no central server for peer discovery — uses existing IRC infrastructure
  • NAT traversal stack: UPnP port mapping, libp2p hole punching, static relay nodes
  • Filename obfuscation: files renamed during transfer; manifest restores original names on receipt
  • VST/DAW constraint handling: transport-synced recording trigger, format-aware background writes, user-visible error feedback in plugin GUI

About

P2P file sync (Go/libp2p) + VST3 DAW export plugin (Rust)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages