Docs/Plugin guide

Leylines plugin guide

For the current Windows and Linux beta (VST3 · CLAP · Standalone). macOS is on the way.

1 · Getting started

Leylines is a collaboration plugin: multiplayer for your DAW. Drop it on the master channel of any supported DAW, start a session with up to five collaborators, and hear their latest mixes playing alongside yours. Each of you stays in your own DAW, your own project, your own time zone. Audio is the core, but a session can also carry individual stems, MIDI parts, and file attachments. One plugin, three roles.

Async, not streaming

Leylines is async, not streaming. There is no live audio feed, and your audio travels straight between peers with nothing sitting in the middle. As you play, the plugin captures your master output, encodes it into short Opus chunks (192 kbps stereo), and ships those chunks to your peers over a direct peer-to-peer connection. Their plugins cache your chunks and play them back aligned to their own transport; yours does the same with theirs. Nobody has to agree on sample rate, buffer size, or even be online at the same moment. The session is eventually consistent: whatever you played most recently at a given bar is what your collaborators hear at that bar, once the chunks arrive.

Leylines is deliberately not a low-latency live-monitoring tool. It trades real-time for reach: the connection works across cities and across schedules, without a server in the middle of your audio.

Three things worth knowing up front

  • Coverage is playback-driven. Only the parts of the timeline you actually play get captured and shared. If you never press play over a section, your peers have a gap there. The fast way to fill everything at once is a normal DAW render with Leylines on the bus (see Render once to sync everything).
  • Newest take wins. Replaying a section overwrites your previous take at that timecode, on your machine and, once the new chunks propagate, on everyone else’s. The previous take isn’t lost; it drops into a take history you can restore from.
  • Received audio never disappears. Not when a peer disconnects, not when the session ends. Their lane dims to offline · playing from cache and keeps playing what they already sent.

Your audio goes only to your session peers. The plugin makes no network connections of any kind until you start a session.

2 · Install per DAW

Leylines installs as two plugins: the audio Leylines effect (goes on a mixer / FX slot, shares audio) and Leylines MIDI (goes on an instrument / generator channel, shares MIDI). Both are the same plugin otherwise (same window, same roles, same session) with distinct names and IDs so your DAW lists them separately.

Choosing a format: CLAP first

Use CLAP where your DAW supports it (REAPER, Bitwig, FL Studio 2024+, Studio One 7+): it has the cleanest MIDI routing. Fall back to VST3 on hosts without usable CLAP (Cubase, Ableton Live). macOS support (AU, required by Logic) lands after the beta. Pro Tools (AAX) is not supported, and AAX is parked long-term. The current beta targets Windows and Linux, CLAP and VST3; Logic Pro and Pro Tools are post-beta.

Install paths (Windows / Linux)

  • VST3: Windows C:\Program Files\Common Files\VST3\ (needs administrator rights, so accept the elevation prompt when copying, or copy from an elevated shell); Linux ~/.vst3/ for your user, or /usr/lib/vst3/ system-wide.
  • CLAP: Windows C:\Program Files\Common Files\CLAP\; Linux ~/.clap/ for your user, or /usr/lib/clap/ system-wide.

Then rescan plugins in your DAW. Leylines appears under Cybermoon. Insert the audio effect as the last device on your master bus so it captures the finished mix.

FL Studio: FL only scans C:\Program Files\Common Files\VST3. A copy placed in a per-user folder is ignored, so use the system folder above, then Options → Manage plugins → Find installed plugins.
A Standalone build (Leylines.exe) is included for trying the UI and session flow without a DAW. For real work use the plugin in your DAW. The standalone has no project audio to capture.

Where Leylines loads, and the one-time MIDI step

Capturing audio and capturing MIDI are automatic once the plugin is loaded on the right kind of channel. Playing back a peer’s MIDI stream so it drives one of your instruments needs one one-time routing step, and it differs by host. Leylines detects your DAW and shows the matching step in the Playback surface; the full table is below.

DAWFormatsPlay a peer’s MIDI onto an instrumentStatus
REAPERVST3 · CLAP · AU (mac)Add a track MIDI send from the Playback track to the target instrument track (flexible routing).Works
BitwigVST3 · CLAPPut a Note Receiver on the target instrument track, pointed at the Leylines track. CLAP recommended.Works
FL StudioVST3 · CLAP (2024+)Set this plugin’s wrapper MIDI Output port = N and the target synth’s Input port = N (same number).Works (primary test host)
Studio OneVST3 · CLAP (7+)On the target track set Instrument Input → Leylines MIDI; enable Monitor.Works
CubaseVST3 onlyOn the target track’s Input Routing pick the Leylines MIDI Out entry; enable Monitor.Works
Ableton LiveVST3 (use VST3, not AU)On the target instrument track set MIDI From → the Leylines track and the plugin below it; Monitor = In (Live merges to channel 1).Works
Logic ProAU onlyNeeds a dedicated AU MIDI-FX variant (planned for the macOS pass).Post-beta
Pro ToolsAAX (none shipped)n/aNot supported (AAX deferred)
MIDI is shared as notes only. Note-on and note-off cross the wire; CC, pitch-bend, aftertouch, and SysEx do not. The relay is notes-only end-to-end so behaviour is identical across every host and format.

After the update that added MIDI lanes, expect your DAW to re-scan Leylines once: the MIDI-capability flags changed and hosts cache those. Existing projects are unaffected; the plugin’s identity codes are unchanged.

3 · Your first session

Leylines is session-centric: you host a session or join someone’s, and the session (its handle, its peers, its cached audio) survives disconnects, project close, and DAW restarts. A session holds you plus up to five peers in a full mesh (a sixth join is rejected cleanly with a “Session full” message).

Sign in first to send

Sending needs a sign-in: a license on your account is what unlocks sending (see Account & licensing). Until then the plugin runs as a free receiver: you can still join and hear everyone, with no account and nothing to sign up for. Set the name collaborators see under Settings → Network → Display name.

A sign-in also brings the free relay with it. Relay credentials go with a license, so an instance that is not signed in connects peer to peer or over the LAN and never requests one of its own. On an ordinary home or office network that changes nothing; on symmetric NAT it is the difference between connecting and not (see Troubleshooting).

Host or join

Click Invite in the header to open the connection popover. From Solo you get two choices, Host a session and Join a session, with a live LAN strip above both. Hosting shows your session code; joining gives you a field to paste one in.

Share codes

A share code looks like username-word-word-word: a short display prefix from your name plus a three-word core (for example jamie-quiet-violet-river). The three words carry the identity; a bare three-word code redeems too, and the field forgives extra spacing or punctuation when a collaborator types it back.

Connect via server is coming. The short-code “type it in and you’re connected” flow needs a small Cybermoon-hosted server that is not deployed yet. The full UI is already in place and lights up the moment a server is configured. Until then, pair with a paste-link (works today, everywhere) or meet on the same Wi-Fi and use LAN.

Paste-link: works today

Paste-link is the zero-infrastructure path: the two plugins exchange one block of text each, then connect directly. Nothing but the text leaves your machines, so it works on networks where nothing else does. It lives inside the Host and Join screens’ Advanced · direct connect disclosure, which opens automatically whenever no server is configured (today, that is every build).

  1. Host: Invite → Host a session → in the Your offer box click Create offer, then Copy and send the blob to your collaborator over anything: Discord, Slack, email. It is plain text.
  2. Joiner: Invite → Join a session → paste the host’s blob into Paste their offer (or use Paste & use to read the clipboard directly). The Your answer box fills in. Copy it and send it back.
  3. Host again: paste the returned answer into Their answer. The popover walks through the connection and resolves to Paired.

To grow the session, Add another peer on the Paired view re-enters the paste flow for a fresh slot. Existing peers stay connected while the newcomer pairs.

LAN: same Wi-Fi

While the Invite popover is open, Leylines broadcasts a small discovery beacon and listens for others, only while the panel is on screen, and only on your own network. Nearby instances show up in the Solo strip; Browse LAN opens the full list, and each row has a Connect button. The other side gets a consent toast and accepts before anything pairs. LAN never auto-pairs across machines.

Disconnects, reconnects, and leaving

A disconnected peer’s lane stays (dimmed, tagged offline · playing from cache) and everything they already sent keeps playing. End session tears the links down but keeps the lanes and the cached audio, so the session shows up under Recent sessions and is resumable. The only thing that deletes cached audio is Reset cache in Settings → Cache.

4 · Roles explained

One binary, three placements. You switch an instance’s role from Settings → About → Instance role, or from the role switch in the bottom strip.

  • Hub: the instance on your master bus. It owns the session, the peers, and the playlist. The first Leylines instance in a DAW process defaults to Hub.
  • Contribute: shares one track into the session as an additional named stream. On an audio track it captures the track’s audio; on a MIDI channel (using Leylines MIDI) it captures the MIDI events. Name the stream in its body; the name travels to your peers. Later fresh inserts default to Contribute and bind to the Hub automatically.
  • Playback: outputs one chosen remote stream at its insertion point, so a collaborator’s stem lands on a real track in your project, routable through your own FX. Choose Playback explicitly when you want to route a peer stream onto a track, and it is how you drive an instrument from a peer’s MIDI stream.

Track instances find the Hub inside the same DAW automatically, including across the two plugin builds, so a Leylines MIDI Contribute discovers an audio Leylines Hub in the same project, and vice versa. When they can’t (some sandboxed hosts) they show an honest “Hub not reachable in this host” status rather than failing silently.

5 · Capturing & contributing

Capture is on by default. You only ever turn things off. Everything shares into a session automatically; the controls are for muting a specific contribution, not for opting in. Any combination is valid: master only, tracks only, both, or neither. None of these delete audio already in a peer’s playlist. Leylines never retracts a chunk once sent; they only stop new capture.

  • Master-bus capture: the Hub’s own master lane carries a record chip, mirrored by Settings → About → Hub capture. Pausing keeps the Hub relaying and aggregating peers, but stops sharing your own master bus.
  • Per-lane record chips: each contributed lane in the Hub’s playlist shows a small record chip in its header (a filled dot while capturing, a slashed dot while paused). Click it to pause or resume that contribution from the Hub’s side.
  • Contribute to session: on each Contribute’s own body, and mirrored by the record chip on its own lane, so you can pause sharing straight from the capture surface. On by default.
Sketching in FL Studio Pattern mode? Leylines does not auto-detect Pattern vs Song mode, so pausing Contribute to session (or the lane’s record chip) is how you keep a sketch private until you want to share it.

MIDI lanes

Leylines shares MIDI the same way it shares audio, chunked on the same beat grid, newest take wins. Put a Contribute instance on a track running Leylines MIDI and, while your transport is rolling and sending is on, the notes you play are captured and shared. Re-takes replace rather than overdub. On the receiving side, a Playback instance set to a peer’s MIDI stream outputs that stream into its track, transport-following. While a MIDI stream is selected, the track’s own incoming MIDI is replaced by the remote stream. In the playlist, MIDI takes render as note-density clips instead of waveforms.

Render once to sync everything

Coverage is playback-driven, so the fast way to fill the whole timeline is your DAW’s normal offline render or bounce:

Render your project once with Leylines on the master bus, and the entire timeline syncs in one pass, at render speed. Under an offline render the engine blocks rather than drops when the renderer outruns the encoder, so a fast render doesn’t lose audio.

After the render your own coverage is full immediately; peers fill in over the normal sync, so stay in the session (Send on, sync not paused) until their copy of your lane finishes filling. Silent spans stay empty on purpose: the silence gate skips them at capture, and peers see those ranges as covered-and-silent, not missing. If your DAW renders only a time selection, only that span fills; render the full project length to fill everything.

6 · Playback & the playlist

The body of the editor is an FL-style arrangement view: who has played what, as actual audio you can see. A ruler across the top shows bar numbers and the host-transport playhead; lanes below show your lane on top, then one lane per collaborator in their own colour. Each collaborator’s colour is deterministic: the same person shows the same colour for everyone.

  • Clips are the coverage: contiguous synced chunks merge into one clip per take-region, drawn with real waveform peaks. Silent ranges render as empty space. MIDI takes render as note-density blocks.
  • Zoom and pan with the − / + control on the left ruler pad, the mouse wheel (anchored at the cursor, four zoom levels), the scrollbar, or shift-wheel.
  • Clip operations: click a clip for a floating toolbar: Audition (preview through the monitoring path), Restore (bring a previous take back, the undo for “newest take wins”), Pin (refuse to be superseded), and Delete. Drag a clip horizontally to nudge it on your machine only. Nothing is re-transferred and nobody else’s playlist moves.
Deleting is honest about scope: deleting your clip supersedes it with silence (restorable from history) and propagates; deleting a peer’s clip hides it locally only: their chunks stay cached and nothing changes on their side. Both are recoverable in two clicks from the lane header chip.

The lanes are the mixer

There is no separate mixer panel. Every lane has a volume slider with a dB readout, Mute (playback-only, a muted peer’s chunks keep arriving and stay cached), and Solo. Your own lane is real: it controls the dry passthrough of your signal in your own monitor mix. Muting or soloing yourself never touches what you share: capture happens before these controls, so peers always receive your full, clean signal, and their audio is never re-captured and echoed back.

The header chips are the master switches: Send (outbound gate, off is receive-only), Receive (inbound gate), and Freeze (holds peer playback in place while new chunks keep caching in the background). Clicking a peer lane’s header opens per-peer send / receive gates, a ±1 bar timeline-offset nudge, reconnect, and end-with-peer.

Per-stream lanes

A collaborator’s named Contribute streams appear as their own lanes beneath their master lane, in their colour. Remote audio streams become audible automatically when they arrive; up to eight streams per collaborator can be audible at once. Your own Contribute lanes appear too but are display-only: your DAW already plays those tracks directly, so Leylines never re-plays them.

7 · Chat & files

Chat lives in a small square bubble at the bottom-right. It never opens itself: an inbound message just ticks an unread badge. Chat is global across every Leylines instance in your DAW project, not just the Hub: a message sent from any instance reaches the remote peers and every other local instance. You never see your own message echoed back.

Pin a message to a bar with the diamond button on the input row: pinned messages show a “bar N” chip and appear as diamond markers on the playlist ruler. Chat messages are session-lifetime only: nothing is persisted, and the log is gone when the session closes.

File attachments

Send a sample, a stems zip, a preset, anything, straight through the session. Drag a file onto the chat popup or use the attach button. The file is chunked and travels over the same peer-to-peer pipe as audio; nothing touches a server. The cap is 256 MB per file, and sending a file requires send rights, exactly like sending audio.

  • Transfers ride the normal sync pipe, so they resume on their own across disconnects.
  • Get the file out by dragging the chip into your DAW or Explorer, or click it to save-as: the file is integrity-verified before it is ever exposed.
  • Attachments persist with the project: unlike chat messages, they live in the project’s chunk cache, so the chips are back when you reopen the project.

The annotation overlay

The pencil in the header toggles a draw layer over the playlist, for circling a section or sketching an arrangement idea. Strokes are anchored to bars, so they stick to the music across zoom and pan, and sync to everyone live. Like chat, annotations are session-lifetime only.

8 · Account & licensing

Leylines uses your Cybermoon account: no license files, no serial numbers.

  1. Open Settings → Account and enter your email.
  2. Click Send sign-in link. We email you an approval link; the plugin shows “Check your email” and waits (the link is good for 10 minutes).
  3. Open the email and click Approve sign-in in your browser. The page shows which computer is asking, so a link you didn’t request can’t sign anything in.
  4. Back in the plugin, sign-in completes by itself within a few seconds. No relaunch. Sending unlocks.

Once signed in, the Account tab shows your email, your plan, the machines your license is active on, Deactivate this machine (frees the seat for another computer), and Sign out. You can also manage your account in a browser at account.cybermoonaudio.com.

Working offline

The plugin quietly re-checks your sign-in when it can (at launch and about once a day). Each successful check is good for 14 days offline: tour, cabin, and plane sessions are all fine. If it can’t reach the internet for more than 14 days, sending pauses until it can check in again; receiving keeps working the whole time, and reconnecting restores sending automatically with no re-login.

What a lapse does: receiver mode

Signed out, subscription lapsed, or offline past the window, Leylines becomes a free receiver, never a brick. This is a soft degrade, not a hard lock.

  • Receiving stays free and clean, forever. Join sessions, hear every peer, use the full playlist, chat, and annotations. Listening is never blocked or degraded, and there is no watermark of any kind.
  • Sending stops. Your audio is no longer captured or shared, and nothing already cached leaks out. Sign in (or let the license check in again) and it returns instantly.
  • The free relay goes with the license. Relay credentials are issued against a live license, so a signed-out instance falls back to peer to peer and LAN. It comes back with the next successful check-in.

This means every collaborator can be on the free tier except the people actually sending audio.

Plans

TierWhat you get
Free ReceiverReceive-only: join any session, hear every peer, full coverage map, chat and annotations. No watermark, no sign-up.
Leylines PluginFull send and receive, perpetual.
Leylines CloudCloud sync and an always-on archival peer while subscribed, so your crew can pick up a session even when you are offline. Beta buyers will get a period of free Cloud benefits when Cloud launches; details closer to the time. Coming soon, not live yet.
During early access, licenses come directly from Cybermoon and in-app buy buttons are not live yet. Join the beta to get on the list, and see the Refund Policy: plugin purchases carry a 14-day refund window from the purchase date.

9 · Troubleshooting & FAQ

The plugin doesn’t appear in my DAW

Confirm the plugin sits in a scanned folder: on Windows C:\Program Files\Common Files\VST3 or the CLAP folder beside it (FL Studio in particular ignores per-user folders), on Linux ~/.vst3/ or ~/.clap/ (or the system /usr/lib equivalents), then force a rescan. 64-bit DAWs only.

Paste-link never completes (“finding a path…” forever)

ICE negotiation is failing, usually symmetric NAT (corporate firewalls, phone hotspots, some carrier-grade NAT ISPs) on one side. Leylines punches through ordinary home and office NAT with public STUN servers, but symmetric NAT needs a TURN relay, included free with every license (not part of the Cloud tier). Try a different network on either side, or the same Wi-Fi with LAN discovery, and make sure your firewall allows your DAW outbound UDP.

LAN discovery sees nothing

Both instances must have the Invite popover open (discovery only runs while it is on screen), on the same subnet. Guest Wi-Fi and “AP/client isolation” block multicast between devices, common on office and venue networks. If a VPN is running, its firewall or kill switch may block outbound UDP on port 45917; disconnecting the VPN or adding an allow-rule usually resolves it.

A peer’s lane has gaps

That is normal: it means they haven’t played those bars yet (capture is playback-driven). Ask them to play through the section, or to render their project once (render once to sync), which fills everything in one pass.

My collaborators stopped receiving my new takes

Check three switches: the header Send chip (same as Pause sync), the per-peer Send to <name> toggle in that peer’s lane popover, and your sign-in state. A signed-out or lapsed copy is in receiver mode, so you hear everything but sending is off until you sign in.

FL Studio: a peer’s MIDI part isn’t playing on my track. The Playback instance’s picker must have their MIDI stream selected (not an audio one), the track must host an instrument, and the MIDI port numbers must match: FL routes MIDI by port, so the receiving instrument’s input port must equal Leylines’s output port.

My chat or drawings disappeared when the session closed

By design: chat messages and annotations are session-lifetime only and are never persisted. Audio and file attachments are the durable artifacts; the cache keeps those, and attachment chips return when you reopen the project.

Where does Leylines keep its data?

Settings live at %APPDATA%\Cybermoon\Leylines.settings on Windows, or under ~/.config/Cybermoon/ on Linux, with the recent-sessions list alongside it. Cached audio chunks are disk-persisted per project under the cache root shown in Settings → Cache (changeable there), and Reset cache clears the current project’s chunks. Crash reports are written locally and never uploaded: there is no telemetry endpoint in this build.

VST® is a registered trademark of Steinberg Media Technologies GmbH, registered in Europe and other countries. AU (Audio Unit) is a trademark of Apple Inc. CLAP is an open plugin standard. All other product names, DAWs, and trademarks are the property of their respective owners and are used for identification only. © 2026 Cybermoon LLC · Leylines is async by design: just your masters and a session ID.