0xPeerHold

The error is on one screen. The answer is on another.

pastebridge is a local shared clipboard, two lanes, between two machines you own on the same network. Paste terminal output on one and read it on the other. Send a command back and copy it with one tap. It runs from a single binary for Linux, macOS or Windows, writes nothing down, and makes no outbound requests — there is no relay and no cloud in the middle.

pastebridge icon

pastebridge

Run it Try it below Free to download and use. Nothing to sign up for.

Try it here

Two devices, one feed, both running in this page. Switch sharing on, join from the phone with the PIN it shows you, then paste something into either lane and watch it land on the other side. Nothing you type is stored or sent anywhere — open the network tab and watch.

pastebridge two panes, one page · no network calls
laptop running the binary · both lanes side by side
pastebridge connected
Only this machine can see the feed.
Log paste output here
Ctrl or Cmd + Enter

Pasting terminal output frequently carries more than you intended: API tokens, connection strings, internal hostnames, file paths, environment variables and session identifiers all appear in ordinary error messages. Whatever you paste becomes visible to every device currently paired, and stays in memory until it is cleared or the process stops.

Commands one per entry
Ctrl or Cmd + Enter

The command lane exists so that text can be copied out of it and pasted into a terminal. That is its purpose, and it is also its risk. Nothing inspects, parses, validates or reviews what appears there, and the absence of any warning is not an assurance. Read every command before you run it, however routine the habit becomes. A command suggested by a language model is an untrusted stranger's advice that happens to be well phrased.

© 2026 0xPeerHold LLC About Safety notes Privacy License Imprint
phone nothing installed · narrow, so the lanes become tabs
pastebridge not connected

Both panes are the same page, so the "connection" here is a function call rather than TLS on your LAN. The behavior is the real behavior: sharing off means no listener, pairing takes a six-digit PIN and locks after ten wrong guesses, switching sharing off ends the session, a leading $ is stripped from a pasted command, and clearing a lane clears it everywhere at once.

The loop it's for Four steps, and the third one is why the tool exists.

Something breaks on a machine you can't comfortably read on

A Pi on a shelf. A server over SSH from a phone. A VM whose console doesn't do clipboard. A laptop across the room mid-install. The output you need is right there and completely stuck there, and re-typing an error into your phone to search it is how the evening goes.

You paste the output into the log lane

psql: error: connection to server at "db01" failed:
FATAL: remaining connection slots are reserved…

It appears on the other device immediately, in full, selectable, with a copy button. Long blocks are clipped to a readable height with a control to open them out, because a thousand-line stack trace shouldn't cost you the rest of the page.

You work out the answer wherever it's convenient

Search it, read the docs, ask a colleague, paste it into a language model. pastebridge has no opinion about this step and no connection to any of it. It is a clipboard, not a service.

The command comes back, and copies with one tap

$ psql -h db01 -U postgres -c "select…"  →  psql -h db01 -U postgres -c "select…"

One command per entry, each with its own copy button, so you're not selecting text out of a wall on a touchscreen. A leading $ or # gets stripped, because the thing you copied out of a tutorial usually has one and you don't want it.

Read this before you use it Not buried in a FAQ, because it's the thing most likely to hurt you.

The command lane is an execution vector pointed at you

The command lane exists so text can be copied out of it and pasted into a terminal. That is its purpose, and it is also its risk. Nothing inspects, parses, validates, or reviews what appears there — text arrives exactly as whoever is at the other end typed it, and the application has no opinion about whether a command is reasonable.

The workflow is designed to make copying quick, which means it is equally quick to copy something you didn't intend to. Read every command before you run it, however routine the habit gets.

Pairing grants read and write, not read

Anyone holding the address and the PIN can read everything in both lanes and write into either of them. Write access matters more than it sounds: putting text into the command lane means putting text in front of someone who is in the habit of copying it into a shell. Share the PIN only with a device you control.

A suggestion from a language model is an unreviewed stranger's advice

Routing an error into a model and a suggested command back is the obvious use of this tool, and we built it knowing that. pastebridge has no connection to any model, sends it nothing, and reviews nothing that comes back. Two things follow.

A model can be confidently wrong, and a suggested command may be destructive, inapplicable to your system, or simply mistaken. And because the text you paste in becomes part of what the model reads, content inside your own logs can steer what it suggests — log output is not always something you wrote.

Terminal output routinely carries more than you meant to send

API tokens, connection strings, internal hostnames, file paths, environment variables and session identifiers all turn up in ordinary error messages. Whatever you paste becomes visible to every paired device and stays in memory until you clear it or stop the process. Look at what you're pasting.

This is a debugging convenience, not a hardened channel

It is not built to withstand a determined adversary on your network, it does not authenticate the device at the other end beyond six digits, and it makes no claim to protect the content of what you paste. The certificate is self-signed: it defeats passive listening and it does not defeat someone already positioned to intercept and modify traffic between your two devices. Use it on a network you have reason to trust, and don't use it as a channel for material that would cause harm if read by someone else on that network.

Who this is for

Anyone with a headless box

A Pi, a NAS, a home server, a VM with an awkward console. Run it there with -headless and read its output on whatever device is in your hand.

Phone-as-second-screen debugging

The laptop is full of terminals and the phone is free. Errors go one way, commands come back the other, and neither of them goes through a chat app that keeps a copy.

People who paste errors into models

The model lives on the device with the comfortable keyboard. The broken thing doesn't. This closes the gap without either of them talking to each other directly.

Pairs sitting in the same room

Two laptops, one feed, no screen share and no "can you send me that in Slack". Both ends can write to both lanes.

Anywhere a copy would outlive the moment

Chat apps, email drafts and paste sites all keep what you put in them. This holds the last few hundred entries in memory and forgets all of it when the process stops.

What it doesn't do Listed as features, because that's what they are.

  • No account, no sign-in, no email address
  • No outbound requests, ever — no update check either
  • No database, no log file, no history, no cache
  • No telemetry, crash reporting, or analytics
  • No relay server — the two devices talk directly
  • No execution, on either machine, at any point
  • No subscription, no paid tier, no upsell
  • No copy of your paste anywhere after the process stops

What it keeps Short section. There isn't much.

Your content: nothing, anywhere

pastebridge writes no file for anything you paste. There is no database, no log file, no history and no cache. Entries are held in memory only, capped at the most recent 500 across both lanes, and every one of them is gone when the process stops. Clearing a lane clears it on every paired device at once.

The one file it does write: a certificate

~/.pastebridge/share-cert.pem
~/.pastebridge/share-key.pem

A TLS certificate and its key, so a device you've already paired doesn't have to accept a new certificate every time you restart. It contains no part of your content. It's regenerated when your machine's addresses change, because a certificate missing the address you typed gets rejected outright rather than warned about.

How to check that

sudo tcpdump -i any host not 127.0.0.1
ls -la ~/.pastebridge/

Watch the traffic while you use it and you'll see two devices on your own network and nothing leaving it. Look in the directory and you'll find two PEM files and no third one. pastebridge is proprietary and you can't read its source, so these are the checks worth running — and both of them test the claims that actually matter.

Run it One file, Go standard library only, no dependencies.

Run the binary and it opens your browser at http://127.0.0.1:8787 with the app and a sharing switch. Flip the switch and a second listener starts on your network over HTTPS, on port 8788. The other device opens that address, accepts the certificate warning once, enters the PIN on your screen, and joins the same feed.

Linux, macOS, Windows three binaries

tar -xzf pastebridge-linux-v1_1.tar.gz && chmod +x pastebridge-linux-v1_1 && ./pastebridge-linux-v1_1

Linux and Windows are x86-64, macOS is Apple silicon. Windows runs without a console window behind the browser; macOS is unsigned, so Gatekeeper asks the first time. Hashes for all three are below.

On a headless box a server

./pastebridge-linux-v1_1 -headless

No browser, sharing already on. Read the PIN off the terminal and join from whatever you're holding. It builds for arm as well, so a Pi works, but we don't publish that binary — ask if you want one.

Start shared, with a PIN you choose optional

./pastebridge -share -pin 123456

Without -pin a new six-digit PIN is generated each run, which is the better default. A fixed PIN is a convenience with an obvious cost.

Don't leave it running and it won't

./pastebridge -exit-on-idle 10m

Quits once the last browser has been gone that long. Worth setting: a forgotten process is a listener on your network with a live PIN. Quit from the header or Ctrl-C otherwise.

Move the ports if 8787 is taken

./pastebridge -port 9000 -share-port 9001

PORT, SHARE_PORT and PIN work as environment variables too.

Downloads and checksums

Free to download and use, and free to pass on unmodified. License, Privacy, Safety notes and Imprint panels are inside the app, offline.

Downloads One archive per platform, each with its own SHA-256 file. Check it before you unpack it.

Each platform ships as one compressed archive with the binary inside it. Check it before you unpack it.

pastebridge-linux-v1_1.tar.gz 6.0 MB Linux · x86-64 Archiveac0ec7b52ca22f52dec4f1c04c24c0107a46759d99e417f62599e0401ab1dac1 Sums filepastebridge-linux-v1_1.tar.gz.sha256 Binary insidepastebridge-linux-v1_1ca90ddcc2d0fa93ff1a3818c495a629a58d3f27dc49db1312d841375e8f3268c
pastebridge-mac-v1_1.tar.gz 5.7 MB macOS · Apple silicon Archive6217cf5176f45756f9e19d80345d2cd39428cc02d87e2beaa1ac77d7d3c5f6d7 Sums filepastebridge-mac-v1_1.tar.gz.sha256 Binary insidepastebridge-mac-v1_178f2aa8c91dc5c07e6445b3d80227ce0480e4f8b5a657442ba5d8dcc06d14d23
pastebridge-v1_1.zip 6.1 MB Windows · x86-64 Archivef332bd2b496026a23917362d1496d06061dfa687a3a59b5268e85bec9b1d2a61 Sums filepastebridge-v1_1.zip.sha256 Binary insidepastebridge-v1_1.exe3b78788183448e4e241e63b0c766317a70ce6b34ab1444874587e4a8097acf45

Linux curl, check, unpack

# download the archive and its sums file curl -LO https://0xpeerhold.com/builds/pastebridge/pastebridge-linux-v1_1.tar.gz curl -LO https://0xpeerhold.com/builds/pastebridge/pastebridge-linux-v1_1.tar.gz.sha256 # check it, then unpack and run sha256sum -c pastebridge-linux-v1_1.tar.gz.sha256 tar -xzf pastebridge-linux-v1_1.tar.gz chmod +x pastebridge-linux-v1_1 && ./pastebridge-linux-v1_1

sha256sum -c reads the sums file, hashes the archive next to it and prints OK or FAILED. One line, because there is one file in it. If it fails, delete the download and fetch it again rather than unpacking it.

macOS curl, check, unpack

# download the archive and its sums file curl -LO https://0xpeerhold.com/builds/pastebridge/pastebridge-mac-v1_1.tar.gz curl -LO https://0xpeerhold.com/builds/pastebridge/pastebridge-mac-v1_1.tar.gz.sha256 # check it, then unpack and run shasum -a 256 -c pastebridge-mac-v1_1.tar.gz.sha256 tar -xzf pastebridge-mac-v1_1.tar.gz chmod +x pastebridge-mac-v1_1 && ./pastebridge-mac-v1_1

macOS ships shasum rather than sha256sum; -a 256 picks the same algorithm and -c checks the file the same way. The binary is unsigned, so Gatekeeper will ask the first time — right-click and choose Open, or run xattr -d com.apple.quarantine pastebridge-mac-v1_1.

Windows curl, check, unpack

# PowerShell — download the archive and its sums file curl.exe -LO https://0xpeerhold.com/builds/pastebridge/pastebridge-v1_1.zip curl.exe -LO https://0xpeerhold.com/builds/pastebridge/pastebridge-v1_1.zip.sha256 # check it, then unpack $want = (Get-Content pastebridge-v1_1.zip.sha256).Split(' ')[0] $got = (Get-FileHash pastebridge-v1_1.zip -Algorithm SHA256).Hash.ToLower() if ($got -eq $want) { 'OK' } else { 'FAILED' } Expand-Archive pastebridge-v1_1.zip -DestinationPath .

curl.exe is built into Windows 10 and later, as is Get-FileHash, so there is nothing to install. The comparison prints OK or FAILED the same way sha256sum -c does. certutil -hashfile pastebridge-v1_1.zip SHA256 works too if you would rather read the hash yourself and compare it against the row above.

Check what you unpacked the binary itself

sha256sum pastebridge-linux-v1_1 # macOS: shasum -a 256 pastebridge-mac-v1_1 # Windows: certutil -hashfile pastebridge-v1_1.exe SHA256

The archive hash covers the download. This one covers the file you will actually run, which is the one that matters if the archive was unpacked somewhere else or passed to you on a stick. Compare it with the Binary inside line in the table above; it should match character for character.

What a matching hash tells you is that the file arrived intact and is the same file we hashed. It does not tell you what the file does, and it cannot: a hash published on the same site as the download is only worth as much as the site. It catches a corrupted transfer or a tampered mirror. It is not an audit, and pastebridge is proprietary, so there is no source to audit against. The checks in the section above are the ones that test behavior.

Questions we'd ask too

Does it run the commands for me?
No, and it never will. pastebridge moves text between two browsers. Nothing you paste, receive, or copy is executed by the application at any point, on either machine. You are the execution step, in your own terminal, under your own judgment. That is a design decision, not a missing feature — a shared clipboard that could also run things would be a remote shell with a friendly name.
Does it work over the internet?
No. Both devices have to be on the same local network. There is no relay, no rendezvous server and no hole punching, because all three of those mean running infrastructure that sees your traffic. If you need it across networks, put both ends on the same VPN or tailnet and it works the same way.
Why does my phone warn me about the certificate?
Because the certificate is generated by your own machine and signed by nothing else, which is the only way to get TLS on a local address without involving a certificate authority. Accept it once and the origin counts as secure from then on, which is also what makes one-tap copy work on the phone. What the warning is telling you is true: the certificate proves no identity. It encrypts the traffic and it does not tell you who is at the other end.
What happens to what I pasted?
It sits in memory on the machine running the binary and in the browsers currently attached, until you clear the lane or the process stops. There is no file, no database and no log. Clearing a lane clears it everywhere at once. Stopping the binary loses all of it, which is the intended behavior rather than an accident.
Can I use it with more than two devices?
Yes — any device that reaches the address and enters the PIN joins the same feed, and there is no limit built in. Bear in mind that every one of them can read both lanes and write to both lanes. The tool is designed around two devices you own, and the risk of a third increases faster than its usefulness.
Why not just use a chat app or a paste site?
Because both keep a copy, on somebody else's machine, of the error message you didn't read carefully before sending. Terminal output is full of things you didn't mean to publish. This holds it in memory on hardware you own and forgets it when you close the lid.
Is it open source?
No. It is proprietary software, free to download and use on any number of devices you own, and free to pass on unmodified and complete. You can't read or modify the source. We would rather say that plainly than let a page full of privacy claims imply an audit route that doesn't exist — the two checks in the section above are the ones that actually test what matters here.

Support the work

pastebridge is free to download and use, with no paid tier planned. Donations cover build machines, signing, and maintenance hours.

If something here saved you an afternoon, buy us a coffee. Bitcoin goes straight to a wallet we hold, with no processor in the middle taking a cut or a name. Or a clear bug report to [email protected] is worth more than most donations and costs you less.