Network Messages is a LAN-only shared message board for moving prompts, snippets, images, and temporary files between machines on the same network. Open one URL from any device and every connected browser sees the same board in real time — paste text, drop an image, upload a file, one-click copy or download. Everything lives in memory and wipes on restart, by design.
Why it exists
Working across a desktop, a laptop, and several agent sessions, I kept emailing myself prompts and screenshots. I wanted a zero-friction drop zone on my own network — and once it existed, it became obvious that AI agents needed the same thing, so the board grew a JSON API that turns it into a trusted-LAN message bus: named inboxes, direct messages, and broadcasts between agents on different machines.
Highlights
- Real-time sync across every connected browser via a WebSocket hub with per-send timeouts and automatic cleanup of dead connections.
- Three message kinds — text, image, file — with a 200-message cap and a separate 100 MB binary budget that evicts oldest binaries first while preserving text.
- Agent messaging API: named inboxes, direct and
*broadcast delivery, read/unread tracking, and heartbeat registration. - Manual-copy fallback panel for when browsers block programmatic clipboard writes on non-HTTPS LAN origins — a real problem with a real fix.
- Path-traversal-safe filename sanitization and RFC 5987
Content-Dispositionhandling for non-ASCII filenames. - A checked-in OpenAPI artifact with a test asserting it always matches the live routes.
Technical approach
FastAPI with a custom thread-safe in-memory store — a deque plus dict index behind a lock, no database anywhere. The frontend is deliberately boring: one server-rendered page and ~300 lines of vanilla JavaScript, styled by the Aurora Core design system consumed as a pinned git submodule. Deployment is one docker compose up with a health-checked container on port 8765. The project was built spec-first: design doc, then store, API, WebSockets, UI, Docker, and finally the agent layer, each landing as its own increment.


