Skip to content
AbloAblo
Esc
navigateopen⌘Jpreview
On this page

v0.38.0

Branch-isolated development

Ablo branches replace the former shared Sandbox mode. Every project has a protected Production root and can have multiple isolated development, preview, test, or long-lived branches. Credentials are bound to immutable branch identities, so changing a slug or request parameter cannot redirect a write.

npx ablo dev now discovers the current Git or CI branch, ensures the matching Ablo branch, mints an expiring branch credential, writes it to the gitignored local environment, pushes the schema, and watches for changes. Use npx ablo dev --no-watch --branch <name> for a one-shot agent or CI setup.

The CLI also provides ablo branch list, create, ensure, status, check, credential, and delete. The public HTTP and OpenAPI contracts expose the same lifecycle for other languages and deployment systems.

This release removes the CLI mode switch and the dashboard Sandbox surface. Production remains the protected root; a development credential cannot select another branch or gain production authority.

Source adapters and PostgreSQL footprint helpers now select immutable branches. If you construct FootprintPlane or SourceRequestContext, replace environment, mode, and sandboxId with branchId.

Temporal and Inngest integration guides

New runnable examples and documentation show how Temporal and Inngest workflows use Ablo without introducing another authority path. Temporal activities and Inngest steps create the Ablo client, perform authoritative reads, acquire claims for long-running work, and submit idempotent writes through the same transaction API as every other caller.

The integrations keep each product in its proper role: Temporal and Inngest own durable execution, scheduling, retries, and workflow history; Ablo owns shared-data authority, claims, conflicts, idempotency, settlement, and ordered observation. Workflow code does not open WebSockets or hold live client state.

Database adapter foundation, starting with PostgreSQL

Customer-database adapters now declare their database, ORM binding, and observation strategy as separate axes. The existing Prisma, Drizzle, and Kysely integrations are accurately identified as PostgreSQL bindings using either a transactional outbox or PostgreSQL WAL.

All built-in adapters are constructed through one validating factory and the shared conformance suite checks that the three axes are present. Impossible capability combinations fail during adapter construction instead of silently advertising guarantees the database path cannot provide.

PostgreSQL is the first database profile on this axis. The contract leaves room for additional databases without pretending their transaction, observation, and change-capture guarantees are interchangeable with PostgreSQL.

Generated language SDK foundation

The HTTP API is now explicitly treated as Ablo’s language-neutral product boundary. Its OpenAPI artifact follows the current Ablo version and every operation has a stable, unique name suitable for deterministic Python and Go generation.

The OpenAPI generator and drift check are restored as repository and CI gates. Future language clients will generate their transport, wire models, and error decoding from this contract, retaining handwritten code only for thin language-idiomatic resource and claim façades.

The artifact now names shared claim, receipt, cursor, page, and error schemas; references the canonical error envelope from every operation; publishes typed pagination parameters and explicit union discriminators; and normalizes Zod’s JSON Schema output to the portable subset accepted by the Python and Go generator candidates. CI also validates the rendered OpenAPI 3.1 document with an independent, pinned Redocly CLI.

AI SDK tools over the transaction API

@abloatai/ablo/ai-sdk now exposes small tool adapters for authoritative reads, idempotent creates, concurrency-safe updates, and claimed deletes. These helpers use the caller’s existing typed Ablo model resource; they do not add an agent runtime or a second transport.

The public surface follows the model verbs directly: readTool, createTool, updateTool, and deleteTool. AI SDK metadata and approval policy pass through to each tool, destructive tools require approval by default, and cancellation stops queued claim acquisition.

This deliberately replaces the previously published coordinatedTool naming: use updateTool, UpdateToolModel, UpdateToolOptions, UpdateToolResult, UpdateStrategy, and the status result field. The former coordinatedTool, CoordinatedModel, CoordinatedToolOptions, CoordinatedWriteResult, and CoordinationStrategy exports are removed rather than retained as legacy aliases.

Queued tool writes now use Ablo’s server-owned FIFO claim queue rather than recreating coordination with client-side polling.

Internal job dispatch, concrete worker tools, prompts, sandboxes, and model selection remain application concerns and are not part of the public Ablo agent surface.

Was this page helpful?