pREST turns a Postgres database into a production-ready REST API—and, since v2.1, a read-only MCP endpoint for AI agents. Point it at your schema and you get CRUD, custom SQL routes, auth, and ACL without hand-writing a backend.
v2.2.0 is about making that surface easier to use day to day: an embedded Studio UI, custom queries that live in the database, and solid TimescaleDB coverage. Here’s what shipped and why it matters.
Table of Contents
Instant APIs, Now Easier to Explore
pREST Studio
The headline feature is pREST Studio—a self-hosted UI embedded in the prestd binary and served at /_studio/:
http://localhost:3000/_studio/
No separate frontend process. The Vite build is embedded with go:embed, so runtime still means one binary: REST, MCP, and Studio together.
Studio is a same-origin client of the APIs you already have:
- Overview — health, build metadata, and REST/MCP availability
- Data Explorer — browse databases, schemas, and tables; preview rows; copy URLs and
curl - REST Explorer — build GET requests with pREST query params and inspect responses
- MCP Explorer — list tools, generate forms from JSON Schema, invoke them, keep in-memory history
It’s on by default. Turn it off with PREST_STUDIO_ENABLED=false (then /_studio/ returns 404).
Studio does not invent a new auth model. It rides on existing JWT, ACL, and database permissions. Tokens stay in memory by default; generated commands redact credentials unless you ask otherwise.
This MVP is deliberately read-oriented: no SQL editor, mutations, or ACL UI yet. The goal was a fast way to see what your instance exposes—especially useful when you’re wiring MCP into Cursor or Claude.
Database-Backed Custom Queries
Custom queries used to mean SQL files on disk under queries.location. That still works and remains the default (queries.storage = "filesystem").
v2.2.0 adds an alternative: store scripts in a prest_queries table and manage them over HTTP.
[queries]
storage = "database"
register_enabled = true
restrict = true
migrate_on_startup = true
import_on_startup = true
With register_enabled = true (and auth configured), admins get a registry API at /_QUERIES/registry for CRUD on stored queries. You can migrate existing filesystem scripts on startup, enforce per-script ACL with queries.restrict, and keep execution on the familiar /_QUERIES/{location}/{script} paths.
For multi-instance or containerized setups, keeping query definitions next to the data—instead of baking .sql files into every image—is a meaningful ops win.
TimescaleDB Support
TimescaleDB has long been usable with pREST because it’s Postgres under the hood. v2.2.0 makes that relationship first-class: dedicated integration tests, Compose stacks, and docs for hypertables and time-series workloads.
If you’re exposing sensor readings, metrics, or event streams over REST (or MCP), you can rely on a tested path instead of “it probably works.” Docs live at docs.prestd.com/integrations/timescaledb.
Docs, Postgres 18, and Release Plumbing
A few supporting changes round out the release:
- A fully documented sample
prest.tomlso new users aren’t guessing which knobs matter - Docker Compose examples bumped to Postgres 18
- Dockerfile and GoReleaser updates so Studio assets land in published binaries and images
- Better coverage reporting for pull requests from forks
Getting v2.2.0
Binaries for Linux, macOS, Windows, and BSD are on the release page. Docker users can pull prest/prest:v2.2.0 (or latest once it tracks this tag).
Quick start is unchanged: point PREST_PG_URL (or pg.* / DATABASE_URL) at Postgres, start prestd, then hit:
GET /{database}/{schema}/{table}
Open /_studio/ to explore, or /_mcp if you’re connecting an AI client.
What I’d Try First
- Upgrade and open
/_studio/against a non-prod database—it’s the fastest way to feel the release. - If you already use custom SQL routes, try
queries.storage = "database"withimport_on_startupand see how registry + ACL fit your deploy model. - If you run Timescale, run through the integration guide and confirm hypertable reads behave as expected.
Full changelog and assets: github.com/prest/prest/releases/tag/v2.2.0. Docs: docs.prestd.com.