The key moments of building Woodstar, drawn from the prompt ledger — the story, where the ledger is the log. Each milestone links to the working session it happened in; a milestone's date is the date of its session.
"Could we make an app that did everything Twitter did before it was taken over?" — on the Eleven Messenger model. Petnames and hashcash stamps arrive in the same half-hour of conversation: the infrastructure should be invisible, and strangers should cost something.
read the session →A short return visit: digging out the pitch, and asking straight whether Woodstar actually works on the Eleven model before committing to the build.
read the session →"Write the plan to PLAN.md" at ten to eleven at night; the design doc and a working implementation ordered for the morning. By midnight the core, the relay, media, search, notifications and a web client exist, with cross-language crypto vectors keeping the two stacks honest.
read the session →The client sheds its build step: hand-written ES modules, vendored readable crypto, the whole app embedded in the relay binary. Deploying Woodstar becomes copying Go binaries somewhere.
read the session →"We NEVER show nerdspeak in the default userflow. Nobody should have to think about user tokens, identity, crypto, hex, instances. Someone signs up for Woodstar, everything just works." Written once, enforced everywhere since.
read the session →One t4g.nano in Ireland, Route 53, wildcard TLS, dev and prod stacks on the same box — and the canary loop begins: iterate on dev, promote the same tree to prod.
read the session →Sign in with a passkey; sign up is a link. "Remember Twitter before all that. Mastodon too nerdy? Bluesky too … weird? Try Woodstar. Refreshingly familiar, fundamentally different."
read the session →The repo moves to GitHub, and the rule lands: worktree, PR, iterate on the PR, squash-merge to main — with the full test battery on every pull request.
read the session →This site: carbon, contributors, prompts, roadmap and milestones go public at status.woodstar.app, and the /end-session ritual starts keeping them current.
read the session →Real people on the real instance: the first members beyond the founder, and the first outside bug report — "when I click follow, it turns into a text input, is that expected?" — answered the same day with one-click follows, user menus, and mute, block and report that the instance never gets to read.
read the session →The design for running your own instance lands, and the first slice with it: a personal Woodstar that syncs through a shared meeting point, so a machine that sleeps loses nothing — the network holds your public words until you're back.
read the session →Every database now streams its every change off the box as it happens, and releases become deliberate public cuts from a repo anyone can watch. The prompt says why plainly: "We lost data on keymail because we didn't have that." Lesson learned for good.
read the session →The app stops assembling in front of you. A cold load stays hidden until names, avatars and icons are really there, then appears whole — just a quiet pulse of the hummingbird if it takes longer than half a second. Underneath: the client's first framework (VanJS, vendored, still no build step), and feeds that update in place — a new post slots in without moving what you're reading.
read the session →Built overnight, with no Mac in the building: the whole of Woodstar — posts, sealed messages, sign-in, feeds — rewritten in Swift and proven against the exact same test bytes the web app and the server answer to. 143 tests green by morning. The screens come next; the hard part now speaks three languages.
read the session →The iPhone app becomes real. The overnight engine gets its screens, an icon, and the same one-tap sign-in the website uses — and the first face it recognises is Paul's. By evening the timeline had been through a whole design conversation: denser, flatter, threads that read as conversations. All of it steered from screenshots of the phone in hand.
read the session →Open a post and a quiet line beside the time says via Woodstar web — the thing Twitter used to do, back. The name rides inside the signed post itself, so it can't be edited out later, and the new Apps page is a standing invitation: anyone who builds a Woodstar app gets their name on their posts from day one, and a listing is one note away. The door to other people's apps is open on purpose.
read the session →Fifteen years of tweets, imported with their original dates — and today the app learned to carry them. Hand the instance your Twitter archive and it does the rest in the background; open your profile and scroll back through all of it, year after year, loading as you go. The old posts read like they were always here, because now they are.
read the session →Flip one switch and you're on Bluesky as you.woodstar.app — a web address that really opens your profile, made and signed in your own browser, yours even if Woodstar ever vanished. Posts appear there; replies and likes find their way home. Woodstar used to borrow its way in through someone else's bridge; overnight it grew its own, and a stranger's like made the first round trip the same morning.
read the session →Every post now chooses who can reply: everyone, people who follow you, or only the people you mention. The idea arrived as "degrees of separation" — but who follows you is sealed even from your own instance, so instead of arithmetic on a graph nobody can see, you get three honest choices, a door that stays shut to gate-crashers, and a quiet line explaining why. Asked for at breakfast, live by dinner.
read the session →You can carry someone else's post inside your own now, with your words above it — and it stays a post, so it can be edited, faved, replied to and searched like anything else you write. It travels, too: quote someone and the quote arrives on Mastodon and Bluesky as a quote, not as a stray link. Quote someone here and they'll know, in the same place their replies and faves land.
read the session →Set your account private and what you post is sealed to the people you approve — not hidden behind a setting a server could choose to ignore, but encrypted, so the machines carrying it carry nothing readable. Woodstar never told anyone who follows you, so a private account starts with nobody approved: the people already there ask, and the ones you plainly already know — in your address book, or who you follow — come back without you lifting a finger. The places that cannot keep a secret say so instead of half-trying: the archive importer stops, and the Mastodon and Bluesky mirrors switch off.
read the session →