惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园_首页
雷峰网
雷峰网
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
WordPress大学
WordPress大学
腾讯CDC
T
Tailwind CSS Blog
A
About on SuperTechFans
H
Hackread – Cybersecurity News, Data Breaches, AI and More
The GitHub Blog
The GitHub Blog
T
The Blog of Author Tim Ferriss
G
Google Developers Blog
The Cloudflare Blog
D
DataBreaches.Net
Recent Announcements
Recent Announcements
Engineering at Meta
Engineering at Meta
B
Blog
博客园 - 聂微东
阮一峰的网络日志
阮一峰的网络日志
月光博客
月光博客
博客园 - 司徒正美
MongoDB | Blog
MongoDB | Blog
Google DeepMind News
Google DeepMind News
Apple Machine Learning Research
Apple Machine Learning Research

Hacker News: Show HN

PurrrrrFocus: Pomodoro Timer App - App Store Workflow Engine — Multi-Step Orchestration for Bun RapidPhoto: Pro Photo Editor App - App Store GitHub - DheerG/swarms: Achieve extraordinary results with claude code across a variety of tasks SPICE simulation → oscilloscope → verification with Claude Code — Lucas Gerads Show HN: VCoding – A 5 MB native Windows IDE with no dynamic dependencies Show HN: LLMs don't hallucinate because they're bad at math, it's the format GitHub - Agent-FM/agentfm-core: AgentFM is a peer-to-peer network that turns everyday computers into a decentralized AI supercomputer. AgentFM lets you run massive AI workloads directly across a global mesh of idle CPUs and GPUs. Show HN: Tracking Top US Science Olympiad Alumni over Last 25 Years GitHub - Potarix/agent-hub: One place to talk to all your agents Show HN: Runtime security for AI agents(injection,tool abuse, data exfiltration) GitHub - dubeyKartikay/lazyspotify: Terminal Spotify client for macOS and Linux GitHub - the-banana-tool/king-louie: Easy to use GUI Personal AI Assistant. Win/Linux/Mac. Show HN I made my vacation rental bookable by AI agents–no Airbnb, 0% commission GitHub - basteez/jsf-autoreload: maven plugin to enable hot reload on jsf projects uvm32/hosts/host-gdbstub at main · ringtailsoftware/uvm32 GitHub - labsai/EDDI: Config-driven engine that turns JSON into production-grade AI agents. Multi-agent orchestration, 12+ LLM providers, MCP/A2A protocols, RAG, persistent memory, and enterprise compliance (EU AI Act, GDPR, HIPAA). Built on Quarkus. GitHub - glitchnsec/fortyone-oss: AI Executive Assistant Platform Quickstart | Alien GitHub - muxshed/shed: One stream in, or many. Every destination, simultaneously. No cloud middleman, no per-channel fees, no limits. GitHub - ocrbase-hq/ocrbase: 📄 PDF/IMG ->.MD/JSON Document OCR API for PaddleOCR and GLMOCR. Self-hostable. GitHub - impactjo/home-memory: MCP server that lets your AI assistant remember everything about your home. GitHub - Sets88/dbcls: DbCls is a powerful terminal database client that supports various databases GitHub - neptun2000/heor-agent-mcp GitHub - SeanFDZ/macmind: Single-layer transformer in HyperTalk for the classic Macintosh RollQuation: Math Puzzles - Apps on Google Play GitHub - dropbox/witchcraft Show HN: Agent-cache – Multi-tier LLM/tool/session caching for Valkey and Redis GitHub - opentalon/opentalon: OpenTalon is an open-source platform built from the ground up in Go as a robust alternative to OpenClaw LinkedIn™ 职位抓取工具 - Chrome 应用商店
GitHub - jsell-rh/lockwire: Encrypted Terminal Screen Sha...
blinkerfluid · 2026-05-21 · via Hacker News: Show HN

Share your terminal. End-to-end encrypted. Zero config.

$ lw share
  ┏╸lockwire
  ┃
  ┃  code  thunder-eagle-river-moon-stone-fire
  ┃  link  https://lockwire.online/join#thunder-eagle-river-moon-stone-fire
  ┗╸

$

Someone else, anywhere:

$ lw join thunder-eagle-river-moon-stone-fire

Or just open the link in a browser. That's it.

What it does

You run lw share. It gives you a six-word code. Anyone with that code can watch your terminal in real time, either from their own terminal or from a browser. They can't type anything or control your session. When you're done, type lw stop or just close your shell.

The relay server never sees your terminal content. It forwards encrypted blobs and has no access to keys. All crypto happens on your machine and the viewer's machine.

Install

Download the binary for your platform from releases and put it in your PATH.

# Linux (amd64)
curl -Lo lw https://github.com/jsell-rh/lockwire/releases/latest/download/lw-linux-amd64
chmod +x lw
sudo mv lw /usr/local/bin/

Note

By default, lockwire routes traffic through the public relay at lockwire.online. The relay is a blind pipe. It forwards encrypted blobs and never has access to your terminal content or keys. That said, the relay operator (me) can see connection metadata (IP addresses, session timing, number of viewers). If that matters to you, self-host the relay.

Usage

Share your terminal:

lw share

Watch someone's terminal (CLI):

lw join thunder-eagle-river-moon-stone-fire

Watch in a browser:

Open the link printed by lw share. No install needed.

See who's watching:

lw viewers

Kick someone:

lw revoke <viewer-id>

Stop sharing:

lw stop

Self-hosting the relay

Run your own relay with the container image:

docker run -p 8443:8443 ghcr.io/jsell-rh/lockwire

Then point clients at it:

lw share --relay wss://your-relay:8443 --relay-insecure
lw join <code> --relay wss://your-relay:8443 --relay-insecure

Use --relay-insecure with self-signed certs. For production, provide your own certs:

lw relay --tls-cert cert.pem --tls-key key.pem

Behind a reverse proxy (Cloudflare, nginx, etc.)

The relay rate-limits per client IP. Behind a reverse proxy, all connections appear to come from the proxy's IP unless you tell the relay which proxies to trust.

Use --trusted-proxy with the CIDR range of your proxy. The relay will read the real client IP from CF-Connecting-IP or X-Forwarded-For headers, but only when the TCP connection comes from a trusted source. Untrusted sources cannot spoof their IP.

Cloudflare Tunnel (sidecar) -- the recommended setup. Run cloudflared as a sidecar in the same pod so traffic arrives from localhost:

lw relay --self-signed --trusted-proxy 127.0.0.0/8

Cloudflare Tunnel (separate machine/pod) -- use the subnet or the specific IP of the machine running cloudflared:

lw relay --self-signed --trusted-proxy 10.0.0.0/8

nginx on the same host:

lw relay --tls-cert cert.pem --tls-key key.pem --trusted-proxy 127.0.0.0/8

Warning

If --trusted-proxy doesn't match the actual source IP of your proxy, forwarded headers are ignored and all clients rate-limit as one IP. Use --log-level debug to see the resolved client IP for each connection and verify it's working.

Debugging

Use --log-level debug to log every connection with the resolved client IP:

lw relay --self-signed --trusted-proxy 10.0.0.0/8 --log-level debug

The default level is info, which only logs rate limit events and errors.

How it works

  1. lw share generates a random six-word code and derives a session ID from it using Argon2id
  2. The sharer and viewer perform a SPAKE2 handshake through the relay, proving they both know the code without revealing it
  3. The handshake produces a shared secret used to derive AES-256-GCM encryption keys
  4. Terminal output is encrypted and streamed through the relay. The relay forwards opaque blobs.
  5. Keys rotate every 60 seconds. Revoking a viewer triggers an immediate key rotation so they lose access.

The relay is a blind pipe. It never touches key material, never decrypts content, and never stores anything to disk.

Security

  • AES-256-GCM encryption, SPAKE2 key agreement, HKDF key derivation
  • All keys are held in memory only and zeroed on exit
  • Password prompts (sudo, ssh) are safe because programs disable terminal echo for those
  • The relay cannot read your terminal content
  • No telemetry, no logs, no accounts

Building from source

make setup   # install git hooks
make web     # build web viewer
make build   # build the lw binary
make test    # run tests with race detector

Requires Go 1.25+ and Node.js 22+.