Bespoke is a platform for one-off apps you describe to an AI agent and run on your own hardware, at their own URLs, behind your own tailnet. It isn't a product you sign up for. It's a set of conventions strong enough that an agent can build the next app for you — and the whole point is that yours should be bespoke too.
The bet
Software that only one person will ever use has always been possible and almost never worth it. The build cost was too high for an audience of one. That changed. The right response isn't more apps — it's a framework with opinions strong enough that an agent can one-shot the next one.
So Bespoke is mostly conventions. One auth model: Tailscale identity at the edge, which means no login screen will ever exist here. One storage pattern: a SQLite file per app. One design system, one deploy command, and a documentation tree written for agents as much as for people. Every convention you accept is a decision your agent doesn't have to make — or get wrong.
What you inherit
An app is a manifest, a main.go, some handlers, and its migrations. Nothing else.
Everything below is already built, and your app opts in with a single call:
Live updates over SSE, a mobile-first component library, embedded migrations, and an LLM gateway your apps call without ever knowing which model answered — those come with the shell.
Make it yours
This repository is the versioned platform. Your apps, theme, deployment identity, and agent context live in a private instance repository that you create — so you can pull platform updates without ever pushing your life to a public remote.
macOS via Homebrew; Linux and WSL2 from the release archive or go install.
brew install --cask bketelsen/tap/bespoke
Scaffolds a private repository pinned to a platform release, with your module path, your theme file, and the agent skills copied in.
bespoke init ~/my-instance --module github.com/you/my-instance
Point your coding agent at the bundled skills and tell it what you want. It interviews you into a short spec, scaffolds the app, assigns a port, models the schema, and writes the handlers and views. Run everything locally with one command.
just new reading-list # then: "build me a reading list that…" just dev # platformd + every app, fake identity
One file owns your instance's look — design/theme.css. Change the colors,
radius, and density; the platform keeps the structural and mobile-first invariants.
Then generate the units, Caddy routes, and replication config, and deploy.
bespoke deploy --all
Worked examples
These are real apps built on the platform, published as their own Go modules. They exist to be read: each is a few hundred lines, and together they show every convention in use. Adopt one as-is, fork it into something that fits you, or just read how it handles intents and tools and then tell your agent to build the version you actually want.
bespoke add journal
BookmarksQuick-access saved links with titles and tagsbespoke add bookmarks
Personal WikiA reference wiki with tags, links, and semantic searchbespoke add personal-wiki
CalendarA private calendar for Google and iCloudbespoke add calendar
MailA local-first email client for Gmail and iCloudbespoke add mail
GH TrackerOpen PRs and issues across your GitHub projectsbespoke add gh-tracker
Print ProjectsA queue and history for personal 3D-print projectsbespoke add print-projects
Notes & TodoThe showcase pair in this repo, wired to each other's intentsin apps/
bespoke search wiki # what's out there bespoke add journal@v1.2.0 # pin it, write its manifest, recompile CSS