Blog

What's new in Pithy.

Releases, notes, and the occasional deep dive. Mostly releases.

An isometric illustration of a large square block with a raised plus on its top face
2026-06-12

What one command writes, and what it refuses to guess

`pithy add` installs a package, writes bindings across every environment, runs migrations — and refuses, loudly, in the two places where guessing would be worse than stopping.

An isometric illustration of an espresso machine with a group head, a portafilter handle and a pressure dial
2026-06-12

The CLI is a product surface

Citty, picocolors and clack — chosen for cold start, size and how they fail — plus why every command owes `--json` to an agent driving it.

An isometric illustration of a warning triangle standing upright
2026-06-11

The error that knows who is reading it

One error type, one schema, and a wire shape with nowhere to put the things a caller must never see.

An isometric illustration of a cobbler's iron last with a worn boot fitted over it
2026-06-10

Typed KV, and metadata that repairs itself

Keys built from a schema, values validated both ways, and a list that quietly repairs the metadata the Cloudflare dashboard throws away.

An isometric illustration of a database — a tall stack of three wide cylindrical discs
2026-06-10

Fifty-seven round trips, or one

Migrations composed per capability and ordered once — and a driver change that took 78% of a test suite's wall time back.

An isometric illustration of a bench vice with its jaws open
2026-06-09

The toolchain, and customized lint rules

TypeScript 7, Bun, Turborepo, tsdown, Vitest and Biome — including what the losing options still do better. Then the part that surprised us: GritQL plugins enforcing rules a type system cannot.

An isometric illustration of a four-legged wooden stool with a round seat
2026-06-09

Four things you never have to solve on D1

Parameter budgets, transient faults, SQLite's missing types and pagination that holds still under writes. Solved once in core, so every capability inherits them.

An isometric illustration of a sewing machine with a needle arm, a spool pin and a flat bed
2026-06-09

A seam, never a sibling

One rule about what a capability may import, and what it buys — including why a management client gets its own request variable rather than borrowing the user's.