bespoke

module
v0.13.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 6, 2026 License: MIT

README

Bespoke

CI

Bespoke is a platform for software that exists for exactly one owner: a notes stream that talks back, a todo list that knows the week, or whatever comes next. Describe an app to an AI agent and run it on your own hardware, at its own URL, behind your tailnet, styled like everything else in your instance.

The bet is that LLMs changed the economics of one-person software, and 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 — no login screen will ever exist here), one storage pattern (SQLite file per app), one design system, one deploy command, and a docs tree written for agents as much as for me. In exchange, every app gets the expensive things for one line of code each: chat grounded in its own data, local voice in and out, a live card on the dashboard, and cross-app intents — highlight text in Notes and "Create Todo" just appears.

This public repository is the versioned platform plus two synthetic showcase apps, Notes and Todo. Personal apps, data, theme, and deployment configuration belong in a separate private instance repository. Steal the idea before you steal the code: the whole point is that yours should be bespoke too.

A thing nobody built: Bespoke turned out to be multi-user. Identity comes from the tailnet at the edge, and every app was born asking "whose data?" — so each tailnet user gets their own notes, todos, and AI brief at the same URLs, with zero application-specific identity code. No one wrote that feature. The conventions did. That's the entire thesis of this repo in one accident.

What it looks like

Ask the dashboard what matters — it reads every app and answers by name:

Or just tell it what to do. The task lands in the list behind the panel, live over SSE before the reply finishes settling:

Todo chat creating a task that appears live in the list

Start here

LLM Generated, Human Driven

95% of this code was written by Claude Fable. All of the specifications, plans, visions and ADRs were written by a human. Your trust level should match this, or this isn't the repo for you.

Directories

Path Synopsis
apps
builder command
builder: the app that builds new apps (ADR-0023, docs/design/builder-plane.md).
builder: the app that builds new apps (ADR-0023, docs/design/builder-plane.md).
builder/views
templ: version: v0.3.1020
templ: version: v0.3.1020
notes command
notes is a synthetic showcase app: an append-only stream whose selections can become todos through the platform intent chrome.
notes is a synthetic showcase app: an append-only stream whose selections can become todos through the platform intent chrome.
notes/views
templ: version: v0.3.1020
templ: version: v0.3.1020
todo command
todo: tasks with due dates, priorities, and one level of subtasks.
todo: tasks with due dates, priorities, and one level of subtasks.
todo/views
templ: version: v0.3.1020
templ: version: v0.3.1020
cmd
bespoke command
bespoke is the platform CLI (docs/specs/bespoke-cli.md): the only supported way to create, run, deploy, and operate apps.
bespoke is the platform CLI (docs/specs/bespoke-cli.md): the only supported way to create, run, deploy, and operate apps.
builder-runner command
builder-runner is the agent half of the builder plane (ADR-0023, docs/design/builder-plane.md).
builder-runner is the agent half of the builder plane (ADR-0023, docs/design/builder-plane.md).
internal
manifest
Package manifest loads app manifests (app.toml) per docs/specs/app-manifest.md.
Package manifest loads app manifests (app.toml) per docs/specs/app-manifest.md.
pkg
audio
Package audio is the only way apps use speech capabilities (docs/adr/0014-audio-service-transcription.md): a thin client for platformd's audio service on the internal plane.
Package audio is the only way apps use speech capabilities (docs/adr/0014-audio-service-transcription.md): a thin client for platformd's audio service on the internal plane.
auth
Package auth is the only way apps learn who is calling (docs/adr/0004-tailscale-identity-via-caddy.md).
Package auth is the only way apps learn who is calling (docs/adr/0004-tailscale-identity-via-caddy.md).
db
Package db opens an app's SQLite database per docs/adr/0007-sqlite-per-app-litestream.md: one file per app under the data directory, WAL mode, embedded migrations applied on open.
Package db opens an app's SQLite database per docs/adr/0007-sqlite-per-app-litestream.md: one file per app under the data directory, WAL mode, embedded migrations applied on open.
events
Package events publishes durable domain events and accesses the platformd notification service (ADR-0035).
Package events publishes durable domain events and accesses the platformd notification service (ADR-0035).
llm
Package llm is the only way apps run LLM inference (docs/adr/0009-copilot-sdk-llm-gateway.md): a thin, provider-neutral client for platformd's gateway.
Package llm is the only way apps run LLM inference (docs/adr/0009-copilot-sdk-llm-gateway.md): a thin, provider-neutral client for platformd's gateway.
ui
templ: version: v0.3.1020
templ: version: v0.3.1020
ui/components/icon
templui component icon - version: v1.12.1 installed by templui v1.12.1 📚 Documentation: https://templui.io/docs/components/icon
templui component icon - version: v1.12.1 installed by templui v1.12.1 📚 Documentation: https://templui.io/docs/components/icon
ui/utils
templui util templui.go - version: v1.12.1 installed by templui v1.12.1
templui util templui.go - version: v1.12.1 installed by templui v1.12.1
version
Package version reports which Bespoke release a process is running and whether a newer one has been published (ADR-0034).
Package version reports which Bespoke release a process is running and whether a newer one has been published (ADR-0034).
web
Package web: app-contract search endpoint (ADR-0028).
Package web: app-contract search endpoint (ADR-0028).
The audio service (ADR-0014): transcription on the internal listener, Lemonade-backed when BESPOKE_LEMONADE_URL is set, stub mode otherwise (models not yet installed on selfie — roadmap backlog).
The audio service (ADR-0014): transcription on the internal listener, Lemonade-backed when BESPOKE_LEMONADE_URL is set, stub mode otherwise (models not yet installed on selfie — roadmap backlog).
views
templ: version: v0.3.1020
templ: version: v0.3.1020

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL