Glossary
Plain-language definitions of the terms used across the helipod docs.
Short definitions of the recurring terms in these docs, in alphabetical order. Each entry links to the page that covers the concept properly.
Action
A function that runs outside the database transaction, so it can call fetch, read the clock, and
use randomness. Actions have no direct database handle; they read and write through
ctx.runQuery and ctx.runMutation. See Actions.
Component
A packaged backend feature (scheduler, workflows, auth, triggers, notifications) that you compose
into a project in helipod.config.ts. Each component brings its own tables, functions, and
background drivers. See Components.
DLR (Differential Log-Tail Reactivity)
helipod's strategy for keeping subscriptions cheap: instead of always re-running a subscribed query from scratch and re-sending the whole result, the engine diffs the tail of the MVCC log and pushes only what changed. See Reactivity internals.
Document
One record in a table, like a row in SQL. A document is a plain JSON-style object plus two system
fields: _id and _creationTime. See Schema and tables.
Epoch
A generation number a writer takes each time it acquires the lease. Any commit stamped with an older epoch is rejected, which is how a node that lost the writer role is stopped from corrupting state. See Scaling.
Fan-out
Used in two senses. Commit fan-out is the engine notifying every subscription whose
read set a committed write touches (see
Reactivity). Step fan-out is a workflow running several steps
in parallel with Promise.all and waiting for all of them (see
Workflows).
Fence / fencing
Blocking a stale writer from committing after it has lost the writer role, usually by checking its epoch against the current one at commit time. Fencing is what makes failover safe. See Scaling.
Frontier
The timestamp up to which a client session (or a node) has observed committed writes. helipod guarantees your session's frontier covers your own commits, so you never read your own write as stale. See Reactivity.
Group commit
Batching several concurrent commits into one physical database write, so they share a single fsync. It raises write throughput without changing any correctness guarantee. See Postgres.
Idempotent
Safe to apply more than once with the same end result. Anywhere delivery is at-least-once (a trigger redelivering a batch, an outbox resending a mutation), the handler being idempotent is what keeps duplicates harmless.
Index
An ordered lookup structure you declare on a table in schema.ts, which queries use to read a
range of documents efficiently instead of scanning everything. Index ranges are also the
granularity at which reads are recorded for reactivity. See
Schema and tables.
Lease
A time-limited claim on a role, recorded in the database and renewed by heartbeat. In a fleet, the writer role is a lease: if the holder dies and stops renewing, another node takes it over. See Scaling.
MVCC log
The append-only format helipod stores data in: a write never overwrites a document in place, it appends a new version with a timestamp. That history is what makes consistent snapshots, diffing, and triggers possible. See Storage internals.
Mutation
A function that writes to the database. Mutations are the only writers, and each one runs as a single serializable transaction: all of its writes land together or not at all. See Mutations.
OCC (optimistic concurrency control)
Running a transaction without taking locks, then checking at commit whether a concurrent commit changed anything it read. If so, the transaction retries; if not, it commits. "Optimistic" because conflicts are assumed rare. See Transactions.
Optimistic update
A client-side technique for instant UI: when you call a mutation, a local guess at its effect is applied to your queries immediately, then replaced by the server's real result when the commit lands. See Optimistic updates.
Outbox (the Receipted Outbox)
A durable client-side queue of mutations that survives going offline and reloading the page. On reconnect it drains in order, and server-side receipts make sure a resent mutation is never executed twice. See Offline sync.
Query
A read-only, deterministic function. Because it cannot write or call non-deterministic APIs, the engine can record exactly what it read and re-run it safely whenever that data changes. See Queries.
Reactive query / subscription
A query a client subscribes to over the WebSocket. The server pushes a fresh result whenever a committed write overlaps what the query read; the client never polls. This is the heart of helipod. See Reactivity.
Read set / write set
The read set is the set of index ranges a query touched while running; the write set is what a mutation changed. A subscription re-runs only when a commit's write set intersects its read set. See Reactivity.
Seam
A deliberately narrow interface where one implementation can be swapped for another: the storage adapter, the blob store, an email provider. Seams are how the engine stays ignorant of which database or cloud it runs on. See System design.
Shard / shard key
A shard is a slice of your data with its own single writer, so write capacity grows by adding shards rather than by weakening consistency. The shard key is the schema field that decides which shard a document lives on. See Scaling.
Single-writer
The invariant that exactly one process commits writes at a time (per shard). It is what lets helipod give serializable transactions without distributed coordination on every commit. See Transactions.
.helipod/
Local working data, most importantly the SQLite database file when you run helipod dev. It is
created automatically and belongs in .gitignore. Not to be confused with helipod/, which holds
the backend functions you write and commit.
Syscall boundary
The interface between your function code and the engine. Every ctx.db call crosses it as plain
serializable data, which keeps functions deterministic and ready to run inside a sandboxed isolate.
See Execution internals.
Tier
A deployment shape; the same app code runs at every tier.
- Tier 0: one process, embedded SQLite. The default, and what
helipod devruns. - Tier 1: one process, external Postgres.
- Tier 2: a distributed fleet with sharded writers and a shared Postgres store.
- Tier 3: the object-storage substrate: nodes coordinate through object storage, no shared database at all.
See Scaling.
Transactor
The part of the engine that runs mutations: a single-writer loop that executes a mutation, checks it for OCC conflicts, and commits it. See Transactions.
UDF (user-defined function)
Any function you write in helipod/: a query, mutation, action, or httpAction. The docs mostly
say "function"; internals pages say UDF. See
Execution internals.