This page is the short contract for what Ablo Sync guarantees at the state boundary.Documentation Index
Fetch the complete documentation index at: https://docs.abloatai.com/llms.txt
Use this file to discover all available pages before exploring further.
Confirmed Writes
wait: 'confirmed' resolves only after the server accepts the write and returns
the authoritative sync cursor.
commits.create(...) return a receipt with the commit status and sync cursor.
Optimistic Local State
Schema model writes update local state optimistically. This keeps UI and agent tools responsive while the commit is sent to the server.- With
wait: 'queued'or omitted, the promise resolves after the local mutation is queued. - With
wait: 'confirmed', the promise waits for server confirmation. - If the server rejects the write, the SDK rolls back the optimistic change and raises a typed error.
Stale-Write Protection
Usesnapshot(...) and readAt when a write depends on state the agent already
read:
onStale: 'reject' prevents lost updates. If the target changed after the
snapshot, the server rejects the write instead of applying stale reasoning.
Advanced policies exist for controlled product flows:
rejectfails the write when state moved.forceapplies the write without stale protection.flagaccepts the write and marks it for product review.mergeis reserved for server-defined merge behavior.
Intent Coordination
Intents are live coordination signals. They are not database locks. When another human or agent is active on the same target, the caller chooses the behavior:ifBusy: 'return'returns active intents immediately.ifBusy: 'wait'waits until the matching intent clears.ifBusy: 'fail'throwsAbloBusyErrorwith the active intents attached.
busyPollInterval if they choose ifBusy: 'wait'; Ablo
does not hide a hard-coded polling loop. busyTimeout is only a maximum wait.
Agent Runs
agent.run(...) is the advanced schema-less run envelope for workers that cannot
import the app schema. It returns one of three statuses:
done— the handler returned successfully.failed— the handler threw or the commit failed.cancelled— the run signal aborted.
ablo.<model>.update(...). The lower-level run envelope exists for
platform runtimes that need capability and task management without app code.
Capabilities and Tasks
Capabilities scope what an agent is allowed to do. Tasks group a run for audit and cost attribution. Most users do not create either one manually. The SDK and hosted API manage the common case. Manual capability and task APIs are for platform builders, custom agent runtimes, and internal infrastructure. Uselease as a crash cleanup window. A successful agent run still closes when
the handler returns, fails, or is cancelled.
Audit Trail
Accepted writes can be attributed to:- the actor that wrote,
- the human or system the actor worked on behalf of,
- the capability that scoped the write,
- the task or run that caused it,
- the resource, operation, and state cursor.
Persistence
Ablo defaults to volatile local persistence. That keeps the SDK focused on coordination and audit instead of silently becoming a browser storage product. Opt into durable browser cache and offline queueing when you need it:Storage Boundary
Ablo does not need a customer database URL. When your own database is canonical, Ablo calls a signed Data Source endpoint and records the coordination result for receipts, realtime fanout, and audit. See Connect Your Database.Batches
Most apps should useablo.<model>.create/update/delete. Use
commits.create(...) only when you need a low-level batch or a schema-less
runtime.
Each operation in the commit carries its own target, data, stale policy, and
idempotency context. The server validates authorization, stale state, active
intent conflicts, and idempotency before accepting the commit.