Ontario, CanadaSeptember 2026

Sean Behan

Full-stack developer · Linux

I build software that lives close to the metal and ships to the edge.

12 years of web applications, from database to frontend. I daily-drive NixOS, write Rust and TypeScript, and build everything in the open — a Wayland compositor, bots on Cloudflare Workers, and a pastebin on R2.

By the numbers
  • 12+years building software
  • 25technical posts
  • 300+GitHub stars
  • Rust+ TypeScript, Nix

Selected work

All repositories
Codebam Stream control room with one program feed and five relay destinations

Codebam Stream

Browser-first multistreaming in early access: OBS pushes one signal in over WHIP, your own watch page is the program output, and the same signal leaves again as RTMPS to YouTube, Twitch, X, Kick and Telegram. Cloudflare Workers, Durable Objects, D1 and LiveKit underneath, prepaid hours on top.

TypeScriptdurable-objectslivekitrtmps

Open the dashboard

Viewport

A Wayland compositor in Rust on Smithay whose entire shell — wallpaper, dock, window frames and titlebars — is a web page, composited zero-copy alongside native clients. Five interchangeable engine backends render that same page: WPE, WebKitGTK, Chromium, CEF and Servo.

Rustwaylandsmithaywpe-webkitSource

Telegram Bot for Cloudflare Workers

A lightweight, type-safe Telegram bot framework for Cloudflare Workers: handlers chain off the incoming Request, middleware runs before them, and one URL registers the webhook. 325 stars, 214 forks and 120 releases on npm.

TypeScriptcloudflaretelegramnpmSource

Tux Robot

The bot that grew out of the framework, rebuilt on grammY: one Cloudflare Worker for the conversation, Cloudflare AI for the answers, Tavily for web search and document retrieval, and a Svelte 5 web app in front of it all. Live at t.me/TuxRobot.

TypeScriptcloudflaretelegramgrammySource

Pastebin R2

A pastebin on Cloudflare Workers in TypeScript with Hono, storing objects in R2 behind a small REST API — create, update, list, info, delete — with syntax-highlighted and plain-text views, and pastes that expire on their own.

TypeScriptcloudflarer2honoSource

Latest writing

All 25 posts

USB Cable Testing on Linux

usbmon turns Wireshark into a cable tester, and finds retransmissions on cables that supposedly work.

Podman Quadlets

Quadlets describe a container as a systemd unit, so systemd owns the lifecycle instead of Podman.

Email bot

Cloudflare email routing plus Workers AI: an inbox that answers its own mail.