Google Sheets,
as your backend.
GSAB gives you a database-like interface over Google Sheets — schemas, validation, encryption and async CRUD. Sign in once; no Google Cloud setup required.
A spreadsheet that behaves like a database.
Everything you'd reach for in an ORM, mapped onto a surface you already know how to read, share and audit.
Sign in once
Browser sign-in with the minimal drive.file scope — no Cloud project, no JSON keys to wrangle.
gsab auth login--fullservice accountTyped schemas
Fields, types, validation rules, primary keys and uniqueness — enforced on every write.
SchemaFieldFieldTypeAsync CRUD
The verbs you expect, plus idempotent upsert on a primary key.
insert()read()update()upsert()Field encryption
Flag a field as encrypted and GSAB seals it with Fernet before it ever reaches the sheet.
Field(encrypted=True)Terminal-native CLI
Manage auth and data straight from your shell — scriptable by design.
gsab auth logingsab auth statusgsab versionAgent-native
Installable skills + an MCP server let any agent — Claude, Codex, Cursor — use your sheet.
MCPskillswatch()From install to first row.
Install it, sign in, define a schema. That's the whole ceremony.
- 01
Install
pip install gsab— one dependency-light package. - 02
Sign in
gsab auth loginopens your browser. GSAB only touches the sheets it creates. - 03
Define & write
Declare a typed schema and start inserting — validation included.
# pip install gsab · gsab auth login
import asyncio
from gsab import SheetConnection, Schema, Field, FieldType, SheetManager
schema = Schema("users", [
Field("id", FieldType.INTEGER, required=True, unique=True),
Field("email", FieldType.STRING, required=True),
Field("secret", FieldType.STRING, encrypted=True),
])
async def main():
db = SheetManager(SheetConnection(), schema, encryption_key=KEY)
await db.create_sheet("My App DB")
await db.insert({"id": 101, "email": "ada@calc.org", "secret": "hunter2"})
print(await db.read({"id": 101}))
asyncio.run(main())Your data, charted live.
Real, interactive charts — the data was written to a Google Sheet with GSAB, read back with to_dataframe(), and plotted with Plotly. No database, just a sheet.
Two ways in.
Pick the path that fits. The easy one needs nothing from Google Cloud; the DIY one hands you the keys.
Just sign in
One browser sign-in with the minimal drive.file scope — no Cloud project, no consent-screen wall. GSAB manages the sheets it creates for you.
Bring your own
Reach your existing sheets or wire up your own credentials.
--fullfor access to all your sheets--client-secretsfor your own OAuth app- gcloud ADC & service accounts, auto-detected
Built in the open.
What ships in 0.10.0 today, and what's coming next.
Available now
- Friction-free auth (drive.file) + CLI
- Schemas, validation & field encryption
- Async CRUD with rich filters
- upsert() + enforced primary keys
- Type-correct server-side query() — Google Visualization
- Reactive watch() — live reads (Experimental)
- One-call public sharing (reader/commenter/writer)
- MCP server — use your sheets from any AI agent
- Access control (AccessPolicy) + security CI
- Access-control TUI (gsab tui) — manage access, watch live activity
- pandas bridge + native in-sheet charts
- LLM-friendly errors · installable agent skills
- JavaScript client — gsab-js on npm: browser reads, React hook, Node CRUD (early)
Coming next
- In-browser Google sign-in for the JS client
- Rate-aware batching
- Improved / pipe-friendly CLI
- One-click hosted sign-in
Your next backend is one sheet away.
Prototype, ship a side project, or back a small app — without standing up a database.