Technology1 min read

Gnomon. Git for Postgres data, built for agents

By · Published by Everything Blog

In short

The extension functions within standard database installations by enabling instantaneous branch creation without copying underlying datasets. Modifications remain strictly cordoned off within the caller's session until reconciled through type-aware three-way merges. Schema adjustments can be tested within branches, and changes can be gated behind SQL validation rules before reaching production. Furthermore, external operations like payment dispatching remain blocked on isolated branches until modifications successfully clear review.

Key points

  • Autonomous agents interact with isolated branches using standard connection strings while…: Autonomous agents interact with isolated branches using standard connection strings while the database blocks direct access to the main branch.
  • Full historical logging records every modifying agent, execution run, and stated rational…: Full historical logging records every modifying agent, execution run, and stated rationale to guarantee thorough auditing trails.
  • Database events and tracked table modifications can stream out to external architectures…: Database events and tracked table modifications can stream out to external architectures including Kafka, NATS, webhooks, or dbt snapshots.

Sources checked by our analysis pipeline: 1

Git for Postgres data, built for agents. Give an agent its own branch of your real database, as nothing more than a connection string. See every field it changed, merge it into main when it's right, and undo it if it wasn't.

Gnomon runs inside the Postgres you already have. One extension, no copies, no second database.

create extension gnomon;

select gnomon.track('orders'); -- history starts now, no backfill

select gnomon.create_branch('agent/refunds');

select gnomon.use('agent/refunds');

-- Every query from here on runs on the branch

update orders set status = 'refunded' where id = 4182;

select * from gnomon.diff('agent/refunds'); -- every row and field it changed

select gnomon.merge('agent/refunds'); -- three-way, type-aware, conflicts as rows

select gnomon.undo_merge(1); -- and back

- Documentation: https://gnomon.bitsinfra.com/

- Install:

create extension gnomon

on PostgreSQL 15-18, self-hosted or managed (RDS, Aurora, Supabase). See Installation. - New here? The tutorial takes ten minutes.

A branch reads everything from main and keeps only what it changes, so it opens instantly and copies nothing, however big your database is. Give one to every agent run, every pull request and every test.

Your…

Technology